CN114297206A - 精细化高效动态瓦片地图服务发布方法、介质及电子设备 - Google Patents
精细化高效动态瓦片地图服务发布方法、介质及电子设备 Download PDFInfo
- Publication number
- CN114297206A CN114297206A CN202210235894.7A CN202210235894A CN114297206A CN 114297206 A CN114297206 A CN 114297206A CN 202210235894 A CN202210235894 A CN 202210235894A CN 114297206 A CN114297206 A CN 114297206A
- Authority
- CN
- China
- Prior art keywords
- tile
- vector
- tiles
- level
- service
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种精细化高效动态瓦片地图服务发布方法、介质及电子设备,属于地图服务领域。本发明在需要显示低层级瓦片时加载缓存在文件中的静态栅格瓦片保证渲染效率,在需要显示高层级瓦片时通过关系型数据库中的矢量要素数据实时生成动态矢量瓦片,确保了高层级下可视化的精细程度和可视化方案的可定制性,所有层级的渲染均可做到秒级响应;同时,针对缓存在文件中的静态栅格瓦片,通过监控数据更新接口,将每次更新内容发送给分布式发布订阅消息系统,通过流计算实时获取增量数据,通过分布式算法将更新的数据内容更新到已有的静态栅格瓦片文件上,从而实现提供全层级的动态瓦片服务,以最优的性能和效果展现在用户面前。
Description
技术领域
本发明属于地图服务领域,具体涉及一种精细化高效动态瓦片地图服务发布方法、介质及电子设备。
背景技术
地图瓦片技术解决了客户端请求地图时的渲染效率和浏览器兼容问题,通过切片的方式减少实时传输的数据量,降低响应时间来提高用户的体验。与此同时,随着分片层级不断提升,瓦片数量指数型增长,需要对大体量的地理数据进行数据切片,发布为瓦片地图服务,并且保证其稳定性、正确性、高层级瓦片动态精细化加载。
当前流行的几种开源GIS引擎,均有针对矢量数据的切片算法,但是切片算法多数均为单机程序,效率较低,在应对大体量矢量数据时运行时间过长,当数据量增长到一定程度之后会出现无法运行出结果的情况;同时,这一特点也会导致在大量矢量数据切片时常会出现瓦片错位等结果问题,出错率较高,并且不能够满足大体量地理矢量数据的切片与服务发布。
除此之外,常见的GIS引擎都不提供矢量数据动态瓦片地图服务,切片的结果常以静态文件的形式进行保存,也导致了可视化效果唯一且难以变化,同时面对数据的更新难以保证切片的实时性。在当前这个实时数据愈发流行的时代,无法满足快速更新数据的实时精细可视化需求。
总而言之,传统的瓦片地图发布方法无法正确、高效发布海量矢量数据,同时无法做到实时更新和精细的可视化效果。
发明内容
本发明的目的在于解决现有技术中存在地图服务难以兼顾加载效率和动态可视化质量的问题,并提供一种精细化高效动态瓦片地图服务发布方法、介质及电子设备。
本发明所采用的具体技术方案如下:
第一方面,本发明提供了一种精细化高效动态瓦片地图服务发布方法,其包括:
在服务器端,预先基于初始矢量数据源在分布式平台上通过并行计算生成低于层级阈值的所有层级的静态栅格瓦片,同时将初始矢量数据存储至关系型数据库中并构建对应的空间索引;
所述关系型数据库对外提供矢量数据更新接口,服务器端通过分布式发布订阅消息系统监控矢量数据的更新,当监控到出现新的矢量数据源时,通过流计算方式将新的矢量数据源实时更新至对应的静态栅格瓦片中;
服务器端对外发布栅格瓦片服务和矢量瓦片服务,并监听客户端发送的服务请求;当服务器端监听到客户端请求后,从客户端请求中解析所需访问的目标瓦片号,判断目标瓦片号对应的瓦片层级是否低于所述层级阈值,若是,则调用栅格瓦片服务将目标瓦片号对应的静态栅格瓦片以字节流形式返回给客户端进行展示,否则调用矢量瓦片服务从所述关系型数据库中读取目标瓦片号对应的瓦片坐标范围内所含的矢量要素集合,并将所述矢量要素几何转换为矢量瓦片后以字节流形式返回给客户端进行展示。
作为上述第一方面的优选,所述分布式平台采用Hadoop,所述服务器端生成静态栅格瓦片的方法如下:
S11、在Hadoop MapReduce程序的Map阶段,通过分布式遍历所述初始矢量数据源中的每一个矢量要素,计算得到每一个矢量要素所相交的每张初始层级瓦片的绘制信息,所述绘制信息包括瓦片上所需绘制的颜色和像素坐标信息;所述初始层级瓦片的瓦片层级为低于所述层级阈值的最大瓦片层级;
S12、在Hadoop MapReduce程序的Reduce阶段,将属于同一张初始层级瓦片的绘制信息归并后,按照矢量要素的类型和所述绘制信息绘制静态栅格瓦片,并以图片文件形式存储;
S13、在抽稀阶段,根据所述初始层级瓦片,按照层级从高到低的顺序,通过多线程处理方式依次生成低于层级阈值的其他所有层级的静态栅格瓦片。
作为上述第一方面的优选,所述S11中,在分布式遍历过程中,对于任意一个当前矢量要素,计算得到当前矢量要素所相交的每张初始层级瓦片的绘制信息的方法为:
S111、通过当前矢量要素的属性信息,从配置文件中获取绘制当前矢量要素需要的颜色信息;
S112、根据当前矢量要素的包围盒确定与其相交的初始层级瓦片的行列号范围,先针对所述行列号范围内的每一个初始层级瓦片,将其四至范围构成的面要素与当前矢量要素进行相交计算,得到相交几何要素,再通过相交几何要素的地理坐标信息计算得到瓦片上需要进行绘制的像素坐标信息;
S113、以由层级、行号和列号构成的瓦片号作为键,以包含所述颜色信息和所述像素坐标信息的绘制信息作为值,将键值对返回作为当前矢量要素的计算结果。
作为上述第一方面的优选,所述S13中,按照层级从高到低的顺序生成静态栅格瓦片时,低一层级的静态栅格瓦片需利用对应位置的四张高一层级的静态栅格瓦片通过卷积计算获得。
作为上述第一方面的优选,所述关系型数据库采用带有Post GIS插件的PostgreSQL数据库,其中矢量数据的几何信息统一转换至WGS84球面墨卡托投影坐标系,且原始几何信息和经过统一转换后的几何信息均以Geometry类型字段进行存储;所述空间索引为GiST空间索引,基于统一转换后的几何信息进行构建。
作为上述第一方面的优选,所述分布式发布订阅消息系统为Kafka,Kafka在所述矢量数据更新接口上监听矢量数据的更新,当监听到服务器端通过所述矢量数据更新接口对所述关系型数据库进行更新时,将消息实时发送给基于Flink的流计算程序,由流计算程序接收新的矢量数据源,并对所述低于层级阈值的所有层级的静态栅格瓦片进行增量更新。
作为上述第一方面的优选,所述矢量瓦片为MVT矢量瓦片,所述客户端中基于MapBox根据预设的渲染方式加载静态栅格瓦片或MVT矢量瓦片。
作为上述第一方面的优选,所述客户端中同时用两个不同图层来加载静态栅格瓦片和矢量瓦片,且两个图层通过设置图层透明度来进行切换显示;所述客户端实时监听地图缩放事件,并将当前地图位置和缩放比例所对应的目标瓦片号转换为客户端请求发送至服务器端,若目标瓦片号低于所述层级阈值,则接收服务器端发送的字节流且仅显示静态栅格瓦片,否则接收服务器端发送的字节流且仅显示矢量瓦片。
第二方面,本发明提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如上述第一方面任一方案所述的精细化高效动态瓦片地图服务发布方法。
第三方面,本发明提供了一种电子设备,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如上述第一方面任一方案所述的精细化高效动态瓦片地图服务发布方法。
本发明相对于现有技术而言,具有以下有益效果:
1)本发明可借助Hadoop等分布式框架实现矢量数据的切片算法,为大规模矢量数据的高效生产栅格切片提供了一个先进的、稳定的解决方案,适用于解决矢量数据量快速增长、图斑复杂带来的传统切片算法运行错误、运行时间长、结果不正确等问题。
2)本发明可借助Kafka等分布式发布订阅消息系统监控矢量数据的更新,基于Flink的流计算程序从Kafka获取数据更新内容,分布式算法实时更新已有的栅格瓦片数据,从而实现动态的栅格瓦片服务。
3)本发明可借助PostgreSQL数据库连同Post GIS空间扩展,实现了矢量切片的动态加载,同时结合动态栅格瓦片服务,形成了一套兼顾效率和质量的矢量数据实时可视化解决方案。该方案能够在低层级提供栅格瓦片,优先保证加载效率,但在高层级提供矢量瓦片,优先保证可视化质量。
附图说明
图1为精细化高效动态瓦片地图服务发布方法的示意图;
图2为客户端向服务器端请求瓦片地图服务的流程图;
图3为七百万量级全球数据下动态矢量瓦片加载时间随层级的变化关系;
图4为栅格瓦片实时更新流计算程序的吞吐量与延迟随容器数量变化关系。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。本发明各个实施例中的技术特征在没有相互冲突的前提下,均可进行相应组合。
参见图1所示,在本发明的一个较佳实施例中,提供了一种精细化高效动态瓦片地图服务发布方法,该方法用于在服务器端对客户端提供动态瓦片地图服务。下面对该精细化高效动态瓦片地图服务发布方法的具体实现方式进行详细展开描述,具体如A)、B)、C)三部分所述。
A)在服务器端,预先基于初始矢量数据源在分布式平台上通过并行计算生成低于层级阈值的所有层级的静态栅格瓦片,同时将初始矢量数据存储至关系型数据库中并构建对应的空间索引。
需要说明的是,本发明中的初始矢量数据源是指在构建服务器端的瓦片服务时已存在所有的矢量数据,其具体的数据类型和数量由实际应用场景决定。上述静态栅格瓦片是以文件的形式存储的,当需要加载相应的静态栅格瓦片时可以通过瓦片号直接调用存储于分布式平台上存储的静态文件,进而保证加载的效率。而且静态栅格瓦片可以在生成过程中预先调节其精细程度,满足可视化的需求。但是,静态栅格瓦片文件是已经生成好的瓦片,其可视化效果是无法后续改变的,用户难以在客户端对地图样式进行自定义。而且,当面临加载的矢量数据不断更新的应用常见,静态栅格瓦片文件无法满足动态更新可视化的需求,但假如每次都需要更新静态栅格瓦片则会导致所有层级瓦片的计算量过大,大大降低加载效率。因此,在本发明中,服务器端预先存储的静态栅格瓦片仅仅作为一个基础,后续需要对其进行优化。
需要说明的是,本发明中地图瓦片的层级范围为0~N,地图瓦片的最高层级N可根据客户端对外提供的瓦片层级范围而定,不同的层级范围可能存在不同的最高层级。地图瓦片的层级越高,单张瓦片所对应的空间范围越小,所包含的矢量要素越少,地图瓦片的层级越低,单张瓦片所对应的空间范围越大,所包含的矢量要素越多。例如,在部分地图瓦片的层级范围中,0级表示整个世界地图。
另外,服务器端所提供的静态栅格瓦片的层级并不包含所有瓦片层级,而是仅仅包含低于层级阈值的这部分瓦片层级。因为瓦片层级越低,其包含的矢量要素越多,动态生成矢量瓦片的效率越低,因此可用静态栅格瓦片来代替。而其余不低于层级阈值的瓦片层级,则因为所包含的矢量要素较少,因此可通过动态生成矢量瓦片来展示。本发明中的层级阈值可根据实际情况进行优化,其起到了切换瓦片数据源的作用。通过设置层级阈值来进行切换,客户端可在低层级向用户提供静态栅格瓦片,优先保证加载效率,但在高层级向用户提供矢量瓦片,优先保证可视化质量,以此来解决地图服务难以兼顾加载效率和动态可视化质量的问题。作为本发明实施例的一种较佳实现形式,层级阈值可设置为16级,即客户端请求的瓦片属于第0级到15级时,服务器端可直接调用供静态栅格瓦片并返回给客户端,当客户端请求的瓦片属于第16级到最高层级时,服务器端需要动态生成矢量瓦片并返回给客户端。
基于初始矢量数据源生成静态栅格瓦片的方法在现有技术中存在众多已有方法。作为本发明实施例的一种较佳实现形式,由于需要生成一系列层级的静态栅格瓦片,因此采用了分布式平台Hadoop来实现并行操作,服务器端基于Hadoop生成静态栅格瓦片基于MapReduce程序实现。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,能够方便地将程序运行在Hadoop上。MapReduce的具体原理属于现有技术,MapReduce程序的核心包含了Map(映射)函数和Reduce(归约)函数,Map(映射)函数用来把一组键值对映射成一组新的键值对,而指定并发的Reduce(归约)函数用来保证所有映射的键值对中的每一个共享相同的键组,因此按照该程序流程可以将整个程序分为Map阶段和Reduce阶段。下面对服务器端基于Hadoop生成静态栅格瓦片的具体方法步骤进行详述,其包含S11~S13步骤:
S11、在Hadoop MapReduce程序的Map阶段,通过分布式遍历所述初始矢量数据源中的每一个矢量要素,计算得到每一个矢量要素所相交的每张初始层级瓦片的绘制信息,所述绘制信息包括瓦片上所需绘制的颜色和所需绘制的像素坐标信息;所述初始层级瓦片的瓦片层级为低于所述层级阈值的最大瓦片层级。
需要说明的是,该步骤的遍历过程中,每一个矢量要素均需要获取其在每张初始层级瓦片的绘制信息,即仅需要先将矢量要素绘制在初始层级瓦片上即可。初始层级瓦片的瓦片层级即为所有静态栅格瓦片的最大层级,即低于所述层级阈值的最大瓦片层级,根据初始层级瓦片可逐层抽稀,继续获得其他各层级的静态栅格瓦片。作为进一步的一种优选方式,在分布式遍历过程中,对于任意一个当前矢量要素,计算得到当前矢量要素所相交的每张初始层级瓦片的绘制信息的方法如S111~S113所示:
S111、通过当前矢量要素的属性信息,从配置文件中获取绘制当前矢量要素需要的颜色信息。
需要说明的是,每一个当前矢量要素的绘制颜色,可由预先设置的配置文件定义,其具体可根据实际的显示需求进行修改。
S112、根据当前矢量要素的包围盒确定与其相交的初始层级瓦片的行列号范围,先针对所述行列号范围内的每一个初始层级瓦片,将其瓦片几何即四至范围构成的面要素与当前矢量要素进行相交计算,得到相交几何要素,再通过相交几何要素的地理坐标信息计算得到瓦片上需要进行绘制的像素坐标信息。
其中,根据当前矢量要素的包围盒确定与其相交的初始层级瓦片的行列号范围的计算方式可采用如下:
gridSizeX = WidthL/2
level
gridSizeY = HeightB/2
level
startCol = (envelope.minX+WidthL/2)/gridSizeX
endCol = (envelope.maxX+WidthL/2)/gridSizeX
startRow = ( HeightB/2-envelope.maxY)/gridSizeY
endRow = ( HeightB/2-envelope.minY)/gridSizeY
WidthL=maxX-minX
HeightB=maxY-minY
式中:gridSizeX表示瓦片x轴方向上的边长;gridSizeY表示瓦片y轴方向上的边长;WidthL表示投影坐标系在x轴方向上的跨度;HeightB表示投影坐标系在y轴方向上的跨度;level表示瓦片层级;envelope表示当前矢量要素的包围盒;envelope.minX, envelope.maxX,envelope.minY,envelope.maxY分别表示包围盒的最小x坐标、最大x坐标、最小y坐标、最大y坐标,minX,maxX,minY,maxY分别表示当前坐标系的最小x坐标、最大x坐标、最小y坐标、最大y坐标;startCol表示当最小列号;endCol表示当最大列号;startRow表示当最小行号;endRow表示当最大行号。
而通过相交几何要素的地理坐标信息计算得到瓦片上的像素坐标,可采用如下计算方式实现:
x
pixel
=width
pixel
× (WidthL/2+x-col×gridSizeX)/gridSizeX
y
pixel
=height
pixel
× (1-(HeigthB/2+y-row×gridSizeY)/gridSizeY)
式中:row,col分别表示瓦片的行号和列号;width pixel ,height pixel 分别表示最终瓦片栅格上每行、每列的像素数量;x,y分别表示地理投影坐标系下的x、y坐标;x pixel , y pixel 分别表示像素坐标。
S113、以由层级、行号和列号构成的瓦片号作为键,以包含所述颜色信息和所述像素坐标信息的绘制信息作为值,将键值对返回作为当前矢量要素的计算结果。
S12、在Hadoop MapReduce程序的Reduce阶段,将属于同一张初始层级瓦片的绘制信息归并后,按照矢量要素的类型和所述绘制信息绘制静态栅格瓦片,并以图片文件形式存储。
作为本发明实施例的一种较佳实现形式,针对每一个初始层级瓦片,其绘制静态栅格瓦片的主要步骤如下:
a) 遍历所有具有同一瓦片号的绘制信息;
b) 根据矢量要素类型和绘制信息中的颜色和像素坐标信息,依次绘制瓦片;
c) 将绘制完成的瓦片依照瓦片号写出为图片文件。
S13、在抽稀阶段,根据初始层级瓦片,按照层级从高到低的顺序,通过多线程处理方式依次生成所有层级的静态栅格瓦片。
作为本发明实施例的一种较佳实现形式,在按照层级从高到低的顺序生成静态栅格瓦片时,需要根据最大层级的瓦片文件,依次生成较低层级瓦片,四张高一层级的静态栅格瓦片可生成对应位置的一张低一层级的静态栅格瓦片,该过程主要步骤包括:
a) 根据低层级瓦片号,获取同一位置的高一层级四张静态栅格瓦片的瓦片号;
b) 根据获取的瓦片号读取高一层级的四张瓦片文件,卷积众数计算得到低一层级的静态栅格瓦片的像素值,卷积算法如下:
v
(l,c,r)
=mode(v
(l+1,2c,2r)
,v
(l+1,2c+1,2r)
,v
(l+1,2c,2r+1)
,v
(l+1,2c+1,2r+1)
)
式中:v (l,c,r) 代表l层级瓦片中r行c列的像素值;mode代表众数计算。
c) 层级从高到低依次遍历所有需要生成的瓦片层级,直至所有层级瓦片生产完成。
作为本发明实施例的一种较佳实现形式,本发明中的关系型数据库可以采用带有Post GIS插件的PostgreSQL数据库,当然也可以采用其他的关系型数据库。为了保证矢量数据的参考坐标系统一,在写入PostgreSQL数据库之前,可以将所有矢量数据的几何信息统一转换至WGS84球面墨卡托投影坐标系,且原始几何信息和经过统一转换后的几何信息均以Geometry类型字段进行存储,几何字段可以采用WKT形式存储的字符串。另外,本发明中所采用的空间索引优选为GiST空间索引,可基于统一转换后的几何信息进行构建。
B)关系型数据库对外提供矢量数据更新接口,服务器端通过分布式发布订阅消息系统监控矢量数据的更新,当监控到出现新的矢量数据源时,通过流计算方式将新的矢量数据源实时更新至对应的静态栅格瓦片中。
需要说明的是,矢量数据更新接口的作用是将新的矢量数据更新至关系型数据库中,分布式发布订阅消息系统也通过对矢量数据更新接口进行监听来实现消息触发。当通过矢量数据更新接口向关系型数据库中存储的矢量数据库更新新的矢量数据源时,一方面新的矢量数据源被写入关系型数据库中并重新构建空间索引,另一方面分布式发布订阅消息系统监听到该更新操作,开始触发流计算程序对预先存储的静态栅格瓦片进行增量更新,从而保证静态栅格瓦片处于最新的状态。
作为本发明实施例的一种较佳实现形式,分布式发布订阅消息系统为Kafka,Kafka在前述的矢量数据更新接口上增加拦截以监听矢量数据的更新。当监听到服务器端通过所述矢量数据更新接口对所述关系型数据库进行更新时,将消息实时发送给基于Flink的流计算程序,数据更新信息即新的矢量数据源被发送给Kafka,由流计算程序接收新的矢量数据源,并对所述低于层级阈值的所有层级的静态栅格瓦片进行增量更新。
需要说明的是,在对静态栅格瓦片进行增量更新时,仅需要将新的矢量数据源中的所有新增矢量要素写入原有的静态栅格瓦片即可,因此在读取现有静态栅格瓦片的基础上,其矢量数据的写入算法与前述静态栅格瓦片的生产过程相近。但是此时的更新计算量不大,因此不需要在Hadoop进行,通过基于Flink的流计算程序即可实现,以保证其更新的实时性。该增量更新也可以分为三个阶段:
a) 空间索引阶段:通过相交计算得到每一个新增矢量要素所相交的初始层级瓦片,获取新增矢量要素的绘制信息,将新增矢量要素的绘制信息按照对应的初始层级瓦片的瓦片号进行划分;
b) 数据类型转换阶段:针对每一个初始层级瓦片,将归属于该初始层级瓦片的新增矢量要素按照其绘制信息绘制于原有的静态栅格瓦片上,转换为栅格图片文件;
c) 抽稀阶段:依照初始层级瓦片的像素值,按照层级从高到低的顺序依次产生其余层级的新瓦片。
上述增量更新的三个阶段,本质上与服务器端基于Hadoop生成瓦片的原理一致,区别仅在于改用基于Flink的流计算程序来实现。新生成的静态栅格瓦片替代原有静态栅格瓦片,用于对外提供地图服务。由此,可保证即使向客户端发送静态栅格瓦片,该静态栅格瓦片也是实时更新的,但是该更新过程基本上在客户端发送请求前就已经完成了,因此并不会影响相应速度。
C)服务器端对外发布栅格瓦片服务和矢量瓦片服务,并监听客户端发送的服务请求;当服务器端监听到客户端请求后,从客户端请求中解析所需访问的目标瓦片号,判断目标瓦片号对应的瓦片层级是否低于所述层级阈值,若是,则将目标瓦片号对应的静态栅格瓦片以字节流形式返回给客户端进行展示,否则从所述关系型数据库中读取目标瓦片号对应的瓦片坐标范围内所含的矢量要素集合,并将所述矢量要素几何转换为矢量瓦片后以字节流形式返回给客户端进行展示。
需要说明的是,本发明中矢量瓦片的具体类型,客户端中加载和显示瓦片的形式,均可以根据实际应用常见进行选择。
作为本发明实施例的一种较佳实现形式,矢量瓦片为MVT矢量瓦片,所述客户端中基于Map Box根据预设的渲染方式加载静态栅格瓦片或MVT矢量瓦片。
客户端是通过服务器端对外发布的栅格瓦片服务和矢量瓦片服务来获取相应的瓦片数据流的。栅格瓦片服务和矢量瓦片服的形式可根据实际需要调整,其基本流程介绍如下:
1)针对以文件形式保存的静态栅格瓦片发布的静态栅格瓦片服务,其服务流程包括:
a) 根据客户端请求中访问的瓦片号确定静态栅格瓦片的文件路径;
b) 根据文件路径读取静态栅格文件并转化为字节流返回给客户端。
2)针对PostgreSQL数据库中的矢量数据发布的动态矢量瓦片服务,其服务流程包括:
a) 通过客户端请求中访问的瓦片号,通过换算确定当前瓦片在数据库中矢量数据统一坐标系中的坐标范围,瓦片层级、行列号与WGS84坐标系下经纬度范围的换算关系如下:
lng
min
=(x/2
z
) ×360 - 180
lng
max
=( (x+1)/2
z
) ×360 - 180
lat
min
=tan
-1
×sinh (1-(2×y)/ 2
z
)
lat
max
= tan
-1
×sinh(1-(2×(y+1))/ 2
z
)
式中:x,y,z分别代表瓦片列号、行号、层级;lng min , lng max , lat min , lat max 分别代表WGS84坐标系下经纬度的最小和最大值。
b) 根据经纬度范围筛选裁切出当前瓦片上的矢量要素;
c) 将当前瓦片上的矢量要素集合转化为MVT矢量瓦片;
d) 将瓦片以字节流的形式返回给客户端。
进一步的,假如客户端中基于Map Box来加载静态栅格瓦片或MVT矢量瓦片,考虑到其在技术层面切换不同数据源的流畅性,可以在客户端中同时用两个不同图层来加载静态栅格瓦片和矢量瓦片,且两个图层通过设置图层透明度来进行切换显示。此时,客户端实时监听地图缩放事件,并将当前地图位置和缩放比例所对应的目标瓦片号转换为客户端请求发送至服务器端,并接受服务器返回的字节流。为了便于技术层面实现,不论客户端请求的目标瓦片号是否低于所述层级阈值,服务器端均需要向客户端返回静态栅格瓦片字节流和矢量瓦片字节流,但是如果目标瓦片号对应的瓦片层级低于所述层级阈值,那么矢量瓦片字节流是空值,如果目标瓦片号对应的瓦片层级不低于所述层级阈值,那么静态栅格瓦片字节流字节流是空值。而客户端接收服务器端发送的字节流后,如果目标瓦片号对应的瓦片层级低于所述层级阈值,那么通过设置图层的透明度以仅显示接收到的静态栅格瓦片,否则如果目标瓦片号对应的瓦片层级不低于所述层级阈值,那么通过设置图层的透明度以仅显示接收到的MVT矢量瓦片字。
在一实施例中,具体而言,客户端中基于Map Box来加载静态栅格瓦片或MVT矢量瓦片时,其实际处理流程如下:
1)基于Map Box的map对象的addSource函数加载静态栅格瓦片数据源,设置type为raster,tiles为对应的瓦片url,schema为xyz。调用map对象的addLayer函数,加载对应数据源的图层。
2)基于Map Box的map对象的addSource函数加载动态矢量瓦片数据源,设置type为vector,tiles为对应的瓦片url。调用map对象的addLayer函数,加载对应数据源的图层。根据地类编码属性,对该矢量栅格进行唯一值渲染,选取符合要求的色带。基于Map Box图层的paint属性,设置fill-color的表达式,实现匹配到对应的值渲染对应的填充色的效果。
3)为实现动静态栅格瓦片的切换效果,即切换到16层级及以上,显示动态瓦片,否则显示静态瓦片,可采用如下做法:基于Map Box的map对象,添加zoom事件监听函数,同时通过setPaintProperty函数,控制图层的透明度。获取当前的map的zoom等级,若zoom>16,则设置静态栅格瓦片的raster-opacity为0,设置动态矢量瓦片的fill-opacity为1,反之,则设置静态栅格瓦片的raster-opacity为1,设置动态矢量瓦片的fill-opacity为0。
为了验证本发明的上述A)、B)、C)三部分所述的精细化高效动态瓦片地图服务发布方法的效果,下面将通过一个具体实例来展示其性能。
在该实例中,采用某省测绘科学技术研究院提供的各类自然资源数据成果,数据量级为百万量级,数据类型为矢量数据,数据范围涵盖整个省级区域。结果表明,本发明提出的精细化高效瓦片地图服务发布方法中,基于Hadoop MapReduce程序的静态栅格瓦片初始生产方式,相较于传统的GIS引擎,可以更加稳定、高效地生产地图瓦片,同时几乎不会发生结果错误。而且基于Flink的流计算栅格瓦片更新程序算法流程,可以实时从Kafka接收流数据更新,从而在已有栅格瓦片的基础上进一步绘制更新的数据,从而始终保持栅格瓦片文件处于最新。图2展示了本发明中客户端请求瓦片地图服务的全流程,根据层级大小分别请求不同的瓦片服务,使得在加载效率上,无论在何种缩放层级,客户端从请求到渲染出地图的过程都为秒级响应。但需要说明的是,此处图2中所判断的“高层级”是以前述的层级阈值为基准的。
另外,本实例中,在地图缩放到较小的层级时,展示的是栅格瓦片,其目的是保证服务的高效加载,提高用户的体验,由于有流计算程序的更新,栅格瓦片在高效加载的同时也能保持动态实时;随着地图瓦片层级的提高,展示的将是使用PostgreSQL数据库提供的Post GIS插件实时生成的矢量瓦片,能够保证发达之后可视化效果足够精细,同时可以定制化样式。
本实例中进一步模拟测试了Post GIS实时生成矢量瓦片的效率,图3展示了七百万量级下全球范围的动态矢量瓦片服务加载效率随层级的变化关系,可以看出在较高层级,地图渲染始终保持在秒级响应的速度。
本实例中进一步模拟测试了基于Flink的流计算栅格瓦片更新程序的效率。通过模拟每秒钟生成1200条新增数据,通过长度60秒,间隔10秒的滑动事件窗口记录平均的延迟和吞吐量。Flink程序的slot设置为2,延迟(TIME)和吞吐量(NUMBER)随容器(container)数量变化如图4所示,可以看出在container数量达到一定程度后,延迟(Latency)和吞吐量(Throughput)已经足以支持高频率的数据更新,足以应对绝大多数实时数据可视化需求。
由此可见,本发明提出了一种兼顾可视化质量和加载效率的针对矢量数据的动态瓦片地图服务发布方法。在低层级时加载缓存在文件中的栅格瓦片保证渲染效率,在高层级时通过PostgreSQL数据库的Post GIS插件实时根据原始矢量数据生成动态矢量瓦片,确保了高层级下可视化的精细程度和可视化方案的可定制性,所有层级的渲染均可做到秒级响应;同时,针对缓存在文件中的低层级栅格瓦片,为了保证其动态实时,通过监控数据更新接口,将每次更新内容发送给Kafka,基于Flink的流计算程序会从Kafka实时获取增量数据,通过分布式算法将更新的数据内容更新到已有的栅格瓦片文件上,从而实现提供全层级的动态瓦片服务,以最优的性能和效果展现在用户面前。与geoserver等主流开源GIS引擎相比,本发明在切片算法效率、可视化效果、可视化数据实时性方面都具有突出优势,在地理矢量大数据可视化领域具有重要的实际应用价值。
同样的,基于同一发明构思,本发明的另一较佳实施例中还提供了与上述实施例提供的精细化高效动态瓦片地图服务发布方法对应的一种计算机可读存储介质,该存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如前述任一实施例所述的精细化高效动态瓦片地图服务发布方法。
同样的,基于同一发明构思,本发明的另一较佳实施例中还提供了与上述实施例提供的精细化高效动态瓦片地图服务发布方法对应的一种电子设备,其包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如前述任一实施例所述的精细化高效动态瓦片地图服务发布方法。
可以理解的是,上述存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。同时存储介质还可以是U盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可以理解的是,上述的处理器可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
另外需要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的各实施例中,所述的装置和方法中对于步骤或者模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或步骤可以结合或者可以集成到一起,一个模块或者步骤亦可进行拆分。
以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
Claims (10)
1.一种精细化高效动态瓦片地图服务发布方法,其特征在于,包括:
在服务器端,预先基于初始矢量数据源在分布式平台上通过并行计算生成低于层级阈值的所有层级的静态栅格瓦片,同时将初始矢量数据存储至关系型数据库中并构建对应的空间索引;
所述关系型数据库对外提供矢量数据更新接口,服务器端通过分布式发布订阅消息系统监控矢量数据的更新,当监控到出现新的矢量数据源时,通过流计算方式将新的矢量数据源实时更新至对应的静态栅格瓦片中;
服务器端对外发布栅格瓦片服务和矢量瓦片服务,并监听客户端发送的服务请求;当服务器端监听到客户端请求后,从客户端请求中解析所需访问的目标瓦片号,判断目标瓦片号对应的瓦片层级是否低于所述层级阈值,若是,则调用栅格瓦片服务将目标瓦片号对应的静态栅格瓦片以字节流形式返回给客户端进行展示,否则调用矢量瓦片服务从所述关系型数据库中读取目标瓦片号对应的瓦片坐标范围内所含的矢量要素集合,并将所述矢量要素几何转换为矢量瓦片后以字节流形式返回给客户端进行展示。
2.如权利要求1所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述分布式平台采用Hadoop,所述服务器端生成静态栅格瓦片的方法如下:
S11、在Hadoop MapReduce程序的Map阶段,通过分布式遍历所述初始矢量数据源中的每一个矢量要素,计算得到每一个矢量要素所相交的每张初始层级瓦片的绘制信息,所述绘制信息包括瓦片上所需绘制的颜色和像素坐标信息;所述初始层级瓦片的瓦片层级为低于所述层级阈值的最大瓦片层级;
S12、在Hadoop MapReduce程序的Reduce阶段,将属于同一张初始层级瓦片的绘制信息归并后,按照矢量要素的类型和所述绘制信息绘制静态栅格瓦片,并以图片文件形式存储;
S13、在抽稀阶段,根据所述初始层级瓦片,按照层级从高到低的顺序,通过多线程处理方式依次生成低于层级阈值的其他所有层级的静态栅格瓦片。
3.如权利要求2所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述S11中,在分布式遍历过程中,对于任意一个当前矢量要素,计算得到当前矢量要素所相交的每张初始层级瓦片的绘制信息的方法为:
S111、通过当前矢量要素的属性信息,从配置文件中获取绘制当前矢量要素需要的颜色信息;
S112、根据当前矢量要素的包围盒确定与其相交的初始层级瓦片的行列号范围,先针对所述行列号范围内的每一个初始层级瓦片,将其四至范围构成的面要素与当前矢量要素进行相交计算,得到相交几何要素,再通过相交几何要素的地理坐标信息计算得到瓦片上需要进行绘制的像素坐标信息;
S113、以由层级、行号和列号构成的瓦片号作为键,以包含所述颜色信息和所述像素坐标信息的绘制信息作为值,将键值对返回作为当前矢量要素的计算结果。
4.如权利要求2所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述S13中,按照层级从高到低的顺序生成静态栅格瓦片时,低一层级的静态栅格瓦片需利用对应位置的四张高一层级的静态栅格瓦片通过卷积计算获得。
5.如权利要求1所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述关系型数据库采用带有Post GIS插件的PostgreSQL数据库,其中矢量数据的几何信息统一转换至WGS84球面墨卡托投影坐标系,且原始几何信息和经过统一转换后的几何信息均以Geometry类型字段进行存储;所述空间索引为GiST空间索引,基于统一转换后的几何信息进行构建。
6.如权利要求1所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述分布式发布订阅消息系统为Kafka,Kafka在所述矢量数据更新接口上监听矢量数据的更新,当监听到服务器端通过所述矢量数据更新接口对所述关系型数据库进行更新时,将消息实时发送给基于Flink的流计算程序,由流计算程序接收新的矢量数据源,并对所述低于层级阈值的所有层级的静态栅格瓦片进行增量更新。
7.如权利要求1所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述矢量瓦片为MVT矢量瓦片,所述客户端中基于Map Box根据预设的渲染方式加载静态栅格瓦片或MVT矢量瓦片。
8.如权利要求7所述的精细化高效动态瓦片地图服务发布方法,其特征在于,所述客户端中同时用两个不同图层来加载静态栅格瓦片和矢量瓦片,且两个图层通过设置图层透明度来进行切换显示;所述客户端实时监听地图缩放事件,并将当前地图位置和缩放比例所对应的目标瓦片号转换为客户端请求发送至服务器端,若目标瓦片号低于所述层级阈值,则接收服务器端发送的字节流且仅显示静态栅格瓦片,否则接收服务器端发送的字节流且仅显示矢量瓦片。
9.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如权利要求1~8任一所述的精细化高效动态瓦片地图服务发布方法。
10.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于当执行所述计算机程序时,实现如权利要求1~8任一所述的精细化高效动态瓦片地图服务发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210235894.7A CN114297206B (zh) | 2022-03-11 | 2022-03-11 | 精细化高效动态瓦片地图服务发布方法、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210235894.7A CN114297206B (zh) | 2022-03-11 | 2022-03-11 | 精细化高效动态瓦片地图服务发布方法、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114297206A true CN114297206A (zh) | 2022-04-08 |
CN114297206B CN114297206B (zh) | 2022-05-31 |
Family
ID=80978573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210235894.7A Active CN114297206B (zh) | 2022-03-11 | 2022-03-11 | 精细化高效动态瓦片地图服务发布方法、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114297206B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114820990A (zh) * | 2022-06-29 | 2022-07-29 | 浙江远算科技有限公司 | 一种基于数字孪生的流域防洪可视化方法及系统 |
CN115061989A (zh) * | 2022-06-07 | 2022-09-16 | 云南省地矿测绘院有限公司 | 一种gis数据共享方法及系统 |
CN115375868A (zh) * | 2022-10-25 | 2022-11-22 | 阿里巴巴(中国)有限公司 | 地图显示和遥感地图显示方法、计算设备以及存储介质 |
CN116108289A (zh) * | 2023-02-06 | 2023-05-12 | 水利部信息中心 | 一种空间信息服务精细化控制方法 |
CN116595025A (zh) * | 2023-07-18 | 2023-08-15 | 浙江省测绘科学技术研究院 | 矢量瓦片的动态更新方法、终端和介质 |
CN116680493A (zh) * | 2023-08-04 | 2023-09-01 | 中航信移动科技有限公司 | 一种航线地图数据预缓存方法、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226314A1 (en) * | 2006-03-22 | 2007-09-27 | Sss Research Inc. | Server-based systems and methods for enabling interactive, collabortive thin- and no-client image-based applications |
CN104933057A (zh) * | 2014-03-18 | 2015-09-23 | 北京图盟科技有限公司 | 一种地图服务提供方法及装置 |
CN106874517A (zh) * | 2017-03-15 | 2017-06-20 | 广州城市信息研究所有限公司 | 矢量地图服务的处理方法和装置 |
CN108255864A (zh) * | 2016-12-29 | 2018-07-06 | 广东中科遥感技术有限公司 | 基于分布式存储和分布式计算的影像地图服务发布方法 |
CN108491427A (zh) * | 2018-02-08 | 2018-09-04 | 中国人民解放军61540部队 | Pdf瓦片地图及制作方法 |
US20180261007A1 (en) * | 2015-12-16 | 2018-09-13 | Google Llc | Split tile map rendering |
CN110599891A (zh) * | 2019-09-23 | 2019-12-20 | 东方电子股份有限公司 | 一种电网设备地图渲染方法 |
CN111090657A (zh) * | 2019-10-28 | 2020-05-01 | 武大吉奥信息技术有限公司 | 一种矢量瓦片自动更新与即时服务系统 |
-
2022
- 2022-03-11 CN CN202210235894.7A patent/CN114297206B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070226314A1 (en) * | 2006-03-22 | 2007-09-27 | Sss Research Inc. | Server-based systems and methods for enabling interactive, collabortive thin- and no-client image-based applications |
CN104933057A (zh) * | 2014-03-18 | 2015-09-23 | 北京图盟科技有限公司 | 一种地图服务提供方法及装置 |
US20180261007A1 (en) * | 2015-12-16 | 2018-09-13 | Google Llc | Split tile map rendering |
CN108255864A (zh) * | 2016-12-29 | 2018-07-06 | 广东中科遥感技术有限公司 | 基于分布式存储和分布式计算的影像地图服务发布方法 |
CN106874517A (zh) * | 2017-03-15 | 2017-06-20 | 广州城市信息研究所有限公司 | 矢量地图服务的处理方法和装置 |
CN108491427A (zh) * | 2018-02-08 | 2018-09-04 | 中国人民解放军61540部队 | Pdf瓦片地图及制作方法 |
CN110599891A (zh) * | 2019-09-23 | 2019-12-20 | 东方电子股份有限公司 | 一种电网设备地图渲染方法 |
CN111090657A (zh) * | 2019-10-28 | 2020-05-01 | 武大吉奥信息技术有限公司 | 一种矢量瓦片自动更新与即时服务系统 |
Non-Patent Citations (3)
Title |
---|
LINSHU HU 等: ""A Dynamic Pyramid Tilling Method for Traffic Data Stream Based on Flink"", 《IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS》 * |
YI LIU等: ""A mapreduce approach for processing large-scale remote sensing images"", 《2012 20TH INTERNATIONAL CONFERENCE ON GEOINFORMATICS》 * |
杨磊等: "基于矢量瓦片技术的国土资源数据快速更新服务研究", 《测绘与空间地理信息》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115061989A (zh) * | 2022-06-07 | 2022-09-16 | 云南省地矿测绘院有限公司 | 一种gis数据共享方法及系统 |
CN115061989B (zh) * | 2022-06-07 | 2023-04-18 | 云南省地矿测绘院有限公司 | 一种gis数据共享方法及系统 |
CN114820990A (zh) * | 2022-06-29 | 2022-07-29 | 浙江远算科技有限公司 | 一种基于数字孪生的流域防洪可视化方法及系统 |
CN114820990B (zh) * | 2022-06-29 | 2022-09-20 | 浙江远算科技有限公司 | 一种基于数字孪生的流域防洪可视化方法及系统 |
CN115375868A (zh) * | 2022-10-25 | 2022-11-22 | 阿里巴巴(中国)有限公司 | 地图显示和遥感地图显示方法、计算设备以及存储介质 |
CN116108289A (zh) * | 2023-02-06 | 2023-05-12 | 水利部信息中心 | 一种空间信息服务精细化控制方法 |
CN116595025A (zh) * | 2023-07-18 | 2023-08-15 | 浙江省测绘科学技术研究院 | 矢量瓦片的动态更新方法、终端和介质 |
CN116595025B (zh) * | 2023-07-18 | 2023-09-15 | 浙江省测绘科学技术研究院 | 矢量瓦片的动态更新方法、终端和介质 |
CN116680493A (zh) * | 2023-08-04 | 2023-09-01 | 中航信移动科技有限公司 | 一种航线地图数据预缓存方法、存储介质及电子设备 |
CN116680493B (zh) * | 2023-08-04 | 2023-10-20 | 中航信移动科技有限公司 | 一种航线地图数据预缓存方法、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114297206B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114297206B (zh) | 精细化高效动态瓦片地图服务发布方法、介质及电子设备 | |
CN106898047B (zh) | 倾斜模型和多元模型动态融合的自适应网络可视化方法 | |
US10388067B2 (en) | Conveying machine data to a user via attribute mapping in a three-dimensional model | |
US10262392B2 (en) | Distributed and parallelized visualization framework | |
CA2849992C (en) | Managing map elements using aggregate feature identifiers | |
CN103995861B (zh) | 一种基于空间关联的分布式数据装置、方法及系统 | |
US8612491B2 (en) | System and method for storing a dataset of image tiles | |
CN110059143A (zh) | 一种基于遥感影像瓦片数据的地图绘制方法 | |
CN110647608A (zh) | 基于地图的海量数据聚合显示方法及系统、设备、介质 | |
US11551382B2 (en) | Efficient refinement of tiles of a HLOD tree | |
WO2012116160A1 (en) | Map creation | |
CN109829021A (zh) | 一种地图展示方法及装置 | |
Guo et al. | A spatially adaptive decomposition approach for parallel vector data visualization of polylines and polygons | |
US10467186B2 (en) | Managing white space in a portal web page | |
CN113495933A (zh) | 一种矢量瓦片显示方法及系统 | |
US20170270082A1 (en) | Dynamic rendering of geographic data | |
CN112231426A (zh) | 一种基于矢量瓦片点数据的更新方法、系统、介质及终端 | |
CN115952252A (zh) | 数据处理方法、装置、电子设备和介质 | |
CN113419806B (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
Hu et al. | Geospatial web service for remote sensing data visualization | |
US20240153172A1 (en) | Automatically generating axes for data visualizations including data bound objects | |
Amiraghdam et al. | LOOPS: LOcally Optimized Polygon Simplification | |
CN116595025B (zh) | 矢量瓦片的动态更新方法、终端和介质 | |
CN111800742B (zh) | 一种移动位置数据的管理方法、装置、存储介质及终端 | |
Ortega et al. | Rendering large datasets of georeferenced markers in mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |