专业的编程技术博客社区

网站首页 > 博客文章 正文

胡振彪,赵军,韩磊,等.矢量电子地图瓦片制作性能评估与应用

baijin 2025-03-03 17:23:56 博客文章 9 ℃ 0 评论


矢量电子地图瓦片制作性能评估与应用

胡振彪1,2,赵军1,2,韩磊1,2,王海银1,2

1.青岛市勘察测绘研究院

2.青岛市海陆地理信息集成与应用重点实验室


摘要

针对大众GIS应用与服务对在线地图表达和性能要求越来越高,矢量瓦片成为地图引擎的首选,该文从地图矢量切片模型、编码规则、技术流程与跨平台应用研究等多角度,以主流的切片工具Mapbox Studio、GeoServer、ArcGIS Pro为例,对不同的地图矢量切片方案,从自定义矢量制图、切片环境、切片机制等方面进行了定性定量对比分析。结果表明:不同切片工具由于其切片环境和机制的不同,切片效率各有不同,适用于各自不同的应用场景,为在线网络地图引擎设计、开发和应用提供了技术参考。同时,该文提出通过自定义微服务网关的方式实现多套矢量瓦片服务对应多客户端调用需求,实现矢量瓦片跨平台应用。

0 引言

1 矢量切片

2 矢量切片方案

3 方案对比

4 跨平台应用

5 结束语


0
引言

随着互联网时代的飞速发展和人们生活水平的不断提高,传统纸质地图已经慢慢退出历史舞台,电子地图已经成为人们工作和生活不可缺少的重要工具,从出差远行到生活购物,对地图的应用无处不在。地图瓦片的出现,使得谷歌、高德、百度地图等地图产品迅速发展壮大,通过金字塔模型生成的栅格瓦片数据,提高了地图的影响速度,大大改善了地图实用性。随着技术的不断发展,地图调用不再拘泥于原始的预先生成的栅格瓦片,矢量瓦片开始兴起,充分利用前端渲染的灵活性和交互性,矢量瓦片成为当前地图应用的热点[1-2]。

目前,关于矢量瓦片的研究并不十分成熟,相关标准并不统一,其应用尤其在专业应用方面也并不十分广泛。文献[3]基于网络的矢量瓦片技术研究,指出了矢量瓦片地图在交互性、渲染效果方面的优势,但是对于离线环境下的应用并未研究。文献[4]通过开发在线交互可视化工具,对矢量瓦片的动态可视化渲染进行了深入研究,丰富和简便了地图可视化表达。文献[5]针对矢量瓦片的点状要素注记处理也进行了深入研究,解决了动态渲染过程中传统注记压盖问题。文献[6]基于Mapbox对矢量瓦片数据组织、编码规则等关键技术进行了深入研究。文献[7]基于Mapbox矢量瓦片的应用也做了较为深入的开发研究。

本文对当前主流的矢量瓦片解决方案进行了深入归纳和探讨,并对各解决方案进行了实验测试和优劣势对比分析,提出一种跨平台使用方法,为地理信息开发者使用矢量瓦片服务提供了参考。


1
矢量切片

当前,电子地图瓦片主要分为栅格瓦片和矢量瓦片,但随着地图数据更新频率的提升,传统栅格瓦片地图由于切片速度慢、不易更新等问题日益凸显,使得矢量瓦片的应用越来越受到用户的青睐。

如表1所示,在切片大小方面,矢量切片有较大的优势;以青岛全市域现状电子地图为例,采用栅格瓦片切图,9~20级全瓦片总量约36.5 GB,切片时间需3~5 d,且对存储空间、网络带宽的占用非常大;而同样范围矢量瓦片包有200 MB左右,约200倍的压缩空间,不到1 h即可完成切片任务。视网膜屏幕是苹果公司推出的分辨率超过人眼识别极限的高分辨率屏幕,对于在客户端渲染的矢量切片,其显示效果更好。

目前,互联网地图服务商除了BingMap、搜狗地图、OpenStreetMap仍然使用栅格瓦片服务外,百度、高德、谷歌地图已经全面采用矢量瓦片引擎作为优选地图渲染引擎。

表1 矢栅瓦片优劣势比较一览表

1.1 矢量瓦片原理

