作 者 信 息

应 申1,2,王子豪1,杜志强3,丁火平4, 李翔翔4

(1. 武汉大学 资源与环境科学学院,湖北 武汉 430079;2. 自然资源部城市国土资源监测与仿真重点实验室,广东 深圳 518034;3. 武汉大学 测绘遥感信息工程国家重点实验室,湖北 武汉 430079;4. 航天恒星科技有限公司,北京 100086)

【摘要】针对二维地图矢量瓦片数据量不均衡造成的Web可视化中矢量数据传输、渲染效率低的问题,提出了数据粒度均衡的矢量瓦片构建方法。首先提出了矢量瓦片的粒度定义,并根据粒度均衡划分的约束条件和流畅可视化的帧率要求,给出了单个矢量瓦片粒度大小的计算方法。在k-d树算法的基础上,制定分割线编码规则及其不断继承与更新机制提出“父子”关联且粒度均衡的瓦片构建方法和“回溯剪枝”算法的瓦片调度流程。这种数据粒度均衡的矢量瓦片可实现快速网络数据调度与可视化,以全国矢量数据为例,从矢量瓦片构建耗时、所占存储空间以及Web可视化过程中传输速率、渲染效率等方面验证和评估本文方法的效能。

【关键词】矢量瓦片;粒度均衡;k-d树;“父子”关联

【中图分类号】P208 【文献标识码】A 【文章编号】1672-1586(2020)04-0066-09

引文格式:应 申,王子豪,杜志强,等. 数据粒度均衡的二维矢量瓦片构建方法[J].地理信息世界,2020,27(4):66-74.

正文

0 引 言

随着当今矢量数据获取手段的多样化,矢量数据正朝着大规模方向发展。矢量数据作为时空大数据平台的基础组成部分,其高效、准确的可视化对时空大数据平台建设具有重要的意义。目前大规模矢量数据可视化的主流方法是预先切割并生成金字塔矢量瓦片文件,在可视化过程中通过与视点位置相关的瓦片调度方法实现多分辨率显示。但是,现有的矢量瓦片大多采用等面积或等经纬度的分割方式(即格网法),由于矢量数据空间分布不均衡,导致数据粒度划分的不均衡性,从而造成矢量瓦片构建与可视化过程面临以下3个问题:①由于某些瓦片数据粒度划分过粗造成单张瓦片数据量过大,导致网络传输过程中的阻塞问题,影响了矢量瓦片的高效传输。解决方法中顾及数据稠密的矢量瓦片组织方法通过构建非平衡四叉树索引,可解决单张瓦片数据量过大造成的传输延时问题。但是由于其没有改变基于规则格网的瓦片划分方式,瓦片之间数据量的不均衡导致可视化端解析过程耗时不同,降低了Web端可视化的效率。②由于粒度划分的不均衡性,瓦片解析耗时不均衡,影响浏览器渲染效率。基于k-d树索引模型的稠稀矢量瓦片构建方法,可保证瓦片之间数据量的均等性。但是,其并未顾及不同级别瓦片数据粒度均衡性以及“父子”瓦片的空间关联性,降低了可视化过程中放大缩小操作时瓦片的调度效率。③瓦片总数量多造成的瓦片构建耗时长、存储空间占用大的问题。矢量数据并行切片技术虽在一定程度上缩短了瓦片构建的时间,但并未从根本上解决矢量瓦片数量庞大造成的瓦片构建过程中切片耗时长以及存储空间占用率低的问题。

为此,本文首先提出了矢量瓦片的粒度定义,而后设计并实现了数据粒度均衡的矢量瓦片构建方法。该方法基于数据均衡的二叉树构建矢量瓦片,在单个瓦片大小满足粒度约束的条件下,顾及了各瓦片间数据粒度的均衡性,从而避免了Web可视化端加载大瓦片文件的等待时延,提高了瓦片传输的速率。其次,在制定一套完整的瓦片编码规则的基础上,设计了基于“回溯剪枝”算法的瓦片调度流程,缩短了可视化时瓦片查找匹配时间。最终通过粒度均衡约束的矢量瓦片技术,实现了瓦片数据的快速调度与可视化。

1 矢量数据的粒度均衡性分析

粒是整体的一部分,信息粒化的一种常用方法是划分,粒化的程度通过粒度来刻画。矢量瓦片技术可以视为信息粒化的一种具体应用,整套矢量数据为一个整体,而瓦片则称为粒,矢量数据的划分过程称为粒化,粒度则为矢量数据划分的程度。

