CN105138678A - 一种地图瓦片数据的读取、分发方法及读取、分发系统 - Google Patents

一种地图瓦片数据的读取、分发方法及读取、分发系统 Download PDF

Info

Publication number
CN105138678A
CN105138678A CN201510577596.6A CN201510577596A CN105138678A CN 105138678 A CN105138678 A CN 105138678A CN 201510577596 A CN201510577596 A CN 201510577596A CN 105138678 A CN105138678 A CN 105138678A
Authority
CN
China
Prior art keywords
data
server node
tile data
target tile
reading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510577596.6A
Other languages
English (en)
Other versions
CN105138678B (zh
Inventor
程曦
史凤玲
袁红念
曹倩倩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Heroland Spatial Information Tech Co ltd
Original Assignee
Wuhan Yunkongjian Geography Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Yunkongjian Geography Information Technology Co Ltd filed Critical Wuhan Yunkongjian Geography Information Technology Co Ltd
Priority to CN201510577596.6A priority Critical patent/CN105138678B/zh
Publication of CN105138678A publication Critical patent/CN105138678A/zh
Application granted granted Critical
Publication of CN105138678B publication Critical patent/CN105138678B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Remote Sensing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种地图瓦片数据的读取、分发方法及系统,读取方法包括:建立虚拟服务网络,其中包括多个互连的服务器节点,当接收到数据读取请求时,先在当前节点缓存中查找,若查找不到,则通过构造的R树查找对应数据的节点位置,若在当前节点,则读取数据,并将数据存储于当前节点的缓存然后返回,若数据存在于其它节点,先在其它节点的缓存查找数据,若缓存不存在数据,再到节点上查找,将查到的数据写入该节点的缓存,并且将数据写入当前节点的缓存,然后返回。本发明通过建立虚拟服务网络,只要数据存储于虚拟服务网络中,就会被任意一个服务节点访问到;同时,只要数据被访问到,该数据就会缓存在虚拟服务网络的某些节点缓存中。

Description

一种地图瓦片数据的读取、分发方法及读取、分发系统
技术领域
本发明涉及地理数据处理技术领域,具体涉及一种地图瓦片数据的读取、分发方法及读取、分发系统。
背景技术
由于WebGIS是从服务器端读取地理数据,而每次读取的数据量有限,加上WebGIS需要支持多客户端读取地理数据,因此对于服务器端地理数据的获取,采用了使用瓦片数据的方法。而最常见的瓦片数据有256*256大小的jpg数据,png数据等栅格数据,以及相应大小的矢量瓦片数据。以栅格瓦片数据为例,常见的譬如ArcGIS的栅格瓦片数据,是以瓦片级别作为大的文件夹,行列号计算出来分级文件夹,最终存储的是256*256大小的jpg或者png数据的。在发布服务时,客户端是直接通过IIS或者Apache等Web服务器端软件,通过一定规则直接获取服务器端栅格瓦片数据文件的。这样的做法存在几个弊端:
1、由于使用IIS或者Apache直接读取小文件,服务器对于瓦片影像数据的管理存在困难。一个普通的机械硬盘能够达到最大的存储容量是4TB左右,即使采取磁盘阵列,硬盘柜等方式来扩大存储容量,能够得到的存储提升量也是有限的。若要提供全球影像服务,在提供的服务级别达到17级的时候需要的硬盘存储容量就需要达到240T,而显然对于大部分的单一存储来说,这个量显然是达不到的。因此,想要把所有的文件存储在同一个存储容器上,显然是不现实的。这样,就需要提供有分布式的文件系统来支撑这一需求。但是分布式的文件系统并不是操作系统原生的文件系统,采用这种文件系统需要服务器端另外的程序来实现。所以对于数据量稍微大一点的情况,直接读取小文件的方案基本无解。
2、这种方案对于不存在于服务器存储上的文件访问有性能上的缺失。特别是对于有大量瓦片文件缺失的情况下,客户端直接访问服务器端缺失的瓦片,会让服务器磁盘做一次文件是否存在的判断。而如果很多访问请求同时进行的话,对于磁盘IO也是个不小的负担。
3、如果要实现大量访问的负载均衡,应用这种方案则需要增加相同数据容量的服务器存储。有多少个出口服务,就需要实现多少份的冗余存储,由于第一条的原因,这种冗余存储复制的速度太慢,会严重拖慢数据更新的速度,导致服务质量下降。而数据的冗余存储,服务器数量的增加,也都带来了服务端成本的上升。
4、依赖于Web服务器端软件进行服务器切片发布,增加了操作的复杂程度,用户需要比较专业的服务器知识和GIS软件知识才能顺利进行操作。以ArcGISServer为例,对切片进行部署发布时需要进行一系列复杂操作,并且由于安全策略等问题经常会发生服务器无法访问的问题,这些问题比较影响工作效率,并且对服务发布人员的专业要求提高了。
发明内容
本发明所要解决的技术问题是提供一种地图瓦片数据的读取、分发方法及读取、分发系统,能够解决目前地图瓦片数据读取、分发的缺点和不足。
本发明解决上述技术问题的技术方案如下:
基于本发明的一个方面,提供了一种地图瓦片数据的读取方法,所述方法包括:
S11、建立虚拟服务网络,所述虚拟服务网络中包括多个服务器节点,其中,所述多个服务器节点之间通过预定通信协议互连;
S12、根据用户客户端发送的数据读取请求,在所述虚拟服务网络的当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据,若存在,则直接将对应的目标瓦片数据返回给用户客户端;若不存在,则执行步骤S13;
S13、通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点,若目标瓦片数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标瓦片数据,并将该目标瓦片数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标瓦片数据返回给用户客户端;若目标瓦片数据不在当前服务器节点上,则执行步骤S14;
S14、当前服务器节点将数据读取请求转发给存在目标瓦片数据的其它服务器节点,所述其它服务器节点在内存缓存中查找是否存在该目标瓦片数据,若存在,则将该目标瓦片数据发送给当前服务器节点,并存储于当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取目标瓦片数据返回给用户客户端;若不存在,则执行步骤S15;
S15、在所述其它服务器节点中查找对应的目标瓦片数据,并将查找到的目标瓦片数据存储于本服务器节点的内存缓存中,同时,将该目标瓦片数据发送给所述当前服务器节点,并写入当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取出目标瓦片数据返回给用户客户端。
基于本发明的另一个方面,提供了一种地图瓦片数据的分发方法,所述方法包括:
S21、接收用户客户端发送的数据读取请求,检测所述数据读取请求对应的目标瓦片数据类型;
S22a、若所述数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,则服务器节点直接将目标瓦片数据分发给对应的用户客户端;
S22b、若所述数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则服务器节点先将目标瓦片数据渲染后再分发给对应的用户客户端。
基于本发明的又一个方面,提供了一种地图瓦片数据的读取系统,所述系统包括:
第一查找模块,用于根据用户客户端发送的数据读取请求,在所述虚拟服务网络的当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据,若存在,则直接将对应的目标瓦片数据返回给用户客户端;若不存在,则驱动第二查找模块工作,其中,所述虚拟服务网络中包括多个服务器节点,所述多个服务器节点之间通过预定通信协议互连;
第二查找模块,用于通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点;
第一数据访问模块,用于若目标瓦片数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标瓦片数据,并将该目标瓦片数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标瓦片数据返回给用户客户端;若目标瓦片数据不在当前服务器节点上,则驱动请求转发模块工作;
请求转发模块,用于通过当前服务器节点将数据读取请求转发给存在目标瓦片数据的其它服务器节点;
第三查找模块,用于在所述其它服务器节点的内存缓存中查找是否存在该目标瓦片数据,若存在,则将该目标瓦片数据发送给当前服务器节点,并存储于当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取目标瓦片数据返回给用户客户端;若不存在,则驱动第二数据访问模块工作;
第二数据访问模块,用于访问所述其它服务器节点得到要查找的目标瓦片数据,并将查找到的目标瓦片数据存储于本服务器节点的内存缓存中,同时,将该目标瓦片数据发送给所述当前服务器节点,并写入当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取出目标瓦片数据返回给用户客户端。
基于本发明的再一个方面,提供了一种地图瓦片数据的分发系统,所述系统包括:
检测模块,用于接收用户客户端发送的数据读取请求,检测所述数据读取请求对应的目标瓦片数据类型;
第一下发模块,用于若所述数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,则直接将目标瓦片数据分发给对应的用户客户端;
第二下发模块,用于若所述数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则先在服务器节点上将目标瓦片数据渲染后再分发给对应的用户客户端。
本发明提供的一种地图瓦片数据的读取方法及读取系统,通过建立虚拟服务网络,只要数据存储于虚拟服务网络中,就会被任意一个服务节点访问到,多台服务器节点在内网中连接在一起,这多台服务器节点各自的服务能力等于这多台服务器节点的服务能力总和,增强了每一个服务器节点的服务能力;同时,只要数据在某一个服务器节点被访问到,那么一段时间内该数据就会缓存在虚拟服务网络的某些服务器节点的内存缓存中,当下次访问时,可直接从内存缓存中读取,加快了数据读取的速度。
另外,本发明提供的一种地图瓦片数据分发的方法及系统,当接收到用户客户端发送的数据读取请求后,检测需要请求的数据的类型,若是栅格地图瓦片数据,则服务器节点直接将数据下发给用户客户端,若为矢量地图瓦片数据,则先在服务器节点上渲染后再下发给用户客户端,这样充分利用了服务器多核性能上的优势,极大地加快了出图渲染的速度。
附图说明
图1为本发明实施例一的一种地图瓦片数据的读取方法流程图;
图2为本发明实施例二的一种地图瓦片数据的读取系统示意图;
图3为本发明实施例三的一种地图瓦片数据的分发方法流程图;
图4为本发明实施例四的一种地图瓦片数据的分发系统示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例一、一种地图瓦片数据的读取方法。以下结合图1对本实施例提供的读取方法进行详细说明。
S11、建立虚拟服务网络,所述虚拟服务网络中包括多个服务器节点,其中,所述多个服务器节点之间通过预定通信协议互连。
具体的,本实施例中的虚拟服务网络包括多台服务器,每一台服务器均为虚拟服务网络的一个服务器节点,这多台服务器在内网中是连接在一起的,通过预定通信协议互连,这样,这多台服务器的各自的服务能力就等于多台服务器所拥有的服务能力的总和,扩大了每一个服务器的服务能力。当在互相连接的内网中开启一个新的服务器节点时,该服务器节点会根据配置文件,检查自身的物理存储器中数据的存储情况。一般来说,机械硬盘存储的存储容量是有限的,对于数据量比较大的情况,可能拥有多个相互独立的机械硬盘存储器或者是RAID设备或者是固态硬盘。而该服务器节点会检查这种物理存储在不同存储设备中的情况,并将检查结果记录下来。检查数据完毕后,该服务器节点会扫描其他连接在一起的服务器节点,通过虚拟服务器网络预定的的通信协议把自身加入到虚拟服务网络中。这种虚拟服务网络实际上是各个服务器节点的集合。当只存在一个服务器节点时,虚拟服务网络中只有一个服务节点,当其他的服务器节点开启后,这些节点会自动加入到虚拟服务网络中以提供服务。新加入的服务器节点会通知虚拟服务网络中其他服务器节点自身拥有的数据情况,并且把其他服务器节点拥有的数据情况下载到自身中来。这样,每当一个新的服务器节点加入,这个虚拟服务网络中维护的数据存储情况表就会增加一个新的成员。如果这些服务器节点的数据分布没有什么规律的话,就只能在虚拟服务网络中的每一个服务器节点中构造一颗R树,通过R树来查找数据所在的服务器节点位置。
其中,这个虚拟服务网络中的每两个服务器节点之间都是建立了两条TCP长连接,用于互相发送信息。相对外网提供的HTTP等服务协议来说,内网的TCP长连接响应速度更快,几乎是在1毫秒之内就能完成一次网络数据的传递。用户客户端在访问任意一个服务器节点时,对数据是从别的服务器节点传递过来还是直接从当前服务器节点返回过来的,并不会感觉到有什么区别。在本实施例的设计中,对于服务器节点之间的网络连接采用千兆或者是万兆网络;而对于外网端口来说是采用百兆或者是千兆网络。总的来说内网的连接带宽最好是要高于外网连接带宽,这样对于整个虚拟服务网络的吞吐量会有一定的提升,不至于让网络传输成为整个虚拟服务网络的瓶颈。而内网的连接带宽高一些,并不会增加特别高的硬件成本,因为只需要设备和网线的支持就可以了。而外网带宽高了之后,会增加更高的服务成本,服务器最高的成本就在于网络带宽了。
另外,在本实施例的设计中,对于虚拟服务网络数据的存储,通常建议的做法是每个服务器节点对于低级别的数据是完全存储,对于高级别的数据是采用均匀网格分割存储的方式,即对于高级别的数据,将其均匀网格分割后,平均存储于各服务器节点上。
S12、根据用户客户端发送的数据读取请求,在所述虚拟服务网络的当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据,若存在,则直接将对应的目标瓦片数据返回给用户客户端;若不存在,则执行步骤S3。
具体的,用户客户端需要访问数据时,从虚拟服务网络中随机选取一个服务器节点,并向选择的该服务器节点(为描述方便,以下称为当前服务器节点)发送数据读取请求。该当前服务器节点接收到用户客户端发送的数据读取请求,首先在其内存缓存中查找是否存在对应的目标瓦片数据,若内存缓存中存在目标瓦片数据,则直接从内存缓存中读取目标瓦片数据返回给用户客户端。对于内存缓存的存储,采取的策略为:所述每一个服务器节点的内存缓存采用M*N个键-值对容器存储地图瓦片数据,其中,M为地图瓦片数据级别,N为每一个级别键-值对容器的数量,键为容器唯一标识,值为对应的地图瓦片数据。在本实施例中,采用32×65536个键-值对容器(std::map或者std::hashmap等),存储键和值。前面的32表示的是从第0级到第31级的级别号,虽然目前可能只有24个级别最多,但是也预留了后面的几个级别;65536表示的是每一级别容器的数量。为了节省内存,这里的65536个容器存储的是容器指针,需要在需要使用的时候动态创建。
这些键-值对容器在多线程环境中需要做同步操作,则需要对容器的操作时加锁。这里有两个办法,第一个办法是使用临界区(linux下使用互斥锁),对容器进行读写操作时直接使用临界区加锁,那么容器在读写时的多线程环境里就能保证是线程安全的。第二个办法是使用一个flag标志,这个标志标识什么时候可以对容器读,什么时候可以对容器写。标志需要另外的函数来控制,这个又会消耗一些等待时间并且编程复杂。但是它的好处就是可以比较自由地控制键-值对容器的读写。该容器可以并行地读取,但不能并行地写入,并且读取和写入也不能同时进行,所以使用标志的话,可以一段时间让多个线程来并行读取,一段时间让单个线程来写入。在本实施例中,采用第一种办法,即使用临界区的办法。这种办法虽然禁止了单个键-值对容器的多线程同时读取和写入,但好处就是实现更容易,并且无需切换状态,响应速度会更快。而在有新的对象通过网络传输或者是硬盘读取需要插入容器时,第二种办法需要频繁切换状态,会降低响应速度。只有多个线程同时读取已经存在于容器中的内容,并且没有新的对象需要插入时,第二种办法才会提高性能,因为是多个线程同时对容器进行读取。
而采用第一种办法,禁止了单个键-值对的多线程同时读取和写入,当有多个请求同时进来并且需要同时读取的时候怎么办呢?如何提高读取性能呢?此时,本实施例设计的32×65536个容器就奏效了。由于用户对于地图瓦片的获取大部分是几乎同时进来的请求,而这些请求有一个特点就是请求的逻辑位置是相邻的。那么,只要同时进来的请求,实际上存在于不同的容器中不就可以了?并且在新的对象需要插入容器时,由于这些逻辑位置相邻的对象实际上是存在于不同的容器中的,它们其实是可以同时写入的。这样,根据数据的特点,把请求划分到不同的容器中,每个容器再使用不同的临界区锁或者互斥锁来保持同步,实际上就和多线程同时操作没有什么区别了。其运行性能能够得到大大的提升。
这65536个容器是这样分布的,以地图瓦片坐标的X值对256取余,得到一个256以内的数;再以地图瓦片坐标的Y值对256取余,得到另一个256以内的数。这两个单字节的数组合到一起,就形成一个双字节的数,这个双字节的数的取值范围是0~65535,分别对应65536个不同的容器。在X坐标和Y坐标最大值大于256的地图瓦片级别上,这65536个不同的容器实际上是对应着一个本发明的文件系统中的文件的。当有新的请求进来或者是需要插入新的对象时,它们之间是互不影响的。而绝大多数情况都是这样,不会发生冲突。当连续请求或者是插入新的对象的请求进来,只要它们的X坐标或者是Y坐标的连续范围不超过256,就不会发生冲突,可以并行进行。而如果对于不同的用户同时访问,比如有的人访问了第10级(0,0),有人访问第10级(256,256)此时它们是对应了同一个容器,这个时候会发生访问碰撞。但由于临界区或者互斥锁的存在,这种访问或者插入是分别进行的,不会影响线程安全。并且,同一时刻发生碰撞的概率比较小,几乎可以忽略不计,因此采用本发明的这一方法可以大幅提高访问性能(多核能够被有效利用起来。)
这些容器里存储的KEY,则是取X坐标的前3个字节和Y坐标的前3个字节做混合。这里采用什么办法都可以,只要保证最终获得的值是唯一并且可排序就可以了。本发明采用的办法是直接拼合成六个字节的数值。VALUE则是具体的瓦片数据。在读取的瓦片数据较少时,平均到每个容器内只有一到两个瓦片文件,因此查找起来会非常迅速,几乎是O(1)的时间就能找到数据。
对于内存使用量的控制,比如是通过参数配置或者是用户设置对服务端软件能够使用的总的内存量进行限制,本实施例是构造了一个链表,用于最近使用的地图瓦片块的控制。当一个地图瓦片块被添加进入链表时,链表会将其链接至链表头部。当一个地图瓦片块被使用时(比如被查找到,需要返回给用户时),链表会更新该地图瓦片块的位置,并将其链接到链表头部。而每次在地图瓦片块数据被添加进入链表时,计数变量会增加当期添加的数据的大小,若计数变量大于了限制的阈值,则链表会删除链接至链表尾部的数据,同时删除该数据在键-值容器中的存储引用,并且技术变量会减去当前删除的数据的大小,同时删除该链接。但在做这个操作之前,需要确保删除的数据内存没有被外部引用到,即它是安全没有人使用的。在用户量很小,同时设置的总内存量比较大的情况下,这种情况发生的概率比较小,但是用户量提升上来后,同时设置的总内存使用量不够大的情况下,这种情况还是有概率发生。所以,这里要考虑内存安全问题,有两个办法解决这个问题:第一是考虑在使用完毕数据之后再删除数据,即如果需要删除某个数据,将它加入到删除列表中去。增加引用计数的功能,在数据项里加上引用计数,只有使用完毕之后,调用服务器端方法减少引用计数,直到引用计数为零时这块内存才能被删除。但这样做有弊端,就是编程会比较复杂,引用计数对于不熟悉的用户来说,比较难以使用。而且还是不够稳定,一旦使用的线程发生崩溃或者是异常,则引用计数不会减少,那么这一块内存就永远不会被删除掉。当这样不被删除的内存累积多了的时候,达到一定数量,会发现因为软件的使用内存限制,就装不下什么数据了。但是这样做的话也有优点,就是使用同一块内存,不用复制拷贝,速度也会比较快。第二个办法是每次使用数据的时候就拷贝一份一样的,在使用完毕这份拷贝之后再删除这份拷贝。这样在删除内存链接表内容时,由于几步操作都可以加锁进行,所以不会存在线程安全问题,可以在删除内存链接表内容之后才能获取容器对象。这时候获取的话就会发现并没有这个数据,需要再重新读取。这样做的缺点是需要拷贝一份数据,会消耗拷贝的时间和空间。而如果外部使用的线程崩溃,会造成内存泄漏(该删除的内存没有删除掉)。在使用高峰期时,可能一块内存会被拷贝很多次,造成一些多余内存使用量。优点就是编程相对容易,出错几率小,容错性强。
用户客户端发送的数据读取请求中至少携带有地图瓦片数据的X坐标、Y坐标和该地图瓦片数据对应级别,当前服务器节点根据数据读取请求中携带的地图瓦片数据对应级别以及X坐标和Y坐标,找到对应的键-值对容器,从键值对容器中读取结果数据。如果当前服务器节点的内存缓存中不存在目标瓦片数据,则执行步骤S13。
S13、通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点,若目标瓦片数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标瓦片数据,并将该目标瓦片数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标瓦片数据返回给用户客户端;若目标瓦片数据不在当前服务器节点上,则执行步骤S4。
具体的,若在当前服务器节点的内存缓存中不存在目标瓦片数据,当前服务器节点会通过预先构造的R树在当前服务器节点中维护的数据存储情况表中查找数据读取请求对应的目标瓦片数据所在的服务器节点位置,若查找到目标瓦片数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标瓦片数据,并将该目标瓦片数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标瓦片数据返回给用户客户端;若目标瓦片数据不在当前服务器节点上,则执行S14。
S14、当前服务器节点将数据读取请求转发给存在目标瓦片数据的其它服务器节点,所述其它服务器节点在内存缓存中查找是否存在该目标瓦片数据,若存在,则将该目标瓦片数据发送给当前服务器节点,并存储于当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取目标瓦片数据返回给用户客户端;若不存在,则执行步骤S15。
S15、在所述其它服务器节点中查找对应的目标瓦片数据,并将查找到的目标瓦片数据存储于本服务器节点的内存缓存中,同时,将该目标瓦片数据发送给所述当前服务器节点,并写入当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取出目标瓦片数据返回给用户客户端。
需要说明的,在本实施例提供的地图瓦片数据读取的方法中,在虚拟服务网络中的服务器节点初始化时,会启动三组线程。第一组线程为n个缓存读取线程,其中,n是服务器端配置文件设定的值。这n个缓存读取线程,专门用于读取服务器节点内存中缓存的瓦片数据。具体为:当用户客户端发送数据读取请求到选择的服务器节点时,当前服务器节点会将数据读取请求写入当前服务器节点的缓存读取队列中,当数据读取请求进入缓存读取队列之后,先前开启的n个缓存读取线程之一就会从缓存读取队列中取出需要读取的数据请求。取出数据请求后,根据数据请求的级别,X,Y坐标取出对应的键-值容器,从键-值容器中取出符合数据请求的数据。若取出的数据不为空,则将请求的结果数据指针赋值给请求对象;若取出的数据为空,或者是请求的数据没有存储在容器内,则记录此状态,则将空指针赋值给请求对象。然后构造一个结果处理对象,将请求的结果赋值进去,将该对象送入结果处理队列中。此时前面等待结果处理队列的用户请求的线程会获取到用户请求的处理结果。如果处理结果有数据返回,则返回此数据,完成一个用户的请求线程;如果处理结果返回的数据为空,则证明请求的数据确实为空,返回一个空指针,完成此线程;如果处理结果是请求的数据没有在容器内找到,则证明这个数据还未被查找过。
第二组线程,是有m个文件读取线程,若数据读取请求对应的目标瓦片数据不存在于当前服务器节点的内存缓存中,则通过当前服务器节点上的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点位置,若目标瓦片数据在当前服务器节点上,则将数据读取请求写入当前服务器节点的数据读取队列中,由文件读取线程从当前服务器节点的文件中读取对应的目标瓦片数据。其中,m是根据用户设置和最开始对物理存储的检查得到的一个值。若当前服务器节点的物理存储中不含固态硬盘,则对于当前服务器节点的每个独立的物理存储,在同一时刻只有一个线程会读取它。多个文件读取线程可能在同一时刻读取不同物理存储下的文件。对于固态硬盘,在同一时刻也有可能有多个文件读取线程同时读取它的文件。
第三组线程,是有k对网络线程。若在当前服务器节点启动时,虚拟服务网络里还存在k个其他的有效服务器节点,则会启动k对网络线程(即当前服务器节点与其它k个有效服务器节点中的每一个服务器节点之间均存在一对网络线程),用于监听和发送与其他有效服务器节点之间的tcp长连接。若有新的服务器节点加入进来时,上层网络应用(用于接收一次性的网络消息,如windows下的WCF接口)会转发连接请求,将新的服务器节点和本服务器节点之间建立一对新的tcp长连接,用于监听和发送消息。这k对网络线程专门用于在当前服务器节点的R树中查询数据存储位置时,发现数据存储不在本机上的情况。若在当前服务器节点通过R树查找到所述数据读取请求对应的目标瓦片数据在其它服务器节点位置,则将数据读取请求写入到该其它服务器节点对应的网络数据读取队列中,由网络线程从网络数据读取队列中取出数据读取请求,向对应的服务器节点发送该数据读取请求并等待目标瓦片数据的接收。
另外,对于数据是否存在的快速判断,采用的方法是:虚拟服务网络中的每一个服务器节点的内存缓存采用M个键值容器存储文件数据存在表,其中,M为地图瓦片数据级别,键为容器标识,值为数据存在表。当数据读取请求对应的目标瓦片数据不存在于任一服务器节点内存缓存中而是存在于服务器节点上时,文件读取线程或网络线程首先读取该目标地图瓦片数据对应的文件的文件头,从而获取该文件的文件数据是否完整,若文件数据完整,则添加一个新的键值对到所述键值容器中,值设为NULL;若文件数据不完整,则读取该文件的文件数据索引表,判断该文件的每一地图瓦片数据是否存在,并将是否存在结果以键值对添加到所述键值容器中。在本实施例中,这样的键-值容器有32个,分别是代表不同的级别。而键和前面提到的键类似,是由X,Y坐标的前三个字节组合而成的。这样,一个大文件的文件数据存在表实际上是划分到了同一个键上。当有一个新的地图瓦片文件读取请求时,并且此地图瓦片对应的文件之前是没有读取过的,本发明会首先读取该地图瓦片对应的文件的文件头,获取该文件的文件数据是否完整。若文件数据完整,则添加一个新的键-值对到键-值容器中,值设为NULL即可。表示文件数据完整;若文件数据不完整,则读取该文件的文件数据索引表,判断该文件的每个地图瓦片文件数据是否存在。把这最多65536的一个一维数组可压缩成8192字节的数组,用位来表示文件是否存在。类似于上面的瓦片数据链表,这个容器内的数据也可组成一个链表,当它们的占用空间达到给定的范围时,就会从链表的尾部删除一些索引表。而每次瓦片被更新时,实际上它对应的索引表能被找出来,从而索引表链表也能被更新。
如果新的地图瓦片文件读取请求对应的文件是之前读取过的,那么会先查找这个键值容器,找到这个键值容器中的地图瓦片文件对应的索引表。从索引表中能够知道地图瓦片文件是否存在,若不存在则立即返回不存在,若存在则读取真正的文件。
而如果某个索引表被删除,又恰好需要查找它时,键值容器内是找不到索引表的,这时候又回到了之前的情况,即认为是第一次读取地图瓦片对应的文件,会把它的索引表读出来并添加到键-值容器中。
实施例二、一种地图瓦片数据的读取系统。以下结合图2对本实施例提供的系统进行详细说明。
参见图2,本实施例提供的地图瓦片数据的读取系统包括缓存读取线程201、第一查找模块202、数据存储情况表维护模块203、第二查找模块204、文件读取线程205、第一数据访问模块206、请求转发模块207、第三查找模块208、网络线程209和第二数据访问模块2010。
其中,缓存读取线程201,用于读取缓存读取队列中的数据读取请求,并从当前服务器节点内存缓存中读取数据读取请求对应的结果数据,并将结果数据赋值给结果处理对象,并将该结果处理对象送入结果处理队列中。
第一查找模块202,用于根据缓存读取线程201读取的数据读取请求,在所述虚拟服务网络的当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据,若存在,则直接将对应的目标瓦片数据返回给用户客户端;若不存在,则驱动第二查找模块204工作,其中,所述虚拟服务网络中包括多个服务器节点,其中,所述多个服务器节点之间通过预定通信协议互连。
数据存储情况表维护模块203,用于当每一个所述服务器节点通过预定通信协议接入所述虚拟服务网络时,会将自身的数据存储情况发送给其它服务器节点,同时获取其它服务器节点的数据存储情况,以使虚拟服务网络中的每一个服务器节点中均维护有该虚拟服务网络的数据存储情况表。
第二查找模块204,用于通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标数据所在的服务器节点。
第一数据访问模块205,用于若目标数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标数据,并将该目标数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标数据返回给用户客户端;若目标数据不在当前服务器节点上,则驱动请求转发模块207工作。
文件读取线程206,用于从数据读取队列中读取数据读取请求,并从当前服务器节点的文件中读取对应的目标瓦片数据。
请求转发模块207,用于通过当前服务器节点将数据读取请求转发给存在目标数据的其它服务器节点。
网络线程208,用于从网络数据读取队列中取出数据读取请求,向对应的服务器节点发送该数据读取请求并等待目标数据的接收。
第三查找模块209,用于在所述其它服务器节点的内存缓存中查找是否存在该目标数据,若存在,则将该目标数据发送给当前服务器节点,并存储于当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取目标数据返回给用户客户端;若不存在,则驱动第二数据访问模块2010工作。
第二数据访问模块2010,用于访问所述其它服务器节点得到要查找的目标数据,并将查找到的目标数据存储于本服务器节点的内存缓存中,同时,将该目标数据发送给所述当前服务器节点,并写入当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取出目标数据返回给用户客户端。
实施例三、一种地图瓦片数据的分发方法。以下结合图3对本实施例提供的分发方法进行详细描述。
参加图3,S21、接收用户客户端发送的数据读取请求,检测所述数据读取请求对应的目标瓦片数据类型。
S22a、若所述数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,则服务器节点直接将目标瓦片数据下发给对应的用户客户端。
S22b、若所述数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则服务器节点先将目标瓦片数据渲染后再下发给对应的用户客户端。
具体的,虚拟服务网络中的服务器节点接收到用户客户端(可以包括浏览器客户端或移动终端)发送的数据读取请求,检测该数据读取请求对应的目标瓦片数据的类型。若检测到数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,由于栅格地图瓦片数据不需要渲染,因此服务器节点直接将查找到的栅格瓦片数据分发给对应的用户客户端。若检测到数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则服务器节点先将对应的矢量地图瓦片数据渲染后再分发给用户客户端。即在矢量地图瓦片数据分发的过程中,所有服务器节点将对应的矢量地图瓦片数据渲染后发送给当前服务器节点,当前服务器节点统一做alhpa混合,然后分发给对应的用户客户端。当然,还有一种方式,就是服务器节点将目标地图瓦片数据先分发给对应的用户客户端,由用户客户端通过一些绘制的API对目标地图瓦片数据进行渲染,这使得瓦片数据分发的大小减小,也很容易控制渲染样式的改变,但是会增加用户客户端的负担,而在服务器节点上渲染后再分发给用户客户端充分利用了服务器端多核性能上的优势,极大了加快了出图渲染的速度。因此,本实施例采用先在服务器节点上渲染后再分发的方式,采用该种方式兼具了WMS和WMTS的优点,并摈弃了它们的不足:WMS的优点是可自由控制图层,可随时改变风格进行渲染;WMTS的优点是预先生成了切片,调用速度快。而本实施例中采用的矢量切片的方式则将两者结合了起来,无需预先生成切片,便可以自由控制图层,随时改变风格进行渲染,同时调用速度也很快。在这里本实施例想补充的是一个分层渲染的概念:根据图层渲染次序对图层做一个排序,对常改变的图层做一个拆分。例如有1,2,3,4,5层,其中第4层常改变,那么就分为1,2,3层,第4层,第5层三层渲染。对于不常改变的图层,将其压缩为一个图层渲染,即当有渲染请求来时,把这些不常改变的图层渲染在一个图层内。这些渲染的中间层是透明的,在渲染完的最后通过alpha混合得到最终的瓦片图。因为渲染的透明性质,还可以随时调整透明度。本实施例通过将常改变的图层和不常改变的图层拆分,当接收到渲染请求时,只需要对常改变的图层进行渲染,而不需要对不常改变的图层进行渲染,因此,渲染的速度更快。
对于不同用户的不同风格渲染的地图,服务端均会在内存中进行缓存,但内存缓存的容量是有限的。为了解决这一问题,服务端采取了渲染-存储-读取-分发的策略。即有效渲染某个任务的中间层以及最终层后,开启线程对这些数据进行写入磁盘并优化。当这些渲染后的数据从内存中被删除并且下次还需要使用时,则可以从这些写入磁盘中读取,无需通过矢量渲染引擎重新渲染,这就提高了矢量地图读取分发的效率和速度。而若用户删除了创建的某个风格后,后台线程在磁盘写入达到一定量之后,就会删除用户之前删除的某个风格下的数据文件,从而达到一些平衡,提高整个系统运作的效率。
实施例四、一种地图瓦片数据的分发系统。以下结合图4对本实施例提供的系统进行详细说明。
参见图4,本实施例提供的地图瓦片数据的分发系统包括检测模块401、第一分发模块402和第二分发模块403。
其中,检测模块401,用于接收用户客户端发送的数据读取请求,检测所述数据读取请求对应的目标瓦片数据类型。
第一分发模块402,用于若所述数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,则直接将目标瓦片数据分发给对应的用户客户端。
第二分发模块403,用于若所述数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则先在服务器节点上将目标瓦片数据渲染后再分发给对应的用户客户端。
本发明提供的一种地图瓦片数据的读取方法及读取系统,通过建立虚拟服务网络,只要数据存储于虚拟服务网络中,就会被任意一个服务节点访问到,多台服务器节点在内网中连接在一起,这多台服务器节点各自的服务能力等于这多台服务器节点的服务能力总和,增强了每一个服务器节点的服务能力,多个服务器节点组成内网,不需要增加外网带宽,每个服务器节点之间的数据传输速度快,因而也提升了数据读取的速度;同时,只要数据在某一个服务器节点被访问到,那么一段时间内该数据就会缓存在虚拟服务网络的某些服务器节点的内存缓存中,当下次访问时,可直接从内存缓存中读取,加快了数据读取的速度;另外,每一个服务器节点的内存缓存中均通过键值容器构建了数据存在表,在进行数据读取时,直接从数据存在表中查看数据是否存在,不需要数据读取时再重新均判断一次,克服了对于不存在于服务器节点上的文件数据访问的性能上的缺失。
另外,本发明提供的一种地图瓦片数据分发的方法及系统,当接收到用户客户端发送的数据读取请求后,检测需要请求的数据的类型,若是栅格地图瓦片数据,则服务器节点直接将数据下发给用户客户端,若为矢量地图瓦片数据,则先在服务器节点上渲染后再下发给用户客户端,这样充分利用了服务器多核性能上的优势,极大地加快了出图渲染的速度。
在本说明书的描述中,参考术语“实施例一”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种地图瓦片数据的读取方法,其特征在于,所述方法包括:
S11、建立虚拟服务网络,所述虚拟服务网络中包括多个服务器节点,其中,所述多个服务器节点之间通过预定通信协议互连;
S12、根据用户客户端发送的数据读取请求,在所述虚拟服务网络的当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据,若存在,则直接将对应的目标瓦片数据返回给用户客户端;若不存在,则执行步骤S13;
S13、通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点,若目标瓦片数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标瓦片数据,并将该目标瓦片数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标瓦片数据返回给用户客户端;若目标瓦片数据不在当前服务器节点上,则执行步骤S14;
S14、当前服务器节点将数据读取请求转发给存在目标瓦片数据的其它服务器节点,所述其它服务器节点在内存缓存中查找是否存在该目标瓦片数据,若存在,则将该目标瓦片数据发送给当前服务器节点,并存储于当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取目标瓦片数据返回给用户客户端;若不存在,则执行步骤S15;
S15、在所述其它服务器节点中查找对应的目标瓦片数据,并将查找到的目标瓦片数据存储于本服务器节点的内存缓存中,同时,将该目标瓦片数据发送给所述当前服务器节点,并写入当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取出目标瓦片数据返回给用户客户端。
2.如权利要求1所述的地图瓦片数据的读取方法,其特征在于,所述步骤S11还包括:
每一个所述服务器节点通过预定通信协议接入所述虚拟服务网络时,会将自身的数据存储情况发送给其它服务器节点,同时获取其它服务器节点的数据存储情况,以使虚拟服务网络中的每一个服务器节点中均维护有该虚拟服务网络的数据存储情况表;
所述步骤S13中通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点具体包括:
通过在所述当前服务器节点上构建的R树从当前服务器节点上维护的数据存储情况表中查找所述数据读取请求对应的目标瓦片数据所在的服务器节点。
3.如权利要求2所述的地图瓦片数据的读取方法,其特征在于,所述虚拟服务网络将用户客户端发送的数据读取请求写入缓存读取队列中,由缓存读取线程读取缓存读取队列中的数据读取请求,并从当前服务器节点内存缓存中读取数据读取请求对应的结果数据,并将结果数据赋值给结果处理对象,并将该结果处理对象送入结果处理队列中;
若缓存读取队列从当前服务器节点内存缓存中未读取到数据读取请求对应的结果数据,则通过当前服务器节点上的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点,若目标瓦片数据在当前服务器节点上,则将数据读取请求写入当前服务器节点的数据读取队列中,由文件读取线程从当前服务器节点的文件中读取对应的目标瓦片数据;
若通过R树查找到所述数据读取请求对应的目标瓦片数据在其它服务器节点,则将数据读取请求写入到该其它服务器节点对应的网络数据读取队列中,由网络线程从网络数据读取队列中取出数据读取请求,向对应的服务器节点发送该数据读取请求并等待目标瓦片数据的接收。
4.如权利要求3所述的地图瓦片数据的读取方法,其特征在于,所述每一个服务器节点的内存缓存采用M*N个键-值对容器存储地图瓦片数据,其中,M为地图瓦片数据级别,N为每一个级别键-值对容器的数量,键为容器唯一标识,值为对应的地图瓦片数据;
所述用户客户端发送的数据读取请求中至少携带有地图瓦片数据的X坐标、Y坐标和该地图瓦片数据对应级别;所述步骤S12中在当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据具体包括:
根据数据读取请求中携带的地图瓦片数据对应级别以及X坐标和Y坐标,找到对应的键-值对容器,缓存读取线程从键值对容器中读取结果数据。
5.如权利要求4所述的地图瓦片数据的读取方法,其特征在于,所述每一个服务器节点的内存缓存采用K个键值容器存储文件数据存在表,其中,K为地图瓦片数据级别,键为容器标识,值为数据存在表;
当数据读取请求对应的目标瓦片数据不存在于任一服务器节点内存缓存中而是存在于服务器节点上时,文件读取线程或网络线程首先读取该目标地图瓦片数据对应的文件的文件头,从而获取该文件的文件数据是否完整,若文件数据完整,则添加一个新的键值对到所述键值容器中,值设为NULL;若文件数据不完整,则读取该文件的文件数据索引表,判断该文件的每一地图瓦片数据是否存在,并将是否存在结果以键值对添加到所述键值容器中;
所述步骤S13中目标瓦片数据不在当前服务器节点上具体包括:
在当前服务器节点上通过R树查找目标瓦片数据所在的服务器节点时没有找到当前的服务器节点;或者,
在当前服务器节点上通过R树查找到数据读取请求对应的地图瓦片数据在当前服务器节点上,但通过查阅当前服务器节点的数据文件存在表,查阅结果为目标瓦片数据不存在于当前服务器节点上,执行步骤S14。
6.一种地图瓦片数据的分发方法,其特征在于,所述方法包括:
S21、接收用户客户端发送的数据读取请求,检测所述数据读取请求对应的目标瓦片数据类型;
S22a、若所述数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,则服务器节点直接将目标瓦片数据分发给对应的用户客户端;
S22b、若所述数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则服务器节点先将目标瓦片数据渲染后再分发给对应的用户客户端。
7.一种地图瓦片数据的读取系统,其特征在于,所述系统包括:
第一查找模块,用于根据用户客户端发送的数据读取请求,在所述虚拟服务网络的当前服务器节点的内存缓存中查找是否存在对应的目标瓦片数据,若存在,则直接将对应的目标瓦片数据返回给用户客户端;若不存在,则驱动第二查找模块工作,其中,所述虚拟服务网络中包括多个服务器节点,所述多个服务器节点之间通过预定通信协议互连;
第二查找模块,用于通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点;
第一数据访问模块,用于若目标瓦片数据在当前服务器节点上,则访问当前服务器节点得到要查找的目标瓦片数据,并将该目标瓦片数据写入当前服务器节点的内存缓存中,再从内存缓存中取出该目标瓦片数据返回给用户客户端;若目标瓦片数据不在当前服务器节点上,则驱动请求转发模块工作;
请求转发模块,用于通过当前服务器节点将数据读取请求转发给存在目标瓦片数据的其它服务器节点;
第三查找模块,用于在所述其它服务器节点的内存缓存中查找是否存在该目标瓦片数据,若存在,则将该目标瓦片数据发送给当前服务器节点,并存储于当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取目标瓦片数据返回给用户客户端;若不存在,则驱动第二数据访问模块工作;
第二数据访问模块,用于访问所述其它服务器节点得到要查找的目标瓦片数据,并将查找到的目标瓦片数据存储于本服务器节点的内存缓存中,同时,将该目标瓦片数据发送给所述当前服务器节点,并写入当前服务器节点的内存缓存中,再从当前服务器节点的内存缓存中提取出目标瓦片数据返回给用户客户端。
8.如权利要求7所述的地图瓦片数据的读取系统,其特征在于,所述系统还包括:
数据存储情况表维护模块,用于当每一个所述服务器节点通过预定通信协议接入所述虚拟服务网络时,会将自身的数据存储情况发送给其它服务器节点,同时获取其它服务器节点的数据存储情况,以使虚拟服务网络中的每一个服务器节点中均维护有该虚拟服务网络的数据存储情况表;
所述第二查找模块,用于通过在所述当前服务器节点上构建的R树查找所述数据读取请求对应的目标瓦片数据所在的服务器节点具体包括:
通过在所述当前服务器节点上构建的R树从所述数据存储情况表中查找所述数据读取请求对应的目标瓦片数据所在的服务器节点。
9.如权利要求8所述的地图瓦片数据的读取系统,其特征在于,所述系统还包括多个缓存读取线程、多个文件读取线程和多对网络线程;
所述缓存读取线程,用于读取缓存读取队列中的数据读取请求,并从当前服务器节点内存缓存中读取数据读取请求对应的结果数据,并将结果数据赋值给结果处理对象,并将该结果处理对象送入结果处理队列中;
所述文件读取线程,用于从数据读取队列中读取数据读取请求,并从当前服务器节点的文件中读取对应的目标瓦片数据;
所述网络线程,用于从网络数据读取队列中取出数据读取请求,向对应的服务器节点发送该数据读取请求并等待目标瓦片数据的接收。
10.一种地图瓦片数据的分发系统,其特征在于,所述分发系统包括:
检测模块,用于接收用户客户端发送的数据读取请求,检测所述数据读取请求对应的目标瓦片数据类型;
第一分发模块,用于若所述数据读取请求对应的目标瓦片数据为栅格地图瓦片数据,则直接将目标瓦片数据分发给对应的用户客户端;
第二分发模块,用于若所述数据读取请求对应的目标瓦片数据为矢量地图瓦片数据,则先在服务器节点上将目标瓦片数据渲染后再分发给对应的用户客户端。
CN201510577596.6A 2015-09-11 2015-09-11 一种地图瓦片数据的读取、分发方法及读取、分发系统 Active CN105138678B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510577596.6A CN105138678B (zh) 2015-09-11 2015-09-11 一种地图瓦片数据的读取、分发方法及读取、分发系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510577596.6A CN105138678B (zh) 2015-09-11 2015-09-11 一种地图瓦片数据的读取、分发方法及读取、分发系统

Publications (2)

Publication Number Publication Date
CN105138678A true CN105138678A (zh) 2015-12-09
CN105138678B CN105138678B (zh) 2018-11-13

Family

ID=54724025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510577596.6A Active CN105138678B (zh) 2015-09-11 2015-09-11 一种地图瓦片数据的读取、分发方法及读取、分发系统

Country Status (1)

Country Link
CN (1) CN105138678B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106384371A (zh) * 2016-09-20 2017-02-08 国家基础地理信息中心 一种基于矢量瓦片的地图绘制方法
CN106528767A (zh) * 2016-11-07 2017-03-22 王昱淇 一种基于访问模式的网络地图服务器缓存管理方法
CN107623580A (zh) * 2016-07-15 2018-01-23 阿里巴巴集团控股有限公司 内容分发网络中的任务处理方法、装置和系统
CN107967273A (zh) * 2016-10-19 2018-04-27 华为技术有限公司 数据获取方法、数据节点及系统
CN108009211A (zh) * 2017-11-10 2018-05-08 中国电子科技集团公司第三十二研究所 基于规则库的多源地图矢量瓦片渲染系统
CN108021674A (zh) * 2017-12-06 2018-05-11 浙江远算云计算有限公司 一种同步云端仿真数据的多级缓存传输加速系统
CN108303098A (zh) * 2018-02-09 2018-07-20 上海思岚科技有限公司 机器人路径规划方法及设备
CN110069560A (zh) * 2019-04-02 2019-07-30 北京明略软件系统有限公司 电子地图的管理方法和装置
CN111459934A (zh) * 2020-03-19 2020-07-28 北京图创时代科技有限公司武汉分公司 一种多源地图数据切片系统及方法
CN111782694A (zh) * 2020-06-28 2020-10-16 百度在线网络技术(北京)有限公司 一种信息写入方法、装置以及电子设备
CN112084284A (zh) * 2020-09-11 2020-12-15 广州南方智能技术有限公司 一种虚拟显示列表实现数据实时符号化的高效渲染方法
CN112097785A (zh) * 2020-11-11 2020-12-18 蘑菇车联信息科技有限公司 车载智能设备数据的处理方法、装置及电子设备
CN112214259A (zh) * 2020-10-19 2021-01-12 珠海金山网络游戏科技有限公司 地图加载系统、方法及装置
CN112788070A (zh) * 2019-11-01 2021-05-11 千寻位置网络有限公司 碰撞检测预警系统及其方法
CN113284057A (zh) * 2021-04-09 2021-08-20 维沃移动通信有限公司 图像校正方法、装置及电子设备
CN113419824A (zh) * 2021-01-25 2021-09-21 阿里巴巴集团控股有限公司 数据处理方法、装置、系统及计算机存储介质
CN113495880A (zh) * 2020-03-19 2021-10-12 中科星图股份有限公司 一种从Hbase瓦片存储快速导出区域子数据集的方法及装置
CN117527714A (zh) * 2024-01-04 2024-02-06 柏科数据技术(深圳)股份有限公司 数据报文的读取方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388043A (zh) * 2008-09-26 2009-03-18 北京航空航天大学 一种基于小块图片的ogc高性能遥感图像地图服务方法
CN103942338A (zh) * 2014-05-08 2014-07-23 百度在线网络技术(北京)有限公司 地图绘制方法、服务器及终端
CN104539681A (zh) * 2014-12-23 2015-04-22 北京超图软件股份有限公司 分布式gis加速系统和gis服务的处理方法
US20150130817A1 (en) * 2012-06-27 2015-05-14 Google Inc. Generating a sidebar from vector tiles

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101388043A (zh) * 2008-09-26 2009-03-18 北京航空航天大学 一种基于小块图片的ogc高性能遥感图像地图服务方法
US20150130817A1 (en) * 2012-06-27 2015-05-14 Google Inc. Generating a sidebar from vector tiles
CN103942338A (zh) * 2014-05-08 2014-07-23 百度在线网络技术(北京)有限公司 地图绘制方法、服务器及终端
CN104539681A (zh) * 2014-12-23 2015-04-22 北京超图软件股份有限公司 分布式gis加速系统和gis服务的处理方法

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107623580A (zh) * 2016-07-15 2018-01-23 阿里巴巴集团控股有限公司 内容分发网络中的任务处理方法、装置和系统
CN107623580B (zh) * 2016-07-15 2021-06-29 阿里巴巴集团控股有限公司 内容分发网络中的任务处理方法、装置和系统
CN106384371A (zh) * 2016-09-20 2017-02-08 国家基础地理信息中心 一种基于矢量瓦片的地图绘制方法
CN107967273A (zh) * 2016-10-19 2018-04-27 华为技术有限公司 数据获取方法、数据节点及系统
CN106528767B (zh) * 2016-11-07 2019-09-24 王昱淇 一种基于访问模式的网络地图服务器缓存管理方法
CN106528767A (zh) * 2016-11-07 2017-03-22 王昱淇 一种基于访问模式的网络地图服务器缓存管理方法
CN108009211A (zh) * 2017-11-10 2018-05-08 中国电子科技集团公司第三十二研究所 基于规则库的多源地图矢量瓦片渲染系统
CN108009211B (zh) * 2017-11-10 2021-11-23 中国电子科技集团公司第三十二研究所 基于规则库的多源地图矢量瓦片渲染系统
CN108021674A (zh) * 2017-12-06 2018-05-11 浙江远算云计算有限公司 一种同步云端仿真数据的多级缓存传输加速系统
CN108303098B (zh) * 2018-02-09 2018-09-25 上海思岚科技有限公司 机器人路径规划方法及设备
CN108303098A (zh) * 2018-02-09 2018-07-20 上海思岚科技有限公司 机器人路径规划方法及设备
CN110069560A (zh) * 2019-04-02 2019-07-30 北京明略软件系统有限公司 电子地图的管理方法和装置
CN112788070A (zh) * 2019-11-01 2021-05-11 千寻位置网络有限公司 碰撞检测预警系统及其方法
CN112788070B (zh) * 2019-11-01 2022-10-11 千寻位置网络有限公司 碰撞检测预警系统及其方法
CN113495880A (zh) * 2020-03-19 2021-10-12 中科星图股份有限公司 一种从Hbase瓦片存储快速导出区域子数据集的方法及装置
CN111459934A (zh) * 2020-03-19 2020-07-28 北京图创时代科技有限公司武汉分公司 一种多源地图数据切片系统及方法
CN111459934B (zh) * 2020-03-19 2023-09-22 北京图创时代科技有限公司武汉分公司 一种多源地图数据切片系统及方法
CN111782694A (zh) * 2020-06-28 2020-10-16 百度在线网络技术(北京)有限公司 一种信息写入方法、装置以及电子设备
CN111782694B (zh) * 2020-06-28 2023-10-20 百度在线网络技术(北京)有限公司 一种信息写入方法、装置以及电子设备
CN112084284A (zh) * 2020-09-11 2020-12-15 广州南方智能技术有限公司 一种虚拟显示列表实现数据实时符号化的高效渲染方法
CN112214259A (zh) * 2020-10-19 2021-01-12 珠海金山网络游戏科技有限公司 地图加载系统、方法及装置
CN112214259B (zh) * 2020-10-19 2024-03-01 珠海金山数字网络科技有限公司 地图加载系统、方法及装置
CN112097785B (zh) * 2020-11-11 2021-02-12 蘑菇车联信息科技有限公司 车载智能设备数据的处理方法、装置及电子设备
CN112097785A (zh) * 2020-11-11 2020-12-18 蘑菇车联信息科技有限公司 车载智能设备数据的处理方法、装置及电子设备
CN113419824A (zh) * 2021-01-25 2021-09-21 阿里巴巴集团控股有限公司 数据处理方法、装置、系统及计算机存储介质
CN113284057A (zh) * 2021-04-09 2021-08-20 维沃移动通信有限公司 图像校正方法、装置及电子设备
CN117527714A (zh) * 2024-01-04 2024-02-06 柏科数据技术(深圳)股份有限公司 数据报文的读取方法、装置、设备及存储介质
CN117527714B (zh) * 2024-01-04 2024-03-15 柏科数据技术(深圳)股份有限公司 数据报文的读取方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN105138678B (zh) 2018-11-13

Similar Documents

Publication Publication Date Title
CN105138678B (zh) 一种地图瓦片数据的读取、分发方法及读取、分发系统
US11301154B2 (en) Distributed storage method and device
CN110032571B (zh) 业务流程处理方法、装置、存储介质及计算设备
US10275184B2 (en) Framework for volatile memory query execution in a multi node cluster
US9317519B2 (en) Storage system for eliminating duplicated data
US9875259B2 (en) Distribution of an object in volatile memory across a multi-node cluster
CN109376156B (zh) 读取具有存储感知的混合索引的方法
CN105224255B (zh) 一种存储文件管理方法及装置
US11507596B2 (en) Live migration of distributed databases
CN110377531B (zh) 基于日志结构的持久性内存存储引擎装置及控制方法
US10908834B2 (en) Load balancing for scalable storage system
CN113377868B (zh) 一种基于分布式kv数据库的离线存储系统
CN109491928A (zh) 缓存控制方法、装置、终端及存储介质
JP2010079468A (ja) ファイルサーバリソース分割方法、システム、装置及びプログラム
CN104254839B (zh) 用于分割单链表以供分配存储器元素的系统和方法
CN106133703A (zh) 使用rdma来扫描内存用于删除重复
CN104750757B (zh) 一种基于HBase的数据存储方法和设备
CN103501319A (zh) 一种低延迟的面向小文件的分布式存储系统
CN111984696A (zh) 一种新型数据库和方法
CN105554121A (zh) 实现分布式缓存系统负载均衡的方法及系统
CN108540510B (zh) 一种云主机创建方法、装置及云服务系统
CN108073352A (zh) 虚拟磁盘处理方法及装置
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
US10057348B2 (en) Storage fabric address based data block retrieval
CN104951475B (zh) 分布式文件系统和实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200714

Address after: 430000 408, room 4, 5 building, Yang Yuan science and Technology Pioneer Park, 1004 Heping Road, Wuchang District, Wuhan, Hubei.

Patentee after: HEROLAND SPATIAL INFORMATION TECH Co.,Ltd.

Address before: 430000 Hubei city of Wuhan province East Lake New Technology Development Zone, Optics Valley Lu Tong Jian Tiancheng Meiya 5 unit 1002

Patentee before: WUHAN YUNKONGJIAN GEOGRAPHY INFORMATION TECHNOLOGY Co.,Ltd.

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method and system for reading and distributing map tile data

Effective date of registration: 20210624

Granted publication date: 20181113

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: HEROLAND SPATIAL INFORMATION TECH Co.,Ltd.

Registration number: Y2021420000047

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20230831

Granted publication date: 20181113

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: HEROLAND SPATIAL INFORMATION TECH CO.,LTD.

Registration number: Y2021420000047