传统栅格瓦片切片原理是以四叉树金字塔模型直接切割地图图片,最终表现为金字塔分层的256像素×256像素的PNG图片,或相应的基于图片的压缩包格式。矢量瓦片切片原理同样是基于四叉树金字塔模型,不过,切割的不再是栅格图片,而是矢量数据的描述性文件,存储的是投影范围内所属的几何信息和属性信息,表现为矢量瓦片能力文档,最终客户端根据地图显示范围从服务器获取相应的矢量信息,通过读取图层的样式文件style在客户端实现地图的实时绘制[8-11](图1)。

图1 矢量瓦片工作原理

1.2 矢量切片格式

当前应用较广的存储格式主要有GeoJSON、TopoJSON和Google Protocol Buffers(PBF)。

GeoJSON是一种对各种地理数据结构进行编码的格式,基于JavaScript对象表示法的地理空间信息数据交换格式。GeoJSON对象可以表示几何、特征或者特征集合。GeoJSON支持下面几何类型:点、线、面、多点、多线、多面和几何集合。GeoJSON里的特征包含一个几何对象和其他属性,特征集合表示一系列特征[12-13]。GeoJSON易读性好、但冗余度最大,几乎所有主流的GIS引擎都支持GeoJSON格式动态渲染电子地图数据。

TopoJSON是GeoJSON按拓扑学编码后的扩展形式,相比GeoJSON直接使用Polygon、Point之类的几何体来表示图形的方法,TopoJSON 中的每一个几何体都是通过将共享边(被称为arcs)整合后组成的。由于TopoJSON边界线只记录一次,地理坐标使用整数不使用浮点数,因此大幅消除了冗余,文件大小缩小了80%。但TopoJSON易读性较差,需要专门工具根据规则进行转换,支持该格式的软件并不多,其中最著名的是目前开源Web三维的代表CesiumJS[14]。

Google Protocol Buffers是一种节省存储空间的矢量瓦片数据编码格式,是兼容多语言、多平台、易扩展的数据序列化格式,这种格式应用于客户端或服务端高效渲染或查询要素信息。依据其标准制作的矢量瓦片标准目前几乎成为矢量瓦片的行业标准,当前主流的Mapbox采用的矢量瓦片就是基于PBF编码[15-16],超图、ArcGIS、OpenLayers、GeoServer都支持该种格式。

目前,百度、高德、谷歌等都采用自定义瓦片格式,本文不做重点介绍。

1.3 矢量瓦片编码

1.3.1 几何图形编码

GeoJSON和TopoJSON中,矢量瓦片中的几何数据记录的都是原始的坐标。对于PBF编码方案,矢量瓦片中的几何数据被定义为屏幕坐标系。以瓦片的左上角定义为(显示默认如此)坐标系的原点。X轴向右为正,Y轴向下为正。几何图形中的坐标必须为整数。几何图形被编码为要素的geometry字段的一个32位无符号型整数序列。每个整数是CommandInteger或者ParameterInteger。解码器解析这些整数序列作为生成几何图形的一系列有序操作。指令涉及的位置是相对于“游标”的,即一个可重定义的点。对于要素中的第一条指令,游标位于坐标系中的位置是(0,0)。有些指定能够移动游标,因而会影响到接下来执行的指令。

以图2几何要素的存储面要素为例,面要素的3个坐标依次是(3,6)、(8,12)、(20,34),在编码过程中,首先将坐标信息转化为指令集,最后将指令集编码存储为PBF文件。

图2 矢量瓦片几何编码规则

1.3.2 要素属性编码

GeoJSON和TopoJSON中,矢量瓦片中的属性信息直接在文件中以对象数组的形式存储,内容本身并未进行压缩。而PBF格式文件,要素属性被编码为tag字段中的一对对整数。在每对tag中,第一个整数表示key在其所属的layer的keys列表的中索引号。第二个整数表示value在其所属的layer的values列表的中索引号。一个要素的所有key索引必须唯一,以保证要素中没有重复的属性项。每个要素的tag字段必须为偶数。要素中的tag字段包含的key索引号或value索引号必须不能大于或等于相应图层中keys或values列表中的元素数目,如图3所示。

图3 矢量瓦片属性编码规则


2
矢量切片方案