1.1 数据粒度对矢量瓦片的影响

为了方便探讨数据粒度对矢量瓦片的影响,在数据划分过程中,有以下定义:给定一个论域U,U为对象的非空有限集合,U上的一个非空子集簇x ={P1,P2,…,Pk}称为U上的划分,若Pi满足式(1)约束,其中Pi称为划分x的一个块:

若另有一个划分y={Q1,Q2,…,Qk},如果∀Qi∈y, ∃Pj∈x,满足Qi⊂Pj,则称y比x划分的细,反之x比y划分的细。

根据矢量瓦片原理,矢量瓦片Pi的划分方式满足式(1)中对块的约束。在矢量数据划分过程中,划分程度(粒度)的粗细将直接影响划分的耗时以及划分后占用空间的大小。若数据粒度过细,瓦片数量增多,耗时增加。随着碎小瓦片数量的增加,瓦片整体所占存储空间逐渐增大,空间占用率逐渐降低;若数据粒度过粗,则造成单张瓦片数据量过大,瓦片可视化时易造成传输等待,使得Web可视化端的流畅性受到严重影响。因此,矢量瓦片的划分过程需要基于一个合适的粒度。

在Web端可视化过程中,传输数据的均衡性将直接影响浏览器渲染的效率。数据粒度越均衡,浏览器端解析瓦片的耗时差距越小,渲染的效率越高。所以,在瓦片构建过程中,在选择合适粒度的基础上还应尽可能保证粒度的均衡性。

1.2 数据粒度的构建与计算

粒度计算的基本问题包括两个主要的方面,一是如何构建粒度,二是如何利用粒度去进行计算。

由于矢量瓦片中只存储了矢量数据的属性信息与几何信息,其属性信息相较于几何信息所占存储空间通常可忽略不计。因此,在刻画矢量瓦片的粒度时,通常采用矢量数据的几何信息描述矢量瓦片划分粒度的粗细。在矢量瓦片数据粒度的构建过程中,通常用坐标点的数量描述瓦片划分粒度的粗细。对于同一个矢量数据集合U,数据划分粒度越细,瓦片的数量越多,单张瓦片坐标点的数量越少。

根据人眼的视觉暂留特性,如果要让人的眼睛看到连续的动画或电影,画面刷新频率理论上应该达到24帧/s。在矢量瓦片可视化过程中,为了接近甚至达到动画的流畅性,除去矢量绘制等其他操作的耗时,估算单张瓦片的传输时间应维持在7~10 ms。根据不同的网络传输带宽,即可粗略估算出单个瓦片的最优存储大小范围。矢量数据的坐标对通常由一对经纬度数值组成,经纬度一般采用浮点类型进行存储,其根据数据精度不同所占存储空间不同。利用单张瓦片的存储大小与单个坐标对的存储空间相比,即可计算出每张瓦片所包含的坐标对的数量,以此来进行粒度的计算,具体的计算公式如下:

式中,num为单张瓦片所包含坐标点数量阈值;Bandwidth为带宽大小,单位为Mbps;t为单个瓦片的传输时间,单位为s;space为单个坐标点所占存储空间大小,其值的大小与数据的精度有关,单位为字节。根据上式,即可将瓦片粒度计算为方便统计的坐标点数量,为后面瓦片的构建提供了重要的参考准则。

2 粒度均衡约束的矢量瓦片构建方法

2.1 矢量数据预处理

本文按照矢量瓦片金字塔结构对矢量数据进行制图综合与分级组织,较高级别的数据组织在金字塔结构的较低层,并选取归一化的Web墨卡托坐标系对坐标进行数据坐标转换,具体转换公式如式(3)。

式中,lon与lat分别为WGS-1984坐标系下的经纬度坐标,x与y分别为投影后的横、纵坐标。投影变换后的坐标为浮点数,其精度与数据的分辨率相关。赤道的周长约为40 000 km,即保留小数点后8位,其分辨率可精确到米级。根据Web墨卡托投影特点,经过投影与归一化后,全球矢量数据横纵坐标统一规范到[0,1]范围。

2.2 瓦片构建过程中分割线的计算与存储

矢量瓦片的粒度均衡的约束主要包括两个方面:第一,单张瓦片的数据粒度粗细应符合公式(2)计算的阈值大小num;第二,各瓦片间的数据粒度应粗细均匀。

