CN117808980A - 地图栅格图片生成方法、系统、设备及存储介质 - Google Patents
地图栅格图片生成方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN117808980A CN117808980A CN202311761275.2A CN202311761275A CN117808980A CN 117808980 A CN117808980 A CN 117808980A CN 202311761275 A CN202311761275 A CN 202311761275A CN 117808980 A CN117808980 A CN 117808980A
- Authority
- CN
- China
- Prior art keywords
- map
- data
- vector tile
- tile
- level
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000003860 storage Methods 0.000 title claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 84
- 238000009877 rendering Methods 0.000 claims abstract description 66
- 238000005520 cutting process Methods 0.000 claims abstract description 62
- 238000005192 partition Methods 0.000 claims abstract description 34
- 230000004931 aggregating effect Effects 0.000 claims abstract description 8
- 238000006116 polymerization reaction Methods 0.000 claims abstract description 4
- 230000002776 aggregation Effects 0.000 claims description 24
- 238000004220 aggregation Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 22
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000009795 derivation Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000012800 visualization Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 241001125840 Coryphaenidae Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000002407 reforming Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种地图栅格图片生成方法、系统、设备及存储介质,所述方法包括:切图步骤:获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;聚合步骤:将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;渲染步骤:基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。通过采用本申请,提高了地图栅格图片批量生成的效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种地图栅格图片生成方法、系统、设备及存储介质。
背景技术
空间大数据既包括了传统的静态的地理空间数据,例如:林地、水系、城市区划等,还涵盖了通过GPS(Global Positioning System,全球定位系统)或者传感网络采集的实时动态位置数据。在巨大的数据量面前,更直观更高效地实现地理可视化是一项重要的关键技术。
传统GIS(Geographic Information System,地理信息系统)主要针对矢量和影像数据提供了不同的显示技术。影像数据通过压缩以及建立金字塔等手段提高了显示效率,而矢量数据尽管有很多优化手段但依然受浏览数据的数据量、精度和符号风格等因素所限。这些都是在大数据阶段进行可视化要解决的问题。空间大数据的地理可视化要根据静态数据和动态数据提供不同的可视化方案,而最直观的问题往往都会集中在性能和效果上。静态数据的可视化在大数据应用中的需求会涉及数据的全貌显示,展示的地图在进行缩放、平移等操作时,相当于浏览了上千万甚至上亿个空间对象。
而目前采用的通过第三方工具针对特定区域空间数据进行处理后生成栅格图片的方式虽然很好地缓解了在前端展示的加载效率、图片精度及样式准确控制的多种渲染流程中的问题,但是针对传统GIS栅格图片生成手段,全量栅格图片生成流程过长,高层级栅格图片生成效率低下等瓶颈问题难以得到有效的解决。
因此,现有的地图栅格图片生成方法主要有如下缺点:
(1)栅格图片生成效率低,全省级别的切片生成时间在一周以上,不适用于目前的实际生成效率要求;
(2)高层级切片数量基数大,生成过程中对于工作节点的内存消耗占用大,实际生成过程中基本无法完成高层级下的全量切片渲染,影响整体切片提供效率。
发明内容
针对现有技术中的问题,本申请的目的在于提供一种地图栅格图片生成方法、系统、设备及存储介质,提高地图栅格图片批量生成的效率。
本申请实施例提供一种地图栅格图片生成方法,包括如下步骤:
切图步骤:获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;
聚合步骤:将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;
渲染步骤:对于各个层级,基于分布式计算引擎,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。
通过采用本申请的地图栅格图片生成方法,首先通过切图步骤获取地图数据文件后进行切图处理,由于本申请基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,可大大提高切图处理的效率,然后通过聚合步骤对矢量瓦片数据按照层级分区并按照矢量瓦片参数进行聚合,通过分布式计算引擎循环读取并进行聚合处理,效率更高,并基于分布式计算引擎,在渲染步骤中执行渲染处理和图层叠加处理,得到地图栅格图片,因此,本申请实现了地图数据文件的高效率处理和图片快速渲染,提高了地图栅格图片生产效率,有利于快速实现地图栅格图片批量生产,有效降低了栅格地图的制作成本和时间。
在一些实施例中,所述切图处理包括如下步骤:
针对单个地图数据文件中的每条地图数据,确定经纬度范围;
依次对各个层级执行如下操作:
确定当前层级的瓦片坐标值范围;
构建当前层级的矢量瓦片单位,确定各个矢量瓦片单位对应的矢量瓦片参数,并基于墨卡托投影转换算法反推得到矢量瓦片经纬度值,构建瓦片数据对象;
以当前层级构建得到的矢量瓦片单位循环对单条地图数据进行切割相交处理,得到当前层级的矢量瓦片参数对应的矢量瓦片数据。
在一些实施例中,对于初始层级,所述构建当前层级的矢量瓦片单位,包括在当前层级的坐标值范围内,以预设步长为单位确定x方向和y方向的瓦片坐标值,得到当前层级的矢量瓦片单位;
对于初始层级之外的层级,所述构建当前层级的矢量瓦片单位,包括根据前一层级得到的瓦片坐标值确定当前层级的瓦片坐标值,得到当前层级的矢量瓦片单位。
在一些实施例中,将所述矢量瓦片数据按照各个层级分区存储,包括如下步骤:
将各个层级的矢量瓦片参数及其对应的矢量瓦片数据输出至Hive临时表中;
在Hive中创建分区表,将各个层级的矢量瓦片数据分区存储于所述分区表中。
在一些实施例中,所述基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,包括如下步骤:
获取聚合后的矢量瓦片参数列表,各个所述矢量瓦片参数的矢量瓦片参数列表包括该矢量瓦片参数以及对应的瓦片数据,所述瓦片数据包括所述矢量瓦片数据和图层叠加序号;
对所述矢量瓦片参数列表中的瓦片数据根据对应的所述图层叠加序号进行排序;
对于各个层级,根据所述矢量瓦片参数列表中的所述瓦片数据的排序,基于当前层级序号对应的矢量瓦片参数和瓦片数据进行渲染处理,并完成当前层级的图层叠加处理。
在一些实施例中,所述获取地图数据文件并存储,包括获取地图数据文件并存储于HDFS文件系统的指定目录;
所述得到地图栅格图片之后,还包括存储导出步骤,所述存储导出步骤包括如下步骤:
将所述地图栅格图片存储于go-fastdfs分布式文件存储系统;
将生成的所述地图栅格图片对应的键值存储至redis;
从所述go-fastdfs分布式文件存储系统中导出sqllite图片文件。
在一些实施例中,所述切图步骤、所述聚合步骤、所述渲染步骤和所述存储导出步骤整合为一个预设的栅格图片生成任务流程;
所述切图步骤之前,还包括如下步骤:
接收到栅格图片生成任务,确定所述栅格图片生成任务对应的地图数据文件地址,启动所述预设的栅格图片生成任务流程,依次执行所述切图步骤、所述聚合步骤、所述渲染步骤和所述存储导出步骤。
本申请实施例还提供一种地图栅格图片生成系统,应用于所述的地图栅格图片生成方法,所述系统包括:
切图模块,用于获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;
聚合模块,用于将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;
渲染模块,用于对于各个层级,基于分布式计算引擎,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。
通过采用本申请的地图栅格图片生成系统,首先通过切图模块获取地图数据文件后进行切图处理,由于本申请基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,可大大提高切图处理的效率,然后通过聚合模块对矢量瓦片数据按照层级分区并按照矢量瓦片参数对矢量瓦片数据进行聚合,通过分布式计算引擎循环读取并进行聚合处理,效率更高,并基于分布式计算引擎,在渲染模块中执行渲染处理和图层叠加处理,得到地图栅格图片,因此,本申请实现了地图数据文件的高效率处理和图片快速渲染,提高了地图栅格图片生产效率,有利于快速实现地图栅格图片批量生产。
本申请实施例还提供一种地图栅格图片生成设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行所述的地图栅格图片生成方法的步骤。
通过采用本申请所提供的地图栅格图片生成设备,所述处理器在执行所述可执行指令时执行所述的地图栅格图片生成方法,由此可以获得上述地图栅格图片生成方法的有益效果。
本申请实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现所述的地图栅格图片生成方法的步骤。
通过采用本申请所提供的计算机可读存储介质,其中存储的程序在被执行时实现所述的地图栅格图片生成方法的步骤,由此可以获得上述地图栅格图片生成方法的有益效果。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是本申请一实施例的地图栅格图片生成方法的流程图;
图2是本申请一实施例的瓦片层次模型的示意图;
图3是本申请一实施例的地图瓦片的示意图;
图4是本申请一实施例的各层级瓦片的对应关系示意图;
图5是本申请一实施例的地图栅格图片生成系统的示意图;
图6是本申请一实施例的地图栅格图片生成设备的结构示意图;
图7是本申请一实施例的计算机存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本申请将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。本说明书中虽然采用“第一”或“第二”等来表示某些特征,但其仅为表示作用,而不作为具体特征的数量和重要性的限制。
如图1所示,在一实施例中,本申请提供了一种地图栅格图片生成方法,包括如下步骤:
S100:切图步骤:获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;
在该实施例中,地图数据文件主要包括geoj son文件和icon等文件,geoj son文件是对地图数据结构进行编码的文件,文件中包含地图信息的各种属性:ID、名称、坐标等,在地图中看到的海洋、高速路、草地、兴趣点等信息数据,在实际存储中是采用geojson格式存储的,该geojson文件主要用于后续的地图切片和矢量瓦片数据的获取,icon等文件包括图标文件(icon,png格式,指地图中的图标)、背景图片(background,png格式,纯色图片,作为栅格地图的底图)、地图视觉效果文件(style.json,json文件)、图层样式控制文件(Styled Layer Descriptor,sld文件,用于geojson文件渲染生成图片使用)等,icon等文件主要用于后续渲染步骤中的图片渲染处理,地图视觉效果文件是地图生产的核心文件,它决定了地图绘制什么数据,以怎样的顺序绘制,以及绘制出什么样式的效果,可以简单理解为style.json文件是自定义地图的配置文件,通过该文件可以画出一副自定义风格的地图。栅格地图的生成可以简单理解为在背景图上添加一个又一个的图层,而图层的顺序由style.j son文件决定,每个图层实际渲染效果由sld文件决定,每个图层上的实际数据是通过读取geojson的属性字段获取得到的;矢量瓦片参数能够表征该瓦片对应的坐标值和所在层级。在一些实施方式中,矢量瓦片参数以X:Y:Z的形式标识该条数据在X方向、Y方向上的坐标值以及在Z方向上对应的层级。
S200:聚合步骤:将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;
在该实施例中,聚合步骤主要是将通过切图步骤得到的各个层级的分散且无序存储的矢量瓦片数据按照层级进行分区存储并且按照矢量瓦片参数进行聚合处理,保证在后续渲染步骤中根据各个层级中各个图层与矢量瓦片地图的对应关系来有序渲染各个图层并叠加;
S300:渲染步骤:对于各个层级,基于分布式计算引擎,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。
通过采用本申请的地图栅格图片生成方法,首先通过切图步骤获取地图数据文件后进行切图处理,由于本申请基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,可大大提高切图处理的效率,然后通过聚合步骤对矢量瓦片数据按照层级分区并按照矢量瓦片参数进行聚合,通过分布式计算引擎循环读取并进行聚合处理,效率更高,并基于分布式计算引擎,在渲染步骤中执行渲染处理和图层叠加处理,得到地图栅格图片,因此,本申请实现了地图数据文件的高效率处理和图片快速渲染,提高了地图栅格图片生产效率,有利于快速实现地图栅格图片批量生产,有效降低了栅格地图的制作成本和时间。
现有技术中缺乏对大数据量级下的栅格图片数据以及中间过程矢量数据的高效稳定的存储以及水平扩展能力。本申请中进一步采用分布式文件系统提供各个环节的数据存储支持,分布式文件系统具有高容错性、高可靠性、高性能和低成本的特点,进一步有利于迅速批量生产栅格图片,从而显著提高地图生产效率。所述步骤S100中,所述获取地图数据文件并存储,包括获取地图数据文件并存储于HDFS文件系统的指定目录,保证数据文件的安全性及源数据文件的水平扩展性能。
HDFS是hadoop生态系统中的一个重要组成部分,是hadoop中的存储组件,是hadoop生态系统的基础。HDFS是一个分布式文件存储系统,以流式数据访问模式存储超大文件,将数据分块存储到一个集群内的不同节点上,本申请依靠集群分布式处理的高效特性,使用大数据生态结构中的基础存储方式,方便分布式计算引擎访问获取存储的数据流。
该实施例中,分布式计算引擎例如可采用Spark引擎。Spark是在借鉴了HadoopMapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了Hadoop MapReduce明显的缺陷。Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。Spark拥有DAG执行引擎,支持在内存中对数据进行迭代计算。官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapReduce的10倍以上,如果数据从内存中读取,速度可以高达100多倍。
栅格地图是分层级的,在使用栅格地图时的缩放功能就是通过分层级实现的,对应地,在对单个geojson文件进行切图处理时,得到单个geoj son文件对应的多个层级的所有瓦片的矢量数据。图2示例性地示出了瓦片的层级结构。瓦片地图是由一张一张的正方形小图片拼接成的地图,正方形小图片即对应一个瓦片。瓦片地图的原理为:将一定范围内的地图按照一定的尺寸和格式,按照缩放级别或比例尺,切成若干行和若干列的正方形栅格图片,对切片后的正方形栅格图片称为瓦片。如图2所示,瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。以图2最右侧的金字塔模型为例,3层级用一张瓦片展示地图范围,4层级用4张瓦片来展示,即3层级的一张瓦片会变成4层级的4张瓦片地图内同样的范围,不同层级含有的瓦片数量不同,以3-20层级为例,层级的数字逐渐增大,包含的瓦片数量也越多,瓦片内包含的数据也会逐渐细化。图3示例性地示出了在地图中分割瓦片的示意图。
网页地图由许多小的正方形的图片组成,上述描述的瓦片即对应这些小图片,瓦片大小以设置为256*256像素为例,固定层级下的地图展示则由有序放置的多张瓦片无缝排列组成。如果需要看到更多的细节,可以使用不同缩放级别达到目的,缩放级别越高,显示地图的物理尺寸和细节表现也会相应增加。为了组织如此多的地图瓦片,需要使用一个简单的坐标系统,每一个瓦片都有一个z坐标来表示其缩放级别,还有一个x坐标和y坐标用来表示该瓦片在当前缩放级别下的网格内的位置,如:z/x/y。例如,第一张瓦片在网页地图系统中的坐标为0/0/0,此时缩放级别为0,只有一张瓦片覆盖了整个地图数据范围,当缩放级别为1时,即把缩放层级为0的瓦片分割成相等的四个方块,其中坐标为1/0/0和1/1/0的两块覆盖北半球,坐标为1/0/1和1/1/1的两块覆盖南半球。每一个缩放级别包含的瓦片数量为4的n次方,由于瓦片数量缩放级别是按指数增加的,因此每提高一个缩放级别都会增加大量的地图细节,同时为了应付越来越多的瓦片,对流程的处理能力及资源利用效率,存储空间的需求也会相应的增加。
在该实施例中,所述步骤S100中,切图处理包括如下步骤:
针对单个地图数据文件中的每条地图数据,此处为单个geojson文件中的每条geojson数据,确定经纬度范围,并将其所需展示的最初的层级作为初始层级;
依次对各个层级执行如下操作:
确定当前层级的瓦片坐标值范围,保证此瓦片坐标值范围能够覆盖当前处理的单条geojson数据中的地理信息对象;实现方式例如如下:
瓦片坐标x值构建:
Math.min(Math.max(pixelX/Tile.TILE_SIZE,0),Math.pow(2,zoom)-1);
瓦片坐标y值构建:
Math.min(Math.max(pixelY/Tile.TILE_SIZE,0),Math.pow(2,zoom)-1);
其中,参数对应关系为:pixelX:地理数据对象经度;pixelY:地理数据对象纬度;Zoom:对应展示层级;Tile.TILE_SIZE:瓦片像素值,本申请中输出设置为256;
构建当前层级的矢量瓦片单位,确定各个矢量瓦片单位对应的矢量瓦片参数,并基于墨卡托投影转换算法反推得到矢量瓦片经纬度值,调用geotools算法构建瓦片数据对象;构建瓦片数据对象具体如下:
Coordinate[]coords=(Coordinate[])points.toArray(new Coordinate[points.size()]);
Polygon polygon=geometryFactory.createPolygon(coords);
以当前层级构建得到的矢量瓦片单位循环对单条地图数据进行切割相交处理,保留相交处理后非空的矢量瓦片参数key和矢量瓦片参数对应的矢量瓦片数据value(geojson数据信息)作为键值对,存入结果数据集中待后续处理,即得到当前层级的矢量瓦片参数对应的矢量瓦片数据,然后对下一层级进行处理。在该实施例中,调用geotools提供的相交处理算法,返回处理得到的相交结果保存,此结果表示内容为当前矢量瓦片切割geoj son数据后得到的在此瓦片位置保留的地理数据。
通过采用该实施例的切图处理方法,以单条地图数据作为切图任务的处理单元,采用分布式计算引擎并行处理多个切图任务,可以同时处理多个地图数据,大大提高了对整体地图数据文件进行处理的效率。并且基于墨卡托投影转换算法反推得到矢量瓦片经纬度值,并以当前层级构建得到的矢量瓦片单位循环对单条地图数据进行切割相交处理,保证各个层级的瓦片坐标值范围被全面合理地进行切割,得到各个层级的矢量瓦片参数对应的矢量瓦片数据。
以下对墨卡托投影转换算法的原理进行介绍。
1、首先介绍经纬度坐标系、像素坐标系和投影坐标系的关系:
像素坐标系,也可以称为屏幕坐标系,像素坐标系和地图的经纬度坐标系存在对应关系,屏幕上的每一个像素都对应一个经纬度点位置。不同缩放级别下,像素坐标系和经纬度坐标系的对应关系是不同的。
投影坐标系,在GIS系统中非常重要,作用是将经纬度坐标系和屏幕的像素坐标系关联起来。利用一定数学规则将地球表面的经、纬线转换到平面上的理论及方法,由于地球是一个赤道略宽两级略扁的不规则的梨形球体,故其表面是一个不可展平的曲面,所以运用任何数学方法进行这种转换都会产生误差和变形,为按照不同需求缩小误差,而产生各种投影方法,常用投影类型有:高斯-克吕格投影、斜轴等面积立方投影、墨卡托投影(正轴等脚圆柱投影)等,在该实施例中采用了墨卡托投影的坐标转换算法用于映射经纬度坐标系与像素坐标系的坐标转换规则,但本申请不限于此。
在该实施例中,对于初始层级,所述构建当前层级的矢量瓦片单位,包括在当前层级的坐标值范围内,以预设步长为单位确定x方向和y方向的瓦片坐标值,得到当前层级的矢量瓦片单位;
例如,预设步长为1,在初始层级中,以1步长为单位构建x、y方向上的瓦片坐标值(以1为步长设计瓦片的坐标,即x方向为从左指向右,y方向为从上指向下,当前瓦片坐标为(X,Y),右边相邻瓦片坐标为(X+1,Y)),得到对应的此地图数据所在经纬度范围内全部此层级下的矢量瓦片单位;
对于初始层级之外的层级,所述构建当前层级的矢量瓦片单位,包括根据前一层级得到的瓦片坐标值确定当前层级的瓦片坐标值,得到当前层级的矢量瓦片单位,具体地,对于各个当前层级来说,指将前一层级中的每个瓦片拆分成当前层级的四个瓦片。如图4所示,示意性地示出了三个层级之间瓦片对应关系,例如Level1中的序号为2的瓦片的矢量瓦片参数对应Level2中的序号为20、21、22、23的四个瓦片的矢量瓦片参数,Level2中的序号为13的瓦片的瓦片坐标值对应Level3中序号为130、131、132、133的四个瓦片的瓦片坐标值。因此,对于除初始层级之外的层级,无需重新按照预设步长进行瓦片切割,直接基于前一层级的瓦片坐标值进行进一步细分,即可得到当前层级的瓦片坐标值,有利于提高整体切图效率。
在该实施例中,在获得个层级的矢量瓦片参数对应的矢量瓦片数据之后,统一输出到Hive临时表中进行处理,各个geojson文件的数据均按照上述切图步骤处理后,结果数据在Hive临时表中进行汇合,同时将这部分矢量瓦片数据导入到MongoDB中存储,用于矢量瓦片数据的存储,此处采用MongoDB存储可以用于后续的前端访问实时渲染的场景使用。
Hive是建立在hadoop上的数据仓库的基础构架,数据存储功能由HDFS提供,Hive将数据文件映射成数据库和一张张的表,库和表的元数据信息由关系型数据库保存,Hive提供了批量处理存储大数据量数据集的使用场景。针对本申请所需要保存的大量应用于数据渲染的原始数据信息的存储及后续整合有着很适合的应用条件,同时Hive提供的mapreduce计算框架、分区功能、大面积数据重整能力为后续的处理步骤提供了很大便捷。
MongoDB是一个基于分布式文件存储的开源NoSQL数据库系统,由C++编写。它旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似j son的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。在高负载的情况下,MongoDB天然支持水平扩展和高可用,可以很方便地添加更多的节点/实例,以保证服务性能和可用性。在许多场景下,MongoDB可以用于代替传统的关系型数据库或键/值存储方式,皆在为Web应用提供可扩展的高可用高性能数据存储解决方案。
在该实施例中,所述步骤S200中,将所述矢量瓦片数据按照各个层级分区存储,包括如下步骤:
将各个层级的矢量瓦片参数及其对应的矢量瓦片数据输出至Hive临时表中;
具体地,在切分单条地图数据前基于地图数据文件可确定该条数据的地理数据类型、geojson数据类型及图层叠加序号;在切分得到矢量瓦片参数-矢量瓦片数据对后,将矢量瓦片参数、矢量瓦片数据(geojson数据信息)以及该条数据对应的地理数据类型、geojson数据类型及图层叠加序号共同输出至Hive临时表,作为临时表中的一条数据。也即,Hive临时表中包括每条数据对应的矢量瓦片参数及其对应的瓦片数据,瓦片数据包括地理数据类型、geojson数据类型、图层叠加序号及矢量瓦片数据。
在其他实现方式中,在Hive临时表中的每条数据也可以包括如图层叠加序号等其他瓦片数据,临时表中的存储汇总的瓦片数据的字段信息可基于地图数据及用户需求设置。
在Hive中创建分区表,基于矢量瓦片参数确定数据对应的层级,将各个层级包含矢量瓦片参数、及矢量瓦片参数对应的瓦片数据的矢量数据文件分区存储于所述分区表中,例如按常规任务需要分层为3-19层共17个分区文件夹用于存储不同层级的矢量数据文件。通过将各个层级的矢量数据文件分区存储在Hive的分区表中,即每个层级的矢量数据文件存储在分区表中的一个分区,将矢量数据文件按照层级进行了分区,便于后续渲染步骤中分布式计算引擎对各个层级的矢量瓦片数据分别调用。该实施例中采用高容错性、高可靠性、高性能和低成本的分布式文件系统为支持,与分布式计算引擎相配合,有利于迅速批量生产栅格图片,显著提高地图生产效率。
最终存储在Hive中应用于渲染任务的矢量瓦片数据保存为featurecollection格式数据结构,应用于在后续渲染步骤中,调用geotools中的对应sld的渲染匹配算法完成各个图层渲染和叠加的流程。存储路径如下:
URL url=new URL(sldPath);
StyleFactory styleFactory=CommonFactoryFinder.getStyleFactory();
SLDParser stylereader=new SLDParser(styleFactory,url);
Style[]stylearray=stylereader.readXML();
Style newStyle=stylearray[0];
Layer layer=new FeatureLayer(featureCollection,newStyle);
map.addLayer(layer);
其中,Featurecollection表示当前图层类型单条数据对应的数据信息;Newstyle表示根据sld文件位置提取得到的sld具体样式表述对象。
在上述步骤执行完毕后,基于分布式计算引擎循环读取各个层级的分区矢量数据文件进行后续的聚合步骤和渲染步骤。具体地,在同一个spark任务执行环境中分别读取分区表中的矢量数据文件载入进行处理,即分别读取各个层级的矢量数据文件来处理,通过在按照矢量瓦片参数聚合之前先对各个层级的矢量数据文件分区存储,减少后续聚合中需要进行聚合的源数据量大小,减少数据合并复杂难度,提升此聚合步骤的流程环节中的执行效率。
由于切图步骤中的各个类型数据文件是单独处理存入Hive中的,因此在Hive中各类型数据得到的矢量瓦片参数-矢量瓦片数据的结果数据是分为多条且无序存储的,故在渲染前需将同一层级下的同样矢量瓦片参数的各类型数据先在执行内存中进行按矢量瓦片参数聚合,因此在各个层级的矢量数据文件分区存储的基础上,采用上述所述步骤S200,对各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据。
在该实施例中,所述步骤S300中,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,包括如下步骤:
获取聚合后的矢量瓦片参数列表key-list,各个所述矢量瓦片参数的矢量瓦片参数列表包括该矢量瓦片参数以及对应的瓦片数据,所述瓦片数据包括矢量瓦片数据、图层叠加序号、地理数据类型、矢量数据类型(geoj son数据类型);
对所述矢量瓦片参数列表key-list中的瓦片数据根据对应的图层叠加序号进行排序,得到排序后的矢量瓦片参数列表,以此保证后续渲染时各个图层按照顺序叠加;
对于各个层级,根据所述矢量瓦片参数列表中的瓦片数据的排序,基于当前层级序号对应的矢量瓦片参数和瓦片数据进行渲染处理,并完成当前层级的图层叠加处理。
通过预先结合分布式存储技术,将瓦片数据按照层级和矢量瓦片参数进行区分和聚合,得到各个矢量瓦片参数对应的矢量瓦片参数列表,各个层级的矢量瓦片参数列表分别存储在一个分区表中,更方便后续分布式计算引擎调用数据。在渲染步骤中,以每个矢量瓦片参数列表为一个处理单位,将渲染任务进行分区处理,将渲染步骤划分成多个任务并行处理,有利于提高渲染处理的效率,并且可以保证渲染过程中数据调取的准确性和快速性。同时,在渲染之前,将矢量瓦片参数列表按照图层叠加序号排序,可以保证渲染步骤中对图层的有序渲染和叠加,保证栅格图片生成的准确性。
具体地,在该实施例中,调用geotools的addshaplayer进行图层渲染和叠加,在图层叠加的过程中,以合并后的key-list做为一个处理单位,图层叠加的顺序按照key-list中顺序,完成各类型featurecollection与sldstye数据对象的匹配渲染,完成此图层的叠加处理,调用getmapcontent方法进行渲染得到的图片输出,此时通过geotools提供的相关渲染机制传参得到结果图片,具体实现过程如下:
//设置输出范围
CoordinateReferenceSystem crs=DefaultGeographicCRS.WGS84;
ReferencedEnvelope mapArea=new ReferencedEnvelope(x1,x2,y1,y2,crs);
//初始化渲染器
StreamingRenderer sr=new StreamingRenderer();
sr.setMapContent(map);
//初始化输出图像
BufferedImage bi=new BufferedImage(width,height,
BufferedImage.TYPE_INT_ARGB);
Graphics g=bi.getGraphics();
((Graphics2D)
g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
((Graphics2D)
g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
Rectangle rect=new Rectangle(0,0,width,height);
sr.paint((Graphics2D)g,rect,mapArea);
g.dispose();
map.dispose();
ImageIOUser.write(bi.getSubimage(256*i,256*k,256,256),"png",fileOutputStream)
在该实施例中,所述得到地图栅格图片之后,还包括存储导出步骤,具体地,所述存储导出步骤包括如下步骤:
将所述地图栅格图片存储于go-fastdfs分布式文件存储系统;go-fastdfs是一个基于http协议的分布式文件存储系统,它的运维及扩展比较简单,且具有高性能、高可靠、无中心、免维护的优点,在本流程中适用于批量生产的大量的小型图片文件的输出存储,并提供了较为简洁直观的可视化界面用于操作统计图片生产情况,go-fastdfs分布式文件存储系统相比于HDFS以及其他存储系统组件,更适用于本申请流程中的大数据量的栅格图片存储场景和调用展示需求;
将生成的所述地图栅格图片对应的键值存储至redis,用于后续任务失败的补图处理;
从所述go-fastdfs分布式文件存储系统中导出sqllite图片文件。具体地,在该实施例中,由于采用go-fastdfs分布式文件存储系统进行分布式存储作为支撑,在导出过程中,可采用多节点、多线程处理完成go-fastdfs到sqllite图片文件的导入流程,最终对外提供sqllite文件保存相关的图片数据信息,有利于提高在地图栅格图片生成后的图片导出效率,在大批量生成地图栅格图片的场景中,可以批量快速地获取生成的地图栅格图片。
在该实施例中,所述切图步骤、聚合步骤和渲染步骤整合为一个预设的栅格图片生成任务流程,进一步地,也可将所述切图步骤、所述聚合步骤、所述渲染步骤和所述存储导出步骤均使用dolphinscheduler整合为一个预设的栅格图片生成任务流程。
Dolphinscheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,可用于解决数据处理流程中错综复杂的依赖关系,使调度系统在处理流数据中开箱即用,可整合shell脚本、spark任务调度、Hive数据处理等独立流程并建立各自相互的依赖执行关系,并提供工作流运行历史树型/甘特图展示,支持任务状态统计、流程状态统计,提供了较为完善的日志监控辅助,依据技术调研适合本发明流程场景使用,故用作该流程方案的任务调度工具组件使用。
所述步骤S100:切图步骤之前,还包括如下步骤:
接收到栅格图片生成任务,确定所述栅格图片生成任务对应的地图数据文件地址,启动所述预设的栅格图片生成任务流程,依次执行所述切图步骤、聚合步骤、渲染步骤和存储导出步骤。
因此,该实施例可以实现一键任务调度功能,并且可以预先配置多个栅格图片生成任务,一键实现批量生成地图栅格图片。对于用户来说,在需要生成的地图栅格图片时,只需要输入栅格图片生成任务对应的地图数据文件地址,发起栅格图片生成任务之后,在切图步骤会自动从地图数据文件地址获取到地图数据文件,后续的各个步骤均是自动执行的,无需人工参与,操作更加简单方便,节省了人力成本。例如,可以给用户提供一个操作页面,在操作页面上显示地图数据文件地址输入框和启动任务按钮,用户在输入框中输入地图数据文件地址后,点击启动任务按钮,即可以启动所述预设的栅格图片生成任务流程,最终获得依据地图数据文件地址处存储的地图数据文件生成的地图栅格图片。
采用本申请的地图栅格图片生成方法对应用效果采用实验进行了验证,结果如下:
实验中基于大数据开发平台,涉及使用大数据平台组件包括HDFS,Hive,MongoDB,redis,spark等,平台外部组件包括go-fastdfs,sqlite,dolphinscheduler等。
1.Spark执行环境如下:
7台工作节点,各分配yarn预留处理内存为26G左右空间,总yarn集群内存为192G,yarn节点任务实际占用内存为128G。
2.Go-fastdfs部署环境:
3台工作节点,生成图片总量在3000W左右(省为单位),均分节点存储1000W/台,每台对应内部1000文件夹存放,每台对应内部10个sqlite文件用于数据存储迁入,每个sqlite文件大小在3.5G上下,总数据量为3.5G*30≈100G。
3.中间流程耗时统计:
(1)以省为单位的数据切分spark任务时长;3个小时左右;
(2)中间hive表整合流程时长:30分钟-1小时;
(3)spark渲染任务时长:24小时左右;
(4)图片数据信息导入sqlite文件时长:24小时左右。
从上述实验结果可以看出,采用本申请的地图栅格图片生成方法,以省为单位的数据的整体处理时间大约只需要不到3天,相比于现有技术中需要一周时间的方式,大大提高了地图栅格图片批量生成的效率。
如图5所示,本申请实施例还提供一种地图栅格图片生成系统,应用于所述的地图栅格图片生成方法,所述系统包括:
切图模块M100,用于获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;
聚合模块M200,用于将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;
渲染模块M300,用于对于各个层级,基于分布式计算引擎,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。
通过采用本申请的地图栅格图片生成系统,首先通过切图模块M100获取地图数据文件后进行切图处理,由于本申请基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,可大大提高切图处理的效率,然后通过聚合模块M200对矢量瓦片数据按照层级分区并按照矢量瓦片参数对矢量瓦片数据进行聚合,通过分布式计算引擎循环读取并进行聚合处理,效率更高,并基于分布式计算引擎,在渲染模块M300中执行渲染处理和图层叠加处理,得到地图栅格图片,因此,本申请实现了地图数据文件的高效率处理和图片快速渲染,提高了地图栅格图片生产效率,有利于快速实现地图栅格图片批量生产。
本申请实施例还提供一种地图栅格图片生成设备,包括处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行所述的地图栅格图片生成方法的步骤。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图6来描述根据本申请的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述地图栅格图片生成方法部分中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过采用本申请所提供的地图栅格图片生成设备,所述处理器在执行所述可执行指令时执行所述的地图栅格图片生成方法,由此可以获得上述地图栅格图片生成方法的有益效果。
本申请实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现所述的地图栅格图片生成方法的步骤。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述地图栅格图片生成方法部分中描述的根据本申请各种示例性实施方式的步骤。
参考图7所示,描述了根据本申请的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或集群上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
通过采用本申请所提供的计算机可读存储介质,其中存储的程序在被执行时实现所述的地图栅格图片生成方法的步骤,由此可以获得上述地图栅格图片生成方法的有益效果。
以上内容是结合具体的优选实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本申请的保护范围。
Claims (10)
1.一种地图栅格图片生成方法,其特征在于,包括如下步骤:
切图步骤:获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;
聚合步骤:将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;
渲染步骤:对于各个层级,基于分布式计算引擎,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。
2.根据权利要求1所述的地图栅格图片生成方法,其特征在于,所述切图处理包括如下步骤:
针对单个地图数据文件中的每条地图数据,确定经纬度范围;
依次对各个层级执行如下操作:
确定当前层级的瓦片坐标值范围;
构建当前层级的矢量瓦片单位,确定各个矢量瓦片单位对应的矢量瓦片参数,并基于墨卡托投影转换算法反推得到矢量瓦片经纬度值,构建瓦片数据对象;
以当前层级构建得到的矢量瓦片单位循环对单条地图数据进行切割相交处理,得到当前层级的矢量瓦片参数对应的矢量瓦片数据。
3.根据权利要求2所述的地图栅格图片生成方法,其特征在于,对于初始层级,所述构建当前层级的矢量瓦片单位,包括在当前层级的坐标值范围内,以预设步长为单位确定x方向和y方向的瓦片坐标值,得到当前层级的矢量瓦片单位;
对于初始层级之外的层级,所述构建当前层级的矢量瓦片单位,包括根据前一层级得到的瓦片坐标值确定当前层级的瓦片坐标值,得到当前层级的矢量瓦片单位。
4.根据权利要求1所述的地图栅格图片生成方法,其特征在于,将所述矢量瓦片数据按照各个层级分区存储,包括如下步骤:
将各个层级的矢量瓦片参数及其对应的矢量瓦片数据输出至Hive临时表中;
在Hive中创建分区表,将各个层级的矢量瓦片数据分区存储于所述分区表中。
5.根据权利要求1所述的地图栅格图片生成方法,其特征在于,所述基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,包括如下步骤:
获取聚合后的矢量瓦片参数列表,各个所述矢量瓦片参数的矢量瓦片参数列表包括该矢量瓦片参数以及对应的瓦片数据,所述瓦片数据包括所述矢量瓦片数据和图层叠加序号;
对所述矢量瓦片参数列表中的所述瓦片数据根据对应的所述图层叠加序号进行排序;
对于各个层级,根据所述矢量瓦片参数列表中的所述瓦片数据的排序,基于当前层级序号对应的矢量瓦片参数和瓦片数据进行渲染处理,并完成当前层级的图层叠加处理。
6.根据权利要求1所述的地图栅格图片生成方法,其特征在于,所述获取地图数据文件并存储,包括获取地图数据文件并存储于HDFS文件系统的指定目录;
所述得到地图栅格图片之后,还包括存储导出步骤,所述存储导出步骤包括如下步骤:
将所述地图栅格图片存储于go-fastdfs分布式文件存储系统;
将生成的所述地图栅格图片对应的键值存储至redis;
从所述go-fastdfs分布式文件存储系统中导出sqllite图片文件。
7.根据权利要求6所述的地图栅格图片生成方法,其特征在于,所述切图步骤、所述聚合步骤、所述渲染步骤和所述存储导出步骤整合为一个预设的栅格图片生成任务流程;
所述切图步骤之前,还包括如下步骤:
接收到栅格图片生成任务,确定所述栅格图片生成任务对应的地图数据文件地址,启动所述预设的栅格图片生成任务流程,依次执行所述切图步骤、所述聚合步骤、所述渲染步骤和所述存储导出步骤。
8.一种地图栅格图片生成系统,其特征在于,应用于权利要求1至7中任一项所述的地图栅格图片生成方法,所述系统包括:
切图模块,用于获取地图数据文件并存储,基于分布式计算引擎循环读取单个地图数据文件后并行切图处理,将所述地图数据文件中的地图数据切分为各个层级的矢量瓦片参数对应的矢量瓦片数据;
聚合模块,用于将所述矢量瓦片数据按照各个层级分区存储,基于分布式计算引擎循环读取所述各个层级的矢量瓦片数据,聚合得到各个层级中同一矢量瓦片参数对应的所有矢量瓦片数据;
渲染模块,用于对于各个层级,基于分布式计算引擎,基于所述矢量瓦片数据与图层的对应关系,执行渲染处理和图层叠加处理,得到地图栅格图片。
9.一种地图栅格图片生成设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至7中任一项所述的地图栅格图片生成方法的步骤。
10.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现权利要求1至7中任一项所述的地图栅格图片生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311761275.2A CN117808980A (zh) | 2023-12-20 | 2023-12-20 | 地图栅格图片生成方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311761275.2A CN117808980A (zh) | 2023-12-20 | 2023-12-20 | 地图栅格图片生成方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117808980A true CN117808980A (zh) | 2024-04-02 |
Family
ID=90422944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311761275.2A Pending CN117808980A (zh) | 2023-12-20 | 2023-12-20 | 地图栅格图片生成方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117808980A (zh) |
-
2023
- 2023-12-20 CN CN202311761275.2A patent/CN117808980A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112115198B (zh) | 一种城市遥感智能服务平台 | |
Cary et al. | Experiences on processing spatial data with mapreduce | |
US10262392B2 (en) | Distributed and parallelized visualization framework | |
CN103995861B (zh) | 一种基于空间关联的分布式数据装置、方法及系统 | |
Zhang et al. | Parallel online spatial and temporal aggregations on multi-core CPUs and many-core GPUs | |
CN111291016A (zh) | 一种海量遥感影像数据分层混合存储与索引方法 | |
CN110990516A (zh) | 地图数据的处理方法、装置和服务器 | |
CN103927933A (zh) | 一种海量移动目标渲染的方法及装置 | |
US10558665B2 (en) | Network common data form data management | |
CN105550977A (zh) | 一种并行方式栅格影像切片方法 | |
CN112181980B (zh) | 一种面向大规模分析的时空大数据立方体组织方法及系统 | |
CN105574102A (zh) | 一种电子地图数据加载的方法及装置 | |
WO2023226371A1 (zh) | 目标对象交互式重现的控制方法、装置、设备及存储介质 | |
CN114328779A (zh) | 基于云计算高效检索浏览的地理信息云盘 | |
CN111563081A (zh) | 一种矢量要素并行计算方法、装置、存储介质及终端 | |
Jhummarwala et al. | Parallel and distributed GIS for processing geo-data: an overview | |
Yan et al. | An improved coverage-oriented retrieval algorithm for large-area remote sensing data | |
CN117808980A (zh) | 地图栅格图片生成方法、系统、设备及存储介质 | |
CN107766436B (zh) | 一种地址关联数据处理方法、用户终端和服务器 | |
CN115810086A (zh) | 一种三维场景重建方法、装置、计算机设备及存储介质 | |
Tripathi et al. | A comparative analysis of conventional hadoop with proposed cloud enabled hadoop framework for spatial big data processing | |
Marques et al. | A cloud computing based framework for general 2D and 3D cellular automata simulation | |
Xiong et al. | HiGIS: An open framework for high performance geographic information system | |
Yang et al. | Efficient storage method for massive remote sensing image via spark-based pyramid model | |
CN112489210A (zh) | 一种自主可控的三维立体自然资源一张图系统构建方法 |
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 |