当前,矢量切片工具主要有Mapbox 、GeoServer、ArcGIS Pro等,各种工具运行环境不一,面向对象也各有不同。但矢量瓦片的总体切片技术流程基本一致,首先就是矢量数据的准备,如Shapefile、JSON等数据格式;矢量瓦片的制作,基于各自不同的切片机制进行,但切片原理都遵循矢量四叉树金字塔模型,最终表现为各自矢量瓦片格式包;矢量瓦片的发布工具众多,如SpatialServer、ArcGIS Sever、GeoServer,都是成熟的矢量瓦片发布工具,客户端基于WebGL进行矢量地图的渲染显示,总体技术流程如图4所示。

图4 矢量瓦片切片技术流程

2.1 Mapbox Studio

Mapbox Studio[17]是Mapbox推出的矢量地图制作和发布的工具,提供标准的专业化制图方案。Mapbox目前在线提供6种风格底图满足不同的场景需求;但Mapbox Studio是一个线上工具,即对于发布自己的地图数据,需要注册用户、购买空间并将数据上传到Mapbox,采用Mapbox在线配图工具配置自己的地图。

2.2 GeoServer

GeoServer[18]是OpenGIS Web 服务器规范的开源GIS服务器,可以对包括矢量数据在内的各类OGC标准GIS数据进行缓存切片和服务发布。作为完全开源的GIS服务器,无论是栅格还是矢量,GeoServer都可以很好的支持。

2.3 ArcGIS Pro

ArcGIS Pro[19]作为ESRI新推出的桌面端制图软件,支持矢量配图和切片,而且ArcGIS Pro矢量瓦片方案已经基本达到电子地图栅格瓦片显示效果。不同于Mapbox Studio和GeoServer矢量瓦片的PBF格式,ArcGIS Pro推出紧凑型缓存的存储格式bundle,相比PBF,瓦片迁移更加方便、创建更快、减少存储空间,便于局部区域更新的实现。


3
方案对比

各种矢量切片方案都有各自的应用场景和适用对象,本文从自定义矢量制图、切片环境、切片机制3个角度进行对比分析。实验采用的数据为青岛市全域电子地图。测试环境为ThinkPad T480笔记本电脑,操作系统是Win10,CPU为I5-8250U@1.6 GHz,32 GB内存,采用NVIDIA Geforce MX150显卡。

3.1 自定义矢量制图

GeoServer的自定义矢量配图没有任何的配置文件可供参考,相对难度较高。Mapbox Studio在线提供众多成熟的字体、图标、风格等样式文件,可以供开发者很好的参考,在自定义过程中可以减少很多标准配置的问题。ArcGIS Pro相对成熟,提供成熟的样式风格文件作参考,在自定义过程中有章可循。

3.2 切片环境

Mapbox Studio是在线工具,因此需要互联网的支持,离线环境下不能使用;GeoServer提供开源包,可以部署离线B/S运行环境;ArcGIS Pro是ESRI新一代桌面端软件,同样可以在离线环境下运行。

3.3 切片机制

在处理矢量化数据时,记录中往往会存在许多重复数据,对进一步数据处理带来诸多不便。多余的数据,一方面浪费了较多的存储空间;另一方面造成所要表达的图形不光滑或不符合标准。为保证数据压缩和性能优化的问题,需要进行数据的抽稀,保证反映原图形或曲线的基本形状特征同时,能够为进一步的处理节省空间和时间。

对于GeoServer,在小比例尺阶段需要进行数据抽稀,但抽稀过程中由于相邻数据抽稀规则不完全一致,导致面状数据出现拓扑混乱,最终部分级别显示效果较乱。同样,在较大比例尺阶段,很多数据要素已经达到饱和,不再需要抽稀,但GeoServer依旧会生成同上一级一样的未抽稀的矢量瓦片数据,最终导致数据量很大。

ArcGIS Pro矢量切片采取相对智能的策略,不会根据地图显示级别一切到底,比如0~19级别地图,由于15级数据已近似没有数据抽稀的情况,能够支撑后面更大比例尺地图显示需要,这样16~19级数据无须再进行抽稀。这种策略可以大幅减少地图瓦片包的容量,但要求调图客户端同样支持这种策略,在ArcGIS for JavaScript API系列版本中,目前只有最新版本4.x系列适应这种策略。

因Mapbox Studio需要联网上传数据,因数据精度较高、数据保密性等原因没有开展该项测试。

实验中,对青岛市全域矢量电子地图分别使用GeoServer、ArcGIS Pro进行矢量切片,切片级别为0~19级,各级别比例设置及切片各级别大小、所需时间如表2所示。

表2 切片级别及结果一览表