根据粒度均衡的约束条件,本文基于k-d树算法,计算分割线并对数据进行划分。计算分割线前,先将矢量数据构建为离散点集。由于离散点集数据在x、y坐标方向分布的离散程度不同,为了使初始划分后的数据更加集中,应比较数据坐标在x、y方向的方差大小,方差越大分布越分散,方差越小分布越集中。因此,选择方差大坐标轴方向的作为初始划分方向,并在两个方向上交替划分。最后,依据数据二分思想,计算矢量数据划分的分割线,对离散点集进行递归均等二分,直到划分后的数据坐标数量小于阈值num为止。

图1a为某一级别的瓦片划分示意图,第一步采用x=0.4分割线划分数据,对应分割线存储到图1b二叉树第一层;第二步,在x=0.4分割线的左右分别采用y=0.4与y=0.6划分数据,对应把y=0.4与y=0.6分割线,存储到x =0.4的左右节点中作为二叉树的第二层。以此类推,数据划分完毕后,即可得到图1b所示的二叉树存储结构。由于采用均等二分的划分策略,每次划分过程保证了数据粒度的均衡性。

图1 分割线的存储方法

Fig.1 The method of storing partition lines

2.3 “父子”关联的瓦片构建方法

在顾及数据稠稀的瓦片构建方法中,目前已有直接采用k-d树方法进行数据划分的方法,在一定程度上顾及了数据粒度的均衡性。但是,其并未讨论“父子”瓦片的关联关系。若每一级数据均完全按照数据二分原则划分,由于不同级别数据分布不同,将会导致“父子”瓦片之间丧失了边界一致的空间继承关系。其构建出的松散瓦片结构会延长数据划分以及瓦片查找耗时,不利于Web端的高效可视化。

本文提出了顾及“父子”空间关联的瓦片构建方法,在构建高级别瓦片时,需在低级别瓦片分割线的基础上继续划分。因此,每当计算分割线后,均采用如图1b所示的二叉树结构对分割线进行存储。通过各级瓦片对分割线的继承,既缩短了瓦片构建过程中重复计算分割线带来的耗时,又提升了Web端可视化时放大缩小的交互效率。具体的构建方法流程图如图2所示。

如图2所示,将矢量数据按照制图综合规则组织为m~n级数据,m为地图最低级别(默认为0级),n由矢量数据分辨率确定,数据分辨率越高,n的值越大,按照目前电子地图规范,m级的分辨率对应地图15级。矢量数据组织完成后,对每一级数据构建离散点集。在顾及数据粒度均衡性的约束下,对点集数据递归均衡二分,直到叶子节点的坐标数量满足阈值num为止。然后缓存分割线,按分割线对各级矢量数据进行划分并存为矢量文件。

图2 父子关联的瓦片构建方法流程图

Fig.2 Flow chart of “parent-child” tile construction

在对m级数据划分时,构建一个如图1b所示的二叉树存储分割线。在对m+1级数据划分时,为了保证“父子”瓦片的关联性,先继承分割线并按二叉树结构对m+1级离散点集划分,再对叶子节点中的坐标数量进行统计,并对超过阈值num的继续递归划分并更新二叉树分割线存储结构,直到叶子节点的坐标数量满足阈值num为止。此时,每个瓦片坐标点的数量Ci满足式(4)的约束,由此得出,采用本文方法所构建的瓦片粒度是均衡的。

图3为中国范围的矢量数据在4、5两级进行划分的示意图,其中5级瓦片先继承4级瓦片分割线后继续划分。

图3 数据粒度均衡的矢量瓦片划分过程示意图

Fig.3 Schematic diagram of vector tile partition process with balanced data granularity

如图3所示,数据粒度均衡的瓦片划分方法,对于数据密集的地区,瓦片数量多,保证了各级瓦片文件数据粒度的均衡性,有利于提升瓦片传输性能。同时,通过继承分割线的方法,“父子”瓦片相互关联,提升了瓦片构建以及瓦片可视化的效率。

3 矢量瓦片组织方法与调度流程

3.1 适应高效调度的瓦片编码方法

矢量瓦片中使用较多的是Mapbox设计的命名规范。数据粒度均衡的划分方式使得分割线的位置随着数据分布的变化而不断变化,分割线需特定存储。由于Mapbox的瓦片编码方式仅与位置相关,不适合表达多个不同位置的分割线。

