一种矢量瓦片地图离线部署与架构

来源:优秀文章 发布时间:2023-03-01 点击:

王海斌

(济南市勘察测绘研究院, 山东 济南 250000)

首届联合国世界地理信息大会指出人类活动80%的信息与地理位置有关。地图作为信息传递和空间呈现的重要载体,已经成为人类工作、学习和生活不可缺少的科学语言和工具[1]。随着信息与通信技术(information and communications technology,ICT)的发展,地理信息系统(geographic information system,GIS)应用的迅速扩展,在当前应用场景多元化的趋势下,对地图的可视化表达提出了新的更高要求[2]。得益于网络三维绘图技术(web graphics library,WebGL)的发展,为终端用户构建实时三维图形和场景提供了支撑[3],三维GIS应用迅速发展,周瑜琦等在三维GIS场景下对古生物的时空演变历程进行了可视化[4]。罗梦佳、蔡周平、刘永轩利用三维GIS技术在智慧园区、智慧社区、三维校园中进行了研究和实践[5-7]。李小敏、李佳俊将三维GIS应用到城市规划和街区微更新中[8-9]。与此同时,矢量瓦片地图也开展了工程应用实践,与栅格瓦片相比,矢量瓦片具有数据轻量、高清显示、快速渲染、高效更新、一源多样、交互性强、无插件实现二三维一体化等诸多优点[10],为海量空间数据可视化提供了有效的方案,应用前景广泛。目前国内外商业GIS引擎均已具备矢量切片地图。目前,学者们围绕数据组织、存储、检索展开了大量研究:李少杰等研发了跨平台高性能地图渲染引擎[11];俞丽君等对如何提升矢量瓦片数据源的检索效率进行了研究,并提出了一种基于改进网格与递归网格排序R-树的混合索引结构[12];聂沛等提出了一种基于Spark并行计算框架的矢量瓦片并行生成和分布式存储的方法[13];王梅欣开展了利用分布式计算进行矢量瓦片数据生产和发布应用的研究[14]。在利用集群结构辅助提升系统性能方面,文献[15-18]分别利用分布式、集群技术在倾斜摄影建模、水资源管理信息系统、发电集群规划系统、气象数据收发系统中进行了应用,姚闯开展了基于高性能集群架构的地理信息系统架构设计研究[19]。基于矢量切片地图应用框架的离线部署和集群架构方面,还未见有公开研究成果。

针对商用GIS平台软件价格高、限制矢量切片地图技术应用范围的弊端,本文围绕构建支持集群架构的矢量切片地图架构展开,重点对矢量瓦片数据模型、生产、发布、渲染、应用进行了研究,设计了一种基于开源项目的支持大范围、高性能、多并发、可动态伸缩扩展的技术框架,并实现了框架资源的离线部署,摆脱了请求在线资源的束缚,满足非互联网环境中的应用需要。最后,利用自然资源部公开和济南市地理信息数据对本文提出的技术路线进行了验证和性能分析。

矢量瓦片地图是基于WebGL在客户端对矢量数据的描述文件进行渲染。首先将矢量数据的几何信息和属性信息分割为一组矢量瓦片存储在服务器端,客户端根据地图显示范围和样式文件定义的数据源通过分布式网络获取矢量瓦片、地图标注字体、图标等数据源,然后根据样式文件定义的地图表达规则,在终端设备即时渲染出地图,无须预先渲染为栅格图片(表1)。

表1 矢量切片与栅格切片优劣势

1.1 Mapbox矢量瓦片数据组织

Mapbox的矢量瓦片基于Google混合语言数据标准(Google protocol buffers),是一个开源矢量瓦片数据标准,也是目前较为通用的矢量瓦片数据标准,已被多个公司和组织采用。矢量瓦片文件表示的是投影在正方形区块上的数据。瓦片自身不包含范围和投影坐标系信息,编码中包含的是图层(组)内的元数据信息、几何要素和属性信息。

1.1.1几何信息存储

矢量瓦片内存储的数据是相对坐标,并不是真实的地理坐标。其集合数据采用屏幕坐标系。几何图形被编码为要素的几何字段的一个32位无符号型整数序列。几何图形中的坐标均为整数。每个整数是指令数(CommandInteger)或参数数(ParameterInteger)。以点1(2,2)、点2(7,4)、点3(11,14),点4(4,12)为例展示面状图形的绘制过程(图1)。

图1 几何信息编码规则(以面对象为例)

1.1.2属性信息编码

要素属性被编码为标签字段中的一对整数。在每对标签中,第一个整数表示关键字在其所属的图层的关键字列表的中索引号(以0开始)。第二个整数表示的值在其所属的图层的值列表的中索引号(以0开始)。一个要素的所有关键字索引唯一。每个要素的标签字段必须为偶数。要素中的标签字段包含的关键字索引号或值索引号必须不能大于或等于相应图层中关键字或值列表中的元素数目。

1.2 矢量瓦片地图渲染

矢量瓦片地图以矢量瓦片数据为渲染对象,基于遵循三维绘图协议的引擎,实现在用户终端的地图完整呈现和无级缩放、旋转、倾斜、空间量测、分层管理、属性查询等交互。

1.2.1WebGL绘图

WebGL是一种面向网络应用、跨平台、免费的、即时图形绘制底层技术协议,基于脚本(JavaScript)语言,增加了三维图形接口(OpenGL for embedded systems,OpenGL ES)绑定,可以直接使用指令操作显卡,使显卡渲染的图形在浏览器中显示(图2)。

图2 WebGL绘图过程

1.2.2矢量切片地图呈现

基于地图渲染引擎,使用WebGL渲染交互式矢量瓦片地图,通过对矢量瓦片数据加载和解析,高效地渲染大量的地图要素,拥有流畅的交互以及动画效果、可以基于地图样式文件显示地图并且支持多终端。

矢量瓦片地图的应用路线可根据是否生成缓存分为两种。第一种:预生成缓存,基于数据预先构建数据索引、生成瓦片缓存,根据用户请求将对应空间上的切片缓存传输到终端,借助WebGL绘制显示。第二种:基于空间数据,通过服务端直读数据库,根据用户请求,借助数据库空间计算函数,实时动态地将矢量瓦片数据返回到用户终端,最终同样借助WebGL绘制显示。这两种技术路线各有优势和适用的场景,针对基础地图应用,目前支持矢量切片地图的主流GIS平台,均采用预生成瓦片缓存的路线,本文采用预生成缓存的技术实现方式,以支持集群部署和本地化部署作为技术路线研究中的关键。

2.1 技术路线设计

按照数据存储、服务发布、地图呈现三个步骤,在数据存储上选择开源的PostgreSQL数据库,在空间扩展插件(PostGIS)的支持下完成空间数据的存储,且能够满足集群部署的要求。在GIS引擎上,利用GeoServer进行矢量瓦片的生成和发布,同时兼顾支持集群部署的要求。在地图呈现上,基于Mapbox GL JS API在终端绘制(图3)。

图3 矢量瓦片地图应用技术路线

2.2 离线部署设计

本文技术路线中的数据库、GIS引擎均可通过本地部署安装的方式,实现无在线资源依赖、独立的安装。①从github上下载mapbox gl js源码,安装工程依赖,并根据应用需要完成源码的修改,然后手动编译项目,将生成的类库文件利用Web容器进行发布使用,也可通过引用静态文件的方式在工程中进行使用。②Mapbox采用精灵图标(Sprite图标),有效减少了地图渲染中的图标资源的请求次数,提升渲染效率。通过开发精灵图标生成工具,将适用于不同地图风格的图标组合并成完整的图标。同时针对矢量地图在移动终端的显示要求,需要将运行于PC端的单个图标放大2倍,并在文件名中添加@2x标识。利用Web容器将图标进行网络发布,在工程项目中引入绝对路径进行使用。③Mapbox使用*.pbf格式的分片字体,解决了请求单个大字体文件带来的加载效率低下、服务端和客户端压力过大的问题。字体文件制作采用Mapbox官方公开的字体转换工具进行格式转换,转换后基于Web容器进行网络发布,在工程项目中引入发布的字体资源进行使用。

2.3 集群部署架构

利用集群部署的方式提升应用框架的性能和可靠性。数据库、GIS引擎、前端等集群设计如图4所示。

(1)数据库采用负载均衡和高可用两种集群技术方法保证PostgreSQL的高可用性。基于PostgreSQL主从部署架构,采取高可用集群的设计理念实现数据库的高可用,负载均衡(Load balancing)和自动故障转移(automatic failover)利用中间件(Pgpool-II)完成。

(2)GIS引擎集群利用消息中间件(ActiveMQ)搭建GeoServer负载均衡集群,实现主/从(master/slave)的通信和同步,其节点的数量总数可与Pg集群中节点总数保持一致或成倍数提升,以保证各集群节点间的对应比例。同时,集群可以横向复制扩展,以支撑更多连接节点的访问需要。

(3)前端各节点之间采用共用网络附属存储(network attached storage,NAS)的方法,保证Mapbox GL JS离线部署资源版本的一致性,利用Nginx作为Web容器,利用Nginx搭建反向代理集群。

图4 集群部署架构设计

按照设计的技术路线,利用PostgreSQL存储原始空间数据,利用GeoServer连接空间数据库进行矢量瓦片生成和发布,基于Vue框架开发矢量瓦片地图的前端呈现系统,对本文的设计的技术路线和离线部署进行了实现和验证。