实验切片缓存大小结果对比如图5所示,横轴表示切片级别,纵轴表示总切片大小,由于抽稀策略的不同,发现ArcGIS Pro切出的青岛市全域矢量切片包只有200 MB;使用GeoServer的矢量切片包约是1.8 GB,GeoServer矢量切片保留了原始数据的所有属性信息,因此导致数据冗余度高,矢量瓦片包较大。切片时间对比如图6所示,横轴表示切片级别,纵轴表示每级切片时间,由于GeoServer的每级缓存包更大,因此在切片时间上也相对较长。

图5 不同方案切片缓存大小对比结果

图6 不同方案切片时间对比结果

综上所述,受不同的切片机制的影响,不同切片方案的差别主要表现在矢量切片包大小、数据抽稀、数据属性3个方面,具体如表3所示。

表3 切片机制对比结果


4
跨平台应用

通过上述实验可以看出,相比栅格电子地图瓦片,矢量切片方案可以大大提高切片效率,上述3种矢量切片方案各有其局限性和应用场景,比如MapBox仅支持互联网环境、GeoServer配置复杂优化不足、ArcGIS Pro需要ArcGIS企业版发布等。在实际应用中,一般来说每个平台软件自带客户端API都支持各自矢量瓦片访问规则。为实现客户端API兼容其他瓦片格式从而达到矢量地图瓦片跨平台应用,常规解决办法是客户端自行扩展API,比如开源地图引擎Leaflet.JS即通过定制API方式实现了对MapBox和ESRI矢量瓦片的调用。但该种方式需要客户端开发人员充分了解每种瓦片的编码规则,且给客户端开发造成额外工作量,提升了客户端复杂度。

本文研究过程中尝试了另一种思路解决了矢量瓦片跨平台应用,即在不改变矢量瓦片原始存储和服务规则的情况下,通过自定义微服务网关的方式实现多套矢量瓦片服务对应多客户端调用需求。

4.1 实现思路与过程

采用PBF格式的矢量瓦片服务规则稍有差别,以ESRI和MapBox矢量瓦片为例,两者矢量瓦片访问样式[0]分别为:

https://{address}/{version}/arcgis/rest/services/{servicename}/VectorTileServer/tile/{z}/{y}/{x}.pbf

https://{address}/{version}/{servicename}/{z}/{x}/{y}.vector.pbf

除矢量瓦片服务器基本路径规则外行列号也相反,为实现服务兼容性,本文开发了微服务网关接收不同客户端访问样式,并在后台进行转换成另一种样式后向实际瓦片服务器发送请求获取实际数据后再转发给客户端。如图7所示,实现服务-数据请求,从1对1到n对n的转变。

图7 跨平台服务调用流程图

4.2 应用效果与局限

通过微服务网关中转方式,从原客户端到服务器1对1的请求与响应变成了多对多的请求相应,从而实现了不需客户端做任何调整的真正跨平台的矢量瓦片调用。但该种方式目前仅实现了PBF格式的转发,如进一步实现JSON、TopoJSON、PBF多种数据格式的转发尚需进一步开发数据底层编码的转换方法,对服务器端运算资源是一笔不小的开销。


5
结束语

虽然栅格瓦片仍有其不可忽视的优势,但随着互联网和移动GIS的发展,矢量瓦片已渐渐成为GIS应用和地图可视化的主流;高效的切片和快速应用是GIS发展的趋势。本文对矢量切片的原理进行了深入分析,并从自定义切图、切片环境、切片机制等角度重点对比分析了Mapbox Studio、GeoServer、ArcGIS Pro 3个主流矢量切片工具的异同,提出了跨平台应用方法。不足之处,本文对于3个方案的交叉研究不够深入,如基于GeoServer发布工具 + Mapbox-gl-js API前端渲染,彻底实现离线化的研究,还有待于进一步突破。

参考文献(略)


END


作者简介:胡振彪(1979—),男,河北故城人,高级工程师,硕士,主要研究方向为智慧城市时空信息大数据平台系统架构、平台服务和大数据分析。

E-mail:hzb@qdkcy.com.cn

引用格式:胡振彪,赵军,韩磊,等.矢量电子地图瓦片制作性能评估与应用[J].测绘科学,2020,45(2):138-144,165.(HU Zhenbiao,ZHAO Jun,HAN Lei,et al.Performance evaluation and application of vector web map tiles[J]. Science of Surveying and Mapping,2020,45(2):138-144,165.)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表