针对本文瓦片划分后分割线如何存储的问题,有两种解决方式。第一种是将分割线位置等信息写在一个与瓦片平行的独立文件中,依照索引文件可定位所有瓦片位置。第二种是将分割线信息直接“显式”的设计于瓦片编码中,不需要对索引文件进行存储。在矢量瓦片应用过程中,随着数据量的增大,索引也将变得越来越复杂。若用第一种方式存储瓦片,带来索引文件过大而造成的传输时延以及可视化时Web端占用内存空间过大的问题,不利于Web端高效的可视化。为了瓦片能够适应高效可视化,本文采用第二种方式,将瓦片的分割线显示的组织于瓦片编码中,瓦片编码直接用于文件夹或瓦片文件的命名,具体编码方式如图4所示。

图4 瓦片编码定义

Fig.4 Defifi nition of vector tile code

为了准确定位瓦片位置,除了存储分割线的位置,还应存储划分方向以及瓦片相对分割线的位置关系。瓦片编码由2+u位数字构成,u为Web墨卡托坐标系下坐标小数点后的位数。图4所示的示例数据分辨率为百米级,转换为Web墨卡托坐标系坐标保留到小数点后6位。编码的第一位数字表示瓦片划分的方向,若为“0”则平行于y轴进行划分,若为“1”则平行于x轴划分。第二位数字表示该瓦片位于分割线的左右(上下)位置,若为“0”则表示该瓦片位于分割线左(上)侧,若为“1”则表示位于分割线右(下)侧。编码中最后u位数字表示瓦片的分割线位置,在归一化的Web墨卡托坐标系下,其x、y坐标范围均为[0,1]。通过适应高效调度的编码后,每个节点的名称即为索引,不需对索引文件进行存储与调度,从而提高浏览器可视化效率。

图5a为平行于y轴划分,编码的第1位为“0”,其分割线(虚线)左瓦片的第2位为“0”,右瓦片第2位为“1”,编码的后6位为分割线小数点后的数值;图5b为在图5a的基础上平行于x轴继续划分,编码的第1位为“1”,其分割线(虚线)上方瓦片的第二位为“0”,下方瓦片第二位为“1”,编码的后6位为分割线小数点后的数值。

图5 瓦片编码示意图

Fig.5 Schematic diagram of vector tile code

3.2 基于二叉树结构的瓦片组织方法

为了保证数据粒度均衡的矢量瓦片在Web端视窗范围内准确、高效的调度,在瓦片编码后,基于二叉树瓦片索引结构对矢量瓦片进行组织。在组织过程中,按照二叉树结构对瓦片进行存储。首先新建一个文件夹存放所有瓦片,而后每一级瓦片分别存放在对应的文件夹下。为了准确定位瓦片位置,由于瓦片二叉树的子节点是在父节点基础上继续划分,所以二叉树子节点存放在对应父节点文件夹中,详细的瓦片组织示意图如图6所示。

图6 瓦片组织示意图

Fig.6 Schematic diagram of vector tile organization

图6为0~7级瓦片的组织示意图。0~7级的瓦片存储在同一个根节点中,在根节点文件夹中,0~7级瓦片分属不同文件夹。在每一级别瓦片的文件夹中,均以二叉树的方式进行存储,其中中间节点全部为文件夹目录,叶子节点为JSON格式的矢量瓦片文件。无论是文件夹还是瓦片文件,均按照上文介绍的瓦片编码方法进行命名。由此,矢量瓦片的索引显式地以文件夹/文件名字进行存储,而不是存储索引文件,避免了索引文件过大造成可视化中加载耗时以及大量占用内存的问题。

为了在下文中更加清楚地描述各个文件夹与瓦片文件,本文为每个文件夹和文件节点进行编号。所有瓦片的根节点为0号,其内部为m~n级瓦片所存储的文件夹,分别编号为L_1,L为矢量瓦片级别。在编号L_1文件夹的内部,以二叉树结构存放着该级别的文件夹目录与瓦片数据,这些文件夹与文件分别以L_index进行编号。L同样为瓦片级别,index为对应“完全二叉树”的节点编号,即任一节点编号为n,其左子节点为2n,右子节点为2n+1。

3.3 “回溯剪枝”算法优化的瓦片调度流程