3.1 技术设计

整体技术路线包含空间数据存储、矢量切片服务发布、矢量切片地图渲染三部分。

3.1.1数据存储

基于空间地理数据插件PostGIS扩展PostgreSQL的空间数据存储能力。将通用的空间数据格式转换到*.shp格式。①基于PostgreSQL创建空间数据库;
②对数据进行统一的坐标系和字符编码转换;
③数据入库,并对数据进行检查验证。

3.1.2服务发布

利用GeoServer支持矢量瓦片服务的能力,基于PostgreSQL提供的空间数据源,进行发布。①安装GeoServer和矢量瓦片插件(vector tiles-plugin);
②建立工作区,连接PostgreSQL空间数据库,作为数据源;
③添加数据源中的数据表作为图层数据,并设定网格尺寸集、坐标系、切片格式进行资源发布。

3.1.3地图渲染

基于GeoServer发布的矢量切片服务,利用地图表达配图工具生成地图样式文件,在前端应用工程中引入离线部署的资源,并引入地图样式文件,实现矢量切片地图的展示。

3.2 数据与应用测试

基于计算资源,利用地理信息数据资源对文中提出的技术框架性能进行验证和测试,并对结果进行简要分析。

3.2.1实验数据

本文以国家基础地理信息中心公开的全国范围内1∶100万和1∶25万的分幅数据和济南市范围内1∶1万、1∶2000、1∶500数据作为实验数据,数据总量为12.72 GB,数据总条数1264.83万。

3.2.2实验环境

本文利用5台服务器、3台客户端电脑搭建了性能测试环境(表2),测试了L6-L21级别的矢量瓦片在服务端动态生成、前端渲染环节的性能。

3.2.3结果分析

在矢量瓦片生成测试方面,通过模拟发送请求,监测服务端请求返回时间和成功率的方式实现。性能及分析如下:①在实验服务器配置下,仅依靠单组数据库中的主节点,可有效支撑300并发,开放数据库从节点的读取权限后,能够支撑不低于400的并发;
②在测试的数据范围内,L12-L15级别的瓦片生成速度,略低于其余层级,济南市域范围内的矢量切片响应效率略低,初步判断是因济南市范围数据比例尺高,单个切片数据量大造成;③初次访问矢量瓦片的返回时间长于请求已生成的缓存,且初次访问成功率会低于请求已有缓存的方式。

在终端渲染方面,基于实验设备通过监听浏览器中瓦片请求和终端渲染时间的方式评估终端显示性能。在实验的显示设备中,满屏请求的瓦片数量为32到45个,加载和渲染时长因终端的显卡设备而变化,终端显卡性能越好,绘制和响应速度越快,此外网络时延也是影响矢量瓦片显示时间的一个重要因素。

本文利用开源项目,基于分布式和集群的计算架构,搭建了一套高可用的矢量瓦片地图离线部署框架,以适应当下时空数据规模的急剧增长、泛在时空信息服务模式普及对地图应用服务的高性能、高可靠性、可自由定制的要求,满足了矢量切片地图的工程应用需要。此外,本文技术框架基于开源项目搭建,有效降低了应用的成本,提升了在地理信息工程中广泛推广的可行性。

本文尚未在实时、动态矢量切片应用路线方面进行深入研究。同时,本文采用的是基于文件的矢量瓦片缓存机制,尚未利用数据库技术将矢量瓦片缓存进行集约、高效的存储和管理,后期将在这些方面须进行深入研究。此外,对矢量瓦片的终端应用效能分析上仍需进一步投入大量的设备资源,利用控制变量的方法进行深入的测试、验证和分析。

猜你喜欢 瓦片矢量切片 一种适用于高轨空间的GNSS矢量跟踪方案设计北京航空航天大学学报(2021年9期)2021-11-02矢量三角形法的应用中学生数理化·高一版(2021年11期)2021-09-05打水漂扬子江(2021年4期)2021-08-09新局势下5G网络切片技术的强化思考科学与财富(2020年15期)2020-07-04一种基于主题时空价值的服务器端瓦片缓存算法浙江大学学报(理学版)(2020年1期)2020-03-12网络切片标准分析与发展现状移动通信(2019年4期)2019-06-25惯性扬子江(2019年1期)2019-03-08基于矢量最优估计的稳健测向方法现代防御技术(2016年1期)2016-06-01三角形法则在动态平衡问题中的应用新高考·高一物理(2016年1期)2016-03-05肾穿刺组织冷冻切片技术的改进方法中国组织化学与细胞化学杂志(2016年3期)2016-02-27推荐访问:离线 瓦片 矢量
上一篇:双甲脒防治猪疥螨病的试验
下一篇:怀骡母驴妊娠脂血症血清总脂、血象的动态变化规律——一例患驴的临床病理分析

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有