孙 璐,陈 荦,刘 露,苏德国
(1.国防科学技术大学电子科学与工程学院, 湖南 长沙 410073;2.中国测绘科学研究院,北京 100830)
一种面向服务器制图可视化的矢量数据多尺度组织方法*
孙 璐1,陈 荦1,刘 露1,苏德国2
(1.国防科学技术大学电子科学与工程学院, 湖南 长沙 410073;2.中国测绘科学研究院,北京 100830)
提出了一种面向服务器制图可视化的矢量数据多尺度组织方法。基于矢量数据瓦片化思想,将矢量数据按照全球地理空间金字塔索引模型划分为层次化瓦片数据,将服务器制图可视化处理中对数据图层的空间查询操作,转化为对瓦片数据的数据读取操作。实验及应用表明,该方法减少了数据读取时间,降低了I/O代价,提高了矢量数据服务器制图可视化的整体性能。
矢量数据;多尺度;制图可视化;球面墨卡托;矢量瓦片
由于传统基于个人电脑的地理信息系统GIS(Geographic Information System)平台难以处理数据量日益庞大、结构日益复杂的各类地理空间信息,越来越多的地理空间信息管理与处理应用开始采用服务器集群体系架构来构建[1~3]。其中,基于高性能服务器集群的地理空间数据制图可视化是面向服务器架构的GIS三个核心功能——数据管理、空间分析和制图可视化——之一,也是该领域当前的研究热点。目前,主流的服务器地理信息应用系统通常采用预渲染的方式提前将地图绘制好以提供浏览服务,这种模式由于提供的是只读性质的地图,而难以满足用户在线交互制图的需求。
当前实现在线交互制图的主流解决方案是:对包含修改内容的图层数据进行全部重新绘制,然后与其它图层数据重新进行融合渲染,再返回用户。对该机制进行分析,可知其性能在大用户并发情况下难以满足应用需求,主要原因是:当用户进行交互制图作业时,客户端将与服务器开展大量交互(例如修改样式),服务器将反复读取相同数据进行不同样式的绘制,并进行频繁查询处理操作,从而消耗大量资源,导致系统响应变慢,服务质量下降。尤其当操作大规模矢量数据时,密集的查询操作将导致磁盘长时间处于高负荷状态。在高并发条件下,会导致服务器负载过重,甚至失去响应。
上述问题的根源在于服务器数据绘制需要多次执行复杂度高的空间查询操作,而其中相当数量的操作属于重复操作,应当予以避免。为此,作者提出根据空间瓦片模型对用户绘制的空间范围进行划分,将被绘制的矢量数据根据瓦片划分模式进行重组,形成矢量瓦片模型;当被绘制区域首次绘制时,将生成矢量瓦片数据并予以缓存;当被绘制区域重复绘制时,只需读取对应矢量瓦片数据进行处理,从而减少了大量空间查询处理操作,提高交互制图性能。
2.1 全球空间瓦片模型
全球空间瓦片模型是当前使用最广泛的空间数据多尺度(多分辨率)组织模型[4]。该模型的主要原理是:对全球空间进行不同尺度的划分,每个尺度上的划分都将形成一系列彼此相接的空间瓦片区域(以下简称瓦片),这些瓦片将无缝地覆盖全球空间;对于同一空间区域,相邻尺度上瓦片的空间几何特征(例如长度、宽度、空间范围等)是可以通过递推计算得到的。将上述瓦片集合按照划分尺度大小的顺序组织起来,即成为对全球空间描述的多尺度模型。按照尺度由大到小排列,瓦片数目规模成等比级数增长,状若金字塔,因此全球瓦片模型也称为金字塔模型。
构建全球瓦片模型需要明确两个问题,一是如何建立全球划分的基础空间。当前的主要做法是将全球空间通过某种空间投影转换到平面上,形成平面连续的全球空间范围。二是如何在全球空间上进行多尺度划分。当前的主要做法是基于四叉树结构对全球空间进行多尺度递推划分[5]。
目前使用较广泛的全球空间瓦片模型主要有两种:基于球面墨卡托投影构建四叉树结构的瓦片金字塔和基于等距圆柱投影构建双四叉树结构的瓦片金字塔。
球面墨卡托投影把地球看作正球体[6],地球半径取R=6 378 137m,赤道周长为2πR=2×20 037 508.342 789m。该投影将赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负,经线和经线之间相互平行且间隔相等,坐标范围为±20 037 508.342 789m,对应地理坐标为±180°,纬线和纬线之间相互平行,间隔从赤道向两级逐渐增大,坐标范围也是±20 037 508.342 789m,对应地理坐标±85.05°。该投影未包括南北两极的部分区域,整幅地图呈正方形[7]。该模型基于四叉树结构将投影后得到的区域进行层次划分,划分方法是:第0层包含一个瓦片,空间范围为全球,假设该瓦片像素尺寸为256×256,则第0层瓦片的像素分辨率为156 543.033 9m;设第i层(i>1)的瓦片像素分辨率为Ri,则按照四叉树结构,Ri=Ri-1/2,即高层中每一块都将被分为四块;定义左上角为瓦片编号原点。如图1所示为该方法划分模型。
Figure 1 Dissection model of tile based on quadtree structure图1 基于四叉树结构的瓦片划分模型
依据上述方法构建的瓦片金字塔,可以根据层数(z)、行号(x)、列号(y)三个参数以及瓦片像素尺寸和投影参数确定转换公式,计算出瓦片所表示的空间范围,也可以根据层数和空间坐标对瓦片进行定位。这种构建方法可以对全球范围内的数据进行统一组织和管理,而不需要针对特定数据构建瓦片金字塔,可以方便地实现多个地图数据的叠加操作。
等距圆柱投影则是将全球空间范围投影成一个长宽比为2的矩形,进行空间划分时,如将瓦片形状取正方形,则需要对东西半球分别按四叉树模型构建瓦片金字塔。因其划分后数据量比基于球面墨卡托投影划分的瓦片金字塔大,其使用没有基于球面墨卡托投影划分的金字塔模型范围广。
两种投影方式都可以将全球空间范围投影成一个平面,利用四叉树结构建立瓦片金字塔,提高访问效率。
2.2 矢量瓦片
传统的地图瓦片技术将数据进行渲染绘制后生成图片格式的瓦片,客户端接收到的瓦片中不包含数据内容。Antoniou V等[8]提出了一种将矢量数据瓦片化应用于网络高效传输矢量数据的方法,该方法将需要用于传输的矢量数据根据一定规则划分成若干个小数据单元进行传输,各个数据单元的传输相互独立,这样的矢量数据单元称之为矢量瓦片。
受该思路启发,本文提出将被操作的大规模矢量数据根据全球空间瓦片划分模型进行瓦片化划分,并将划分后的数据进行存储,形成一系列规模较小的矢量瓦片数据,然后利用这些矢量瓦片数据参与渲染绘制,以减少复杂的空间查询代价。
基于矢量瓦片的矢量数据多尺度组织模型借鉴了矢量瓦片在处理矢量数据中相互独立的特点,根据瓦片金字塔构建的索引及其使用的投影,计算出瓦片的空间范围,并从原始数据中通过空间查询得到要素集合,生成矢量瓦片进行数据多尺度组织。
3.1 数据组织
通过基于球面墨卡托投影构建的全球空间瓦片模型可以实现全球多尺度空间数据索引与组织的一体化集成,实现数据的快速调度[4]。
但是,在实际应用时,针对不同空间范围的数据全部建立统一的全球金字塔结构不利于数据的快速检索,且会产生大量冗余的空白数据,故该模型只负责建立全球统一的金字塔结构的瓦片索引,各个数据在该索引机制下分别独立地建立局部的子金字塔模型进行数据组织。该子金字塔模型的空间索引是全球空间索引的子集,存储的数据则是局部多尺度空间数据。
由此,进行空间数据检索时,将根据数据的标识找到该数据的子金字塔,再根据索引完成瓦片的查询。
3.2 数据内容
上述模型中的每个矢量瓦片中的数据是被操作矢量数据与瓦片空间范围拓扑相交计算后得到的结果要素集合,每一个集合元素都包含了要素几何特征与描述属性。
矢量瓦片一般用文件进行存储。根据不同解码方案,可以是文本数据文件,也可以是二进制数据文件。在作者参与的科研项目中,采用的有GeoJSON(基于JavaScript对象表示法的地理数据格式)格式[9]、PBF(Protocolbuffer Binary Format)格式[10]和MVT(Mapnik Vector Tiles)格式[11]。
3.3 矢量瓦片的生成
当矢量空间数据参与交互制图操作时,需要对该数据进行瓦片化处理,步骤是:
步骤1根据数据的范围初始化瓦片空间;
步骤2接收交互系统传入的操作参数,如数据空间范围、设备显示范围等;
步骤3通过空间范围和显示范围计算出当前瓦片框架集合,任意瓦片都含有层数、行号、列号等索引信息;
步骤4对任意瓦片通过空间求交操作得到该瓦片要素集合并解码,按照瓦片文件组织方法对应的文件路径保存矢量瓦片文件。
上述生成矢量瓦片金字塔的过程是一个动态过程,服务器会根据用户浏览需要实时按需生成对应瓦片。
3.4 矢量瓦片的数据更新
矢量瓦片模型和文件建立后,瓦片中的数据内容有可能随着系统应用而更新。更新的数据往往是局部区域的。因此,当图层数据产生变化时,只需对与变化区域对应的瓦片数据进行更新即可,不必更新整个矢量瓦片模型。更新步骤如下:
步骤1计算出所有更新数据的空间范围,并标记数据的状态:新增、删除、修改等;
步骤2获取待更新数据的子金字塔已构建的层数;
步骤3对已构建的每一层通过空间范围计算出更新范围所包含的瓦片范围,遍历瓦片内的瓦片数据,根据更新数据标记的状态分别对瓦片中的数据进行更新。
如果数据被删除,那么该数据对应的矢量瓦片金字塔也将被清空。
3.5 多图层矢量瓦片合成
在交互制图过程中,有时需要对多个数据独立进行制图,有时也需要对多个数据组合进行综合制图,两种制图方式的绘制结果是有差异的。前者多个数据的绘制结果以多个数据图层的形式进行简单叠加即可,数据间相互独立;而后者的绘制会根据数据不同的组织方式、不同的组合形式而产生不同的绘制结果,多个数据的矢量瓦片需要整合在一个瓦片中以便绘制。
当用户需要对多个数据合成进行制图时,为保持各数据的独立性,其各自的子金字塔保持不变,系统新构建一个包含所有数据金字塔索引结构的子金字塔,而该新建的子金字塔瓦片中的数据将通过各数据的子金字塔中相同索引的瓦片数据合成一个数据瓦片。
瓦片金字塔的建立,标志着任意瓦片的逻辑索引和矢量数据多尺度组织的逻辑索引的确定。服务器在绘制时,根据瓦片索引直接读取矢量瓦片进行绘制,不再依赖于原始数据。
在交互制图过程中,任意矢量瓦片只在首次请求生成该瓦片时从原始数据进行空间查询操作,而后只要数据本身未做更新,无论多少次请求都将直接使用矢量瓦片中的数据进行绘制。与每次绘制都需要进行空间查询相比,构建矢量瓦片金字塔将提高交互制图时的性能,改善用户体验。尤其是大规模矢量数据的交互制图,空间查询过程非常消耗资源且耗时,矢量瓦片技术的优势将突出体现。
4.1 矢量瓦片提供地图服务实现流程
通过分析瓦片地图的服务模式,得到在建立矢量瓦片金字塔的情况下服务器响应瓦片绘制请求的主要流程如图2所示。其中,地图瓦片是否保存可根据需要进行选择。在交互制图过程中,一般不选择保存地图瓦片。
Figure 2 Workflow of tiled map rendering with vector tile图2 使用矢量瓦片绘制流程
4.2 矢量瓦片提供地图服务请求-响应的代价模型及代价函数
设客户端需要绘制的图层为集合L={l0,l1,…,ln},当前绘制区域的空间范围为BBox(球面墨卡托投影下的地理坐标,单位:m),可视范围为View(绘制设备的像素范围,单位:像素),得到当前可视区域的像素分辨率r=BBox.Width/View.Width,通过r及构建瓦片金字塔时确定的各层像素分辨率,用就近原则得出当前视图瓦片所在的层数z及其对应的像素分辨率Res。得到层数信息后,根据空间范围计算出在当前层命中的瓦片行列的范围[x1,x2]×[y1,y2],计算公式为:
其中Ti(z,xp,yq)代表图层li在第z层、第p行、第q列的瓦片,那么客户端请求的瓦片集合为:
设代价函数Cost(i,z,p,q)代表服务器响应瓦片Ti(z,xp,yq)所需的时间,则代价函数为:
Cost(i,z,p,q)=Read(i,z,p,q)+
Draw(i,z,p,q)+Transmit(i,z,p,q)
其中,Read(i,z,p,q)代表读取瓦片Ti(z,xp,yq)数据消耗的时间,Draw(i,z,p,q)代表绘制瓦片Ti(z,xp,yq)消耗的时间,Transmit(i,z,p,q)代表网络传输消耗的时间(包括发送请求的时间和返回绘制结果的时间)。那么,当前绘制请求消耗的总时间为:
4.3 代价分析
在相同的网络环境以及相同的客户端、服务器等软、硬件条件下,在是否构建矢量瓦片金字塔的情况下,服务器在处理瓦片Ti(z,xp,yq)的请求时,二者在Draw(i,z,p,q)与Transmit(i,z,p,q)的差异基本可以忽略不计,其主要的差异存在于函数Read(i,z,p,q)所代表的读取数据时间。如已构建矢量瓦片金字塔,则绘制任务可以根据瓦片索引快速读取数据进行绘制,反之,则需要根据空间范围进行空间查询,从原始数据获取数据。故函数Read(i,z,p,q)所消耗的时间将决定二者性能上的差异。
5.1 实验环境
服务器集群含数据库服务器和制图服务器。数据库服务器的配置是:双IntelXeon四核处理器、16GB内存、RedHatEnterpriseLinux5.5操作系统,使用PostgreSQL数据库存储矢量空间数据,挂接磁盘阵列,容量为12TB,文件系统是NFS。制图服务器的配置是:双IntelXeon六核处理器、32GB内存、RedHatEnterpriseLinux6操作系统,与数据库服务器共享磁盘阵列存储系统。数据库服务器主要实现矢量空间数据存储和访问功能;制图服务器主要实现矢量瓦片生成、瓦片数据绘制、矢量瓦片提取与访问等功能。瓦片存储在磁盘阵列存储系统中。各服务器由万兆以太网交换机连接。
5.2 实验数据及实验方法
实验所用数据为:(1)从OpenStreetMap[12]下载的中国道路数据,包含487 240个线要素,如图3a所示;(2)从OpenStreetMap下载的德国行政区划数据,包含61 683个面要素,如图3b所示。
Figure 3 Experimental data图3 实验数据
实验数据导入数据库后,按照本文提出的方法实时构造交互制图区域的矢量瓦片,然后分别从对应的矢量瓦片结构的第4~11层中各选取一个瓦片作为该层的实验样本,样本信息见表1和表2。
Table 1 Sample tile information of data(1)表1 数据(1)选取的瓦片样本信息
Table 2 Sample tile information of data(2)表2 数据(2)选取的瓦片样本信息
其中表(1)为数据1选取的瓦片样本信息,表2为数据(2)选取的瓦片样本信息。
为了进行对比,采用两种渲染方式:(1)直接从数据库中读取交互制图区的矢量数据进行渲染;(2)从构建好的矢量瓦片结构中读取交互制图区的矢量数据进行渲染。记录和对比两种方式下服务器进行渲染操作的数据读取时间。为减少实验过程中网络及磁盘状态的随机误差,将重复10次的读取时间的平均值作为实验结果进行分析。
5.3 实验结果
得到的实验结果分别如表3和表4所示。
Table 3 Experimental results of data (1)表3 数据(1)实验结果
Table 4 Experimental results of data (2)表4 数据(2)实验结果
从表3实验结果可看出,方式(2)的数据读取时间远小于方式(1)的数据读取时间,带来了交互制图性能的大幅提高。
从表4的实验结果可看出,使用矢量瓦片存储数据用于绘制仍然可以明显减少读取数据时间,但随着数据量的减少,加速效率下降比较明显。因此,实验结果表明,本文提出的方法在大规模矢量数据在线交互制图时更为适用。
本文提出的基于矢量瓦片的矢量数据多尺度组织方法已经在面向集群服务器的高性能地理信息系统HiGIS[13]中得到了初步的应用,如图4所示即为本文实验所使用的OpenStreetMap中国道路数据使用矢量瓦片在HiGIS中渲染绘制的结果。
Figure 4 Rendering result of experimental data in HiGIS图4 实验数据在HiGIS中的渲染结果
本文深入分析了当前主流的在线地图服务模型,针对地图瓦片在交互制图过程中出现的弊端,在数据层面上对瓦片进行缓存,使用存储矢量数据的矢量瓦片进行交互制图。实验结果表明,使用矢量瓦片进行数据绘制可大幅减少获取数据时间,从而提高服务器提供在线交互制图服务的性能。
尽管使用矢量瓦片可以加快获取绘制数据的速度,但其在实际应用中仍有较多的改进空间:
(1)瓦片生成过程中,要素解码操作消耗的时间较多,导致其首次绘制的性能低于不使用瓦片,可考虑首次绘制时直接使用数据绘制,后台进行解码生成矢量瓦片;
(2)可以考虑并实现要素解码操作的并行化;
(3)可以考虑,在生成矢量瓦片的过程中,有条件地使用要素简化相关算法,减少瓦片的数据量;
(4)绘制矢量大规模数据时,可以考虑将矢量瓦片存储于并行文件系统,使用并行绘制程序绘制瓦片,提高绘制速度;
(5)如果应用于数据量较小的数据,将产生较多无矢量要素的空白瓦片,需要研究合理处理空白瓦片的方法。
[1] Yang Chong-jun, Wang Yu-xiang, Wang Xing-ling, et al. Review of the main technologies of WebGIS[J]. Journal of Image and Graphics, 2001, 6(9):886-894.(in Chinese)
[2] Gong Jian-ya. Review of the progress in contemporary GIS[J]. Geomatics & Spatial Information Technology, 2004, 27(1):5-11.(in Chinese)
[3] Deng Hong-yan,Wu Fang,Wang Zhuo-ning,et al. Research on spatial information service based on web service[J]. Computer Engineering and Design, 2006, 27(23):4450-4452.(in Chinese)
[4] Chen Jing, Gong Jian-ya, Xiang Long-gang. Research on global multi-scales spatial data model[J]. Geomatics World, 2011, 8(4):24-27.(in Chinese)
[5] Liu Lu. Research on distributed management technology of global mass remote sensing image data[D]. Changsha:National University of Defense Technology, 2007.(in Chinese)
[6] Sun Da, Pu Ying-xia. Map projection[M]. Nanjing:Publishing House of Nanjing University, 2005.(in Chinese)
[7] Xu Hui, Ma Xiao-peng. Geographic information system design and implementation based on Web Mercator projection[J]. Database and Information Management, 2011(8):41-43.(in Chinese)
[8] Antoniou V, Morley J, Haklay M. Tiled vectors:A method for vector transmission over the web[C]∥Proc of Web and Wireless Geographical Information Systems, 2009:56-71.
[9] Howard Butler, Martin Daly, Allan Doyle, et.al. The GeoJSON format specification[EB/OL]. [2008-02-08]. http:∥www.geojson.org/geojson-spec.html.
[10] PBF format[EB/OL].[2012-03-15]. http:∥wiki.openstreetmap.org/wiki/PBF_Format.
[11] Mapnik Vector Tiles[EB/OL].[2012-03-15]. http:∥openstreetmap.us/~migurski/vector-datasource/.
[12] OpenStreetMap[EB/OL]. [2012-03-15]. http:∥www.openstreetmap.org.
[13] Liu Lu, Yang An-ran, Chen Luo, et al. HiGIS - When GIS meets HPC[C]∥Proc of the 12th International Conference on GeoComputation, 2013:1.
附中文参考文献:
[1] 杨崇俊, 王宇翔, 王兴玲,等. 万维网地理信息系统发展及前景[J]. 中国图象图形学报, 2001, 6(9):886-894.
[2] 龚健雅. 当代地理信息系统进展综述[J]. 测绘与空间地理信息, 2004, 27(1):5-11.
[3] 邓红艳, 武芳, 王卓苧,等. 基于Web Service的空间信息服务研究[J]. 计算机工程与设计, 2006, 27(23):4450-4452.
[4] 陈静, 龚健雅, 向隆刚. 全球多尺度空间数据模型研究[J]. 地理信息世界, 2011, 8(4):24-27.
[5] 刘露. 全球海量遥感影像数据的分布式管理技术研究[D]. 长沙:国防科学技术大学, 2007.
[6] 孙达, 蒲英霞. 地图投影[M]. 南京:南京大学出版社, 2005.
[7] 许辉, 马晓鹏. 基于Web墨卡托投影地理信息系统设计与实现[J]. 数据库与信息管理, 2011(8):41-43.
SUNLu,born in 1989,MS candidate,his research interest includes visualization of geospatial data.
陈荦(1973-),男,上海人,博士,教授,CCF会员(E200005291M),研究方向为地理空间信息处理。E-mail:luochen@nudt.edu.cn
CHENLuo,born in 1973,PhD,professor,CCF member(E200005291M),his research interest includes geospatial information processing.
刘露(1982-),男,天津人,博士,讲师,CCF会员(E200023797M),研究方向为地理信息系统和智能交通系统。E-mail:luliu@nudt.edu.cn
LIULu,born in 1982,PhD,lecturer,CCF member(E200023797M),his research interests include geographic information system, and intelligent transportation system.
苏德国(1977-),男,山东潍坊人,博士,副研究员,研究方向为地理信息技术。E-mail:sudeguo@nrscc.gov.cn
SUDe-guo,born in 1977,PhD,associate research fellow,his research interest includes geographic information technology.
Amulti-scalemanagementmethodforvisualizationofvectordataonservercluster
SUN Lu1,CHEN Luo1,LIU Lu1,SU De-guo2
(1.College of Electronic Science and Engineering,National University of Defense Technology,Changsha 410073;2.Chinese Academy of Surveying and Mapping,Beijing 100830,China)
A multi-scale management method for visualization of geographic vector data on server cluster is proposed. Based on the idea of vector data tiling, a global tile-pyramid index model is established. Then, the vector dataset is divided into individual vector tiles according to the index structure. When rendering tiles on servers, the tiled dataset acts as the feature data source so as to avoid doing spatial query on the raw dataset on the fly. Experimental results indicate that the proposed method can reduce the time of data preparation and the cost of I/O when rendering a tile image, and consequently promote the performance of geographic vector data visualization.
vector data;multi-scale;visualization;spherical Mercator;vector tile
2013-07-08;
:2013-09-13
国家863计划资助项目(2011AA120305,2011AA120306)
1007-130X(2014)02-0226-07
TP311
:A
10.3969/j.issn.1007-130X.2014.02.007
孙璐(1989-),男,浙江义乌人,硕士生,研究方向为地理空间数据可视化。E-mail:sunlu825007@163.com
通信地址:410073 湖南省长沙市国防科学技术大学电子科学与工程学院Address:College of Electronic Science and Engineering,National University of Defense Technology,Changsha 410073,Hunan,P.R.China