矢量瓦片的调度模式将直接影响到Web端可视化的效率,本文在二叉树结构的瓦片组织基础上,基于“回溯剪枝”算法设计了适应数据粒度约束的矢量瓦片高效调度算法。主要设计思路是采用递归方法进行瓦片查找,直至返回所有符合视窗范围的瓦片文件为止,其具体流程如图7所示。

图7 “回溯剪枝”算法优化的调度瓦片流程图

Fig.7 Flow chart of scheduling tiles with “cutting bran ches & backtracking” algorithm

在瓦片调度的过程中,客户端向服务器端发送瓦片请求,并发送瓦片级别L以及屏幕范围对应的地理坐标等信息。服务端接收到请求后,解析瓦片级别L以及视窗4个角点的地理坐标,并将地理坐标投影到归一化的Web墨卡托投影坐标系。而后访问瓦片编号为L_1文件夹中,采用“回溯剪枝”的思想递归访问文件夹,解析文件夹名字,并判断该文件夹是否在视窗范围内。若在视窗内则继续向下查找直到遍历到符合视窗范围的JSON文件为止,将符合视窗范围的JSON文件返回客户端进行绘制。若不在视窗范围内,则对该目录“剪枝”,并按递归算法对下一个目录进行查找,直到回溯到L_1文件夹为止。

在该流程中,准确地判断文件夹(文件)的名字是否在视窗范围内的过程是其关键,主要包括以下几步:

①第一步,判断文件夹名字第1位是否是“0”,若是“0”则比较分割线即编码后u位(u=v-2,v为瓦片编码总位数)与视窗左右边界的位置关系,否则比较分割线与视窗上下边界的位置关系。在比较时,由于计算机中整数之间的比较要快于浮点数,因此将视窗范围扩大u倍,转为整数与瓦片编码后u位进行数值大小比较。根据Web墨卡托投影规则,数值越大数据位置越偏右(下)。

②第二步,判断文件夹名字第2位是否为“0”,若是“0”,则判断分割线与视窗左(上)边界的大小,否则判断分割线与视窗右(下)边界的大小。

③第三步,第2位是“0”的情况下,若分割线小于视窗左边界大小,则判定该编码不在视窗范围内,否则判定在视窗范围内;第2位是“1”的情况下,若分割线大于视窗右边界大小,则判定该编码不在视窗范围内,否则判定在视窗范围内。基于以上几步的比较判断,可以准确地匹配到视窗范围的瓦片,为瓦片的高效调度提供了保障。

4 实验分析

4.1 实验数据与环境

实验设备为联想T430s移动工作站,其CPU为Intel酷睿i5 3210M处理器,内存为4 G,操作系统为Windows7 64 位,网络带宽为30Mbps,采用Tomcat作为Web服务器。

本文采用的源数据主要为国家基础地理数据和其他公开版地理数据,实验数据类型包括点、线、面。其中,点数据选择北京、上海、重庆、武汉、广州约180×10⁴个兴趣点(Point of Internet,POI)数据,线数据选择约380×10⁴点构成的全国路网数据,面数据选择约340×10⁴点构成的全国行政区划数据以及约270×10⁴点构成的全国水系数据。本文所选取的矢量数据统一坐标系为WGS-1984坐标系,分辨率为米级。其中矢量数据的组织方式参考百度地图进行组织与抽稀,详细情况见表1。

表1 实验数据信息

Tab.1 The used experimental data

为了验证本文的方法,选取包括点、线、面3种数据类型的矢量数据集合进行矢量瓦片的组织与调度实验,所有数据集合共包括约1 200×10⁴个点。数据的分辨率为米级,在Web墨卡托投影时,应将数据保留到小数点后8位。转化为字符存储后,每个坐标点所占存储空间约为18个字节。由公式(2)可以计算出,单张瓦片坐标点的数量阈值num为2 185。由于是全国的矢量数据,小于5级的地图级别分辨率过低不适合展示全国的矢量数据,所以最低瓦片级别选择5级。根据电子地图规范中分辨率与地图级别的关系,由米级分辨率选择最高瓦片级别为15级。最终将所有数据按电子地图制图规范组织为5~15级瓦片数据,并分别对瓦片构建过程与瓦片调度过程进行实验分析。

4.2 实验结果与分析

数据组织后,本文按照数据粒度均衡的瓦片构建方法,将数据划分为5~15级瓦片,总耗时约10.2 min。采用文件形式按照二叉树结构对瓦片进行存储,共生成5~15级瓦片57 298个,占1.85 GB的存储空间。并在Web端对瓦片进行调度与可视化实验,每一级瓦片的传输速率均可维持在3.1~3.3 M/s之间,传输速率的变化相对均衡。调度的各级瓦片数据量方差在0~0.1之间,说明Web端解析各瓦片的数据量较为均衡。

为了验证本文方法的可行性,将顾及粒度均衡性的矢量瓦片构建方法与Mapbox提出的“格网法”进行对比。作为开放源代码地图库及应用程序甚至业界规范的创建者或最大贡献者,Mapbox基于矢量切片标准开发了Mapbox Studio Classic开源软件,其将全球范围等距离进行划分,其中,全球范围z级瓦片数量为。经统计,在Mapbox矢量瓦片组织方法中,出现大量的无数据瓦片,为了增加对比深度将无数据瓦片全部去除,称为“改进的格网法”。本文将在瓦片组织过程中的瓦片组织耗时、占用存储空间程度以及调度过程中的瓦片传输速率、渲染效率这4个方面对上面3种方法进行对比分析,如图8所示。

图8 3种瓦片组织方法对比示意图

Fig.8 Comparison among three organization methods of vector tile

1)瓦片构建过程实验分析

在矢量瓦片的构建过程中,瓦片构建耗时与瓦片所占存储空间是衡量瓦片构建性能的两个重要指标。下面对这两个指标进行实验分析,按照格网法、改进的格网法以及本文方法构建5~15级矢量瓦片,各级瓦片构建耗时如图9所示。

图9 5~15级瓦片构建耗时对比

Fig.9 Comparison of consuming time from level 5 to level 15

实验结果表明,在5~10级时3种方法的瓦片构建耗时均在65 s以内,而11~15级与5~10级相差了多个数量级。为了准确地对比3种方法的瓦片构建耗时,本文分为图9a、图9b两个折线图进行统计分析。通过图9a与图9b的综合分析得出,本文提出的数据粒度均衡的矢量瓦片构建方法在瓦片构建效率上有明显的优势。这是由于在顾及数据粒度的均衡性后,各级瓦片的数量均大幅减少,且级别越高效果越明显。图9a中,在8~9级时,3种方法构建耗时均大幅度上升,说明构建瓦片所消耗的时间不仅与瓦片数量有关,还与矢量的数据量相关。与8级相比,9级增加了全国路网的省道,以及行政区划的地市级面域,数据量大幅度增加,瓦片构建耗时也大幅度上升。

瓦片构建后,分别对比3种方法生成的瓦片所占存储空间的大小。经统计,本文方法5~15级共有57 298个瓦片,占1.85 GB的存储空间;改进的格网法5~15级共3 913 022个瓦片,占16 GB的存储空间;格网法5~15级共42 372 742个瓦片,占162 GB的存储空间。经对比发现,本文方法生成的瓦片所占存储空间远小于格网法。通过格网法与改进的格网法对比可以得出,未存储矢量数据的空瓦片也会占一定的存储空间,在采用相同划分方法的情况下,瓦片数量越多所占存储空间越大。

图10为5~15级瓦片所占存储空间对比图,为了增强对比效果,图10a为5~9级瓦片存储空间对比,图10b为10~15级瓦片存储空间对比。综合两图分析,随着级别的增大,采用格网法构建的瓦片所占存储空间呈现指数级增长,而本文方法增长趋势较为平缓,且在11~15级时,本文方法明显优于格网法。在图10a的8~9级与图10b的10~11级中,瓦片的存储空间增长幅度较大,说明本文方法构建的瓦片所占存储空间与数据量多少相关,而格网法的增长幅度却没有明显差别,说明在高级别时,由于格网法划分粒度过细,瓦片的数量对其所占存储空间有着决定性的影响。

图10 5~15级瓦片构建所占存储空间对比

Fig.10 Comparison of storage space from level 5 to level 15

2)瓦片调度过程实验分析

在Web端矢量瓦片可视化过程中,浏览器的渲染效率是评价矢量瓦片调度性能的重要指标,本文从传输速率与瓦片数据的方差两个方面进行对比。传输速率的测算方法是在客户端发送请求开始到所有瓦片均返回客户端结束,记录3种方法的传输耗时与调度数据量,调度数据量与传输耗时之比即为传输速率,计算方法如式(5)。

式中,v为传输速率,单位为MB/s;di为第i个瓦片文件所占存储空间大小,单位为MB;n为调度瓦片的总个数;t为瓦片传输耗时,单位为s。

瓦片数据方差的测算方法是统计加载的每张瓦片数据量大小并计算方差,计算方法如式(6),方差越大说明Web可视化端解析瓦片耗时不均衡,影响浏览器渲染效率,反之则说明浏览器渲染效率高。

式中,s²为n个瓦片所占存储空间的方差;di为第i个瓦片文件所占存储空间大小,单位为MB;n为调度瓦片的总个数;M为n个瓦片所占存储空间的平均值,单位为MB。

由图11a分析得,本文提出的数据粒度均衡的瓦片构建方法,5~15级瓦片数据的传输速率均有所提升,且各级别相对比较均衡。在格网法中,5~8级传输速率较高,原因是5~8级数据量不大,且由于瓦片级别低划分粒度相对较粗,碎小瓦片的数量不多。在9~10级速率降低的原因是随着数据量的增加,单张瓦片的数据增大,易造成传输阻塞而影响传输速率。14~15级由于划分粒度过细,单张瓦片中的数据大幅度减少,但是瓦片数量增多,此时大量小文件的查找与传输耗时降低了网络的传输速率。图11b中,本文方法瓦片的数据量方差较格网法有很大程度的减小,说明本文方法通过数据粒度均衡性约束,有效地解决了Web可视化端瓦片解析耗时不均带来的渲染效率低的问题,提升了浏览器可视化性能。

图11 瓦片传输速率与瓦片数据量方差对比

Fig.11 Comparison among three methods for tile transmission speeds and tile data quantity variances

5 结束语

本文针对矢量瓦片可视化过程中瓦片构建耗时长、体量大以及绘制过程中屏幕卡顿问题,提出了数据粒度均衡的矢量瓦片构建方法。采用全国行政区划、路网、水系、部分重要城市POI数据集合进行方法验证。实验结果表明,本文的方法在矢量瓦片组织与调度过程中,顾及了同一级别与不同级别瓦片数据粒度的均衡性,极大程度上减少了瓦片生成数量,从而节约了瓦片构建时间与存储空间。在瓦片调度时,既减少了大数据文件传输过程中的传输时延,又通过减少调度瓦片数量,有效地减少了Web可视化过程中瓦片匹配索引的次数,从而缩短了瓦片调度时延,优化了可视化效果。特别地,由于顾及粒度均衡性进行瓦片组织,Web端解析瓦片耗时相差很小,提高了浏览器可视化效率。由于目前矢量瓦片在二维地图中应用较广,本文方法是建立在二维地图中的应用,而如何将其拓展到三维地图将是下一步研究的重点。

作者简介:应申 (1979-) , 男, 安徽界首人, 教授, 博士, 主要从事地理信息系统、地图学、空间分析、3D GIS与三维地籍等研究工作。

E-mail:shy@whu.edu.cn

本期回顾

博士综述论坛

· 时空数据Web搜索的研究进展

· 基于精准时空信息的城市关键公共基础设施运行预警决策方法综述

全球网格位置框架与编码

· 地球剖分型GIS数据模型

· 基于全球剖分网格的不动产编码研究

· 目标网格编码支持的多源遥感影像地理匹配

测绘成果档案存储与服务

· 国家测绘档案业务管理系统设计与实现

· 大规模地理信息资源目录集成服务的技术框架及系统应用

· 国家测绘成果档案存储与管理总体设计与实现

· 国家级测绘地理信息系统数据成果备份设计与建设

· 国家级测绘地理信息系统异地容灾技术方案设计与实现

邮箱变更声

·《地理信息世界》邮箱变更声明

网站开通公告

·关于开通《地理信息世界》网站的公告

诚聘特约审稿专家

·诚聘|《地理信息世界》诚聘特约审稿专家

专题组稿

·约稿函|《地理信息世界》关于开辟“博士综述论坛”专栏的约稿函

矢量切片_数据粒度均衡的二维矢量瓦片构建方法相关推荐

  1. 数据sqlite 矢量切片_矢量切片(Vector tile)

    说明:本月的主要工作都是围绕制作矢量切片这一个核心问题进行的,所以2月的主题就以这个问题为主,目前分支出来的一些内容主要包括了TMS(Tile map service),OpenLayers3中的Pr ...

  2. 可完全分离的二维矢量图加密域鲁棒可逆水印算法(一)

    摘要 随着云制造技术的兴起,加密域可逆水印技术逐渐受到了较多的关注.然而,现有的大部分算法不仅只能应用于图像.视频等冗余性较大的载体,而且难以抵御常见的攻击,甚至只能在单一的域中提取水印.为此,本文针 ...

  3. R使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    R使用tsne进行高维数据可视化实战:二维可视化.三维可视化 t-SNE是一种非常强大的技术,可以用于多维数据中的可视化分析(寻找模式).它对复杂多维数据的可视化能力是显而易见的,它以无监督的方式对数 ...

  4. Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化

    Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...

  5. 优酷视频怎么转二维码_优酷视频转二维码

    有的人想将自己制作的视频分享出去,那么该如何将视频转换成二维码来分享呢?其实方法很简单,直接在视频界面中就能生成,这里和大家讲讲. 01. 登录自己的优酷帐号,然后点击右上角的上传按钮. 优酷视频怎么 ...

  6. c语言二维数组输入数据,c语言编写程序,把下面的数据输入到一个二维数组中:...

    c语言编写程序,把下面的数据输入到一个二维数组中: 答案:3  信息版本:手机版 解决时间 2019-10-07 01:08 已解决 2019-10-06 03:19 1. 编写程序,把下面的数据输入 ...

  7. opencv 计算二维矢量的幅值—magnitude()函数

    计算二维矢量的幅值:magnitude()函数 该函数用来计算二维矢量的幅值 void magnitude(InputArray x,InputArray y,OutputArray magnitud ...

  8. excel数据生成条码或者二维码并放在表格中(VBA)

    最近做的项目要将一列数据生成条码和二维码,并打印 这是一个简单的表格操作嵌入式脚本目的是生成二维码或条码 直接上代码 Sub 批量生成二维码()Dim k As Long, i As Long, j ...

  9. matlab 平面 偶极子 声场,二维矢量声强的误差分析

    摘 要:为便于识别和定位平面内噪声源,依据双传声器互谱声强法原理,建立二维矢量声强探头的物理模型,推导了二维声强的计算公式,分别在单极子和偶极子声场条件下,利用该探头测量二维声强及定位误差.结果表明: ...

最新文章

  1. 不想 CRUD 干到老,就来看看这篇 OOM 排查的实战案例!
  2. Mysql数据类型之字符串的案例介绍(含latin1下varchar的最大长度是65532还是65533)
  3. Linux下的删除命令
  4. Linux下chkconfig命令介绍
  5. c语言中逗号是什么字符,C语言中的逗号操作符
  6. 只有10万元预算买畅销SUV自动车型您选谁?
  7. 自动化部署之git merge和git rebase的区别
  8. java 释放对象_java基础:对象的销毁
  9. Win7系统更新错误代码80073712的解决办法
  10. 思科交换机端口模式配置 端口安全配置 思科模拟器
  11. js 获取当天23点59分59秒 时间戳 (最简单的方法)
  12. 类别名称转换为一一对应的数字标签
  13. hadoop学习之----------IntelliJ IDEA上实现MapReduce中最简单的单词统计的程序(本地 和 hadoop 两种实现方式)...
  14. “学习金字塔”的真与假
  15. Cannot read property bindings of null 解决方法
  16. 密码库LibTomCrypt学习记录——(1.5)分组密码算法——示例代码AES-ECB
  17. Nginx 启动报错 directive is not allowed here in
  18. 电阻、电容、电感的实际等效模型
  19. 中国人民大学与加拿大女王金融硕士国际班——全方位培养金融人才,你心动了吗
  20. 【从零开始学习 SystemVerilog】11.2、SystemVerilog 断言—— Immediate Assertions(立即断言)

热门文章

  1. xxljob 配置文件_SpringBoot整合Xxl-Job的完整步骤记录
  2. sklearn 决策树例子_决策树DecisionTree(附代码实现)
  3. 只显示小方格_木托盘拼成院子围栏,镂空方格里都种上菜,一物两用,收获满满...
  4. python web开发项目 源码_真零基础Python开发web
  5. Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化
  6. ubuntu 下安装 cudnn
  7. 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)...
  8. 不带参数的SQL语句执行方法
  9. 复合数据类型,英文词频统计
  10. 洛谷1967货车运输