2022-03-13 18:32阅读: 748评论: 0推荐: 0

04. 矢量瓦片地图线化简算法研究

摘要

线状要素化简对提高矢量瓦片地图服务过程中数据传输效率和可视化表达效果至关重要。常见经典化简算法大多不
考虑化简前后曲线空间关系的一致性保持,导致易发生化简结果尖锐化、局部极值点缺失和产生相交等异常问题,如果考虑化简前后空间关系的一致性,则影响化简效率。鉴于此,结合矢量瓦片地图服务应用需求,本文提出一种改进的Visvalingam算法,采用最小堆技术解决了最小权重值查找效率低下问题,利用线自相交拓扑关系判断策略,从全局考虑线上其它点对当前点的影响,解决了线化简前后拓扑关系的一致性保持问题。将改进的算法与原始算法在拓扑关系、几何特征、位置精度和化简效率等方面进行实验对比分析,结果表明改进算法可顾及线状要素的拓扑关系,保证化简前后线状要素的整体形态及其拓扑关系不变,能够更高效地应用于矢量瓦片地图在线服务中。

关键词

矢量瓦片地图;地图服务;地图综合;拓扑关系;Visvalingam算法;线化简;最小堆

1. 引言

地图综合是当前国际GIS和制图学领域的一个难题。地图化简是地图综合的基本操作,线要素化简在制图表达与综合领域一直是研究的热点 [1-2] 。矢量瓦片地图服务,是指在网络地图服务中,以多层次模型将矢量数据按照一定规则切分为矢量要素描述性文件存储于服务器端,在客户端根据指定的样式进行渲染绘图,与栅格瓦片地图相比,其优点是可以在客户端更改样式 [3] 。

将矢量数据按照全球地理空间金字塔索引模型划分为层次化和网格化瓦片数据,对每一层级的矢量数据进行不同粒度的化简操作,可有效解决当前有限的网络带宽和无限增长的空间数据之间的突出矛盾,也可实现矢量瓦片地图在客户端显示过程中从重要到次要、从高分辨率到低分辨率的逐级渐进式可视化,提高了数据传输效率与可视化表达
效果 [4] 。矢量瓦片地图线要素化简算法的基本思想是在网络地图服务过程中,对不同层级的矢量数据进行不同粒度的化简操作。化简是有选择性地去掉曲线上的点,并对其他点进行合理位移,以尽可能地保持曲线的形状特征,最终实现矢量瓦片地图在客户端高效的多尺度渐进式可视化 [5] 。

线化简算法(如经典的Douglas-Peucker算法)在能够对整条曲线进行压缩的同时,更好地保留特征点,但易导致在特征点处出现尖角 [6] ;Visvalingam算法是对最小面积的点进行重复式删除,便于网络地图服务过程中对线要素的渐进式化简,不足之处是每删除一个点,需要重新对三角形面积进行排序,导致化简效率降低 [7] ;Li-Openshaw算法能很好地光滑线要素的特征点,可有效解决计算结果尖锐化的问题,但对所有弯曲点进行统一光滑处理会导致线要素发生变形 [8] ;翟仁健等 [9] 提出基于地理特征约束的线化简算法,该方法主要通过约束Delaunay三角网模型对曲线形态的结构进行分析,其对线要素地理特征保持效果较好,但算法复杂度较高;弧
比弦化简算法可以对曲线弯曲地方进行整体概括,但可能会出现连续节点被剔除的问题,导致局部曲线形状发生较大的变形 [10] ;李成名等 [11] 提出了顾及空间关系的线化简算法,建立了线要素的全局化简方法,能够保持光滑美观的曲线形态,但对特征点的保持不够好。

上述方法大多数是对化简前后拓扑关系的保持考虑不充分,但在渐进式的网络地图线化简过程中保持拓扑关系的一致性更加重要 [12-14] 。鉴于此,本文对传统的Visvalingam算法进行了改进,引入最小堆技术提高网络地图服务过程渐进式化简的效率。在化简过程中,综合考虑化简前后线要素的拓扑关系,防止化简后拓扑关系发生改变,且实验结果验证了本文方法的有效性。

2. Visvalingam算法及其改进

2.1 Visvalingam算法

Visvalingam 算法由 Visualingam 和 Whyatt 在1991年提出。其采用由下到上删除曲线上最不重要的点来化简曲线。如图1所示,以曲线上顶点 v i与其前后相邻顶点 v i-1 、 v i+1 构成的三角形面积EA i 作为衡量该顶点重要性权重 w i 。 EA i 越小,则权重 w i 越小,可以将顶点 v i 删除。具体步骤为:

(1)计算曲线上每个顶点权重值 w i (即 EA i );

(2)如果曲线上的顶点少于2个,则终止计算;

(3)选取当前曲线上权重最小的顶点 v i ;

(4)如果 w i 小于 ε (阈值),则将此顶点 v i 从曲线上删除,然后重新计算此顶点 v i 在当前曲线上前后相邻顶点的权重,并返回步骤(2);

(5)如果 w i 大于 ε ,则保留此顶点 v i ,退出判断。

Visvalingam算法主要存在以下问题:① 在删除顶点过程中只考虑了局部顶点之间的关系而没有考虑其他顶点,所以无法解决删除顶点后产生的自相交问题(图2);② 在化简过程中要重复查找最小顶点权重值即每次迭代计算过程中要遍历所有权重数据进行排序,这将导致算法效率低下。

2.2 Visvalingam算法改进

(1)基于最小堆技术的最小权重值查找

本文采用最小堆技术来解决最小权重值查找效率低下问题。最小堆是一棵完全二叉树,树中某节点值总是不大于其左右子节点值,保证堆顶元素最小。如果采用数组结构存储曲线上节点权重值,则查找最小权重值需要遍历整个数组,时间复杂度为O(N),若采用最小堆,则时间复杂度为O(1)。本文采用最小堆技术存储曲线节点权重值,在利用Visvalingam算法化简矢量瓦片地图线要素过程中,需在最小堆中不断删除、插入顶点权重值,并进行最小堆的动态维护,此时无需遍历整棵树,只遍历当前树结构的某一条路径(这里不考虑删除点后相邻顶点面积更新),而数组对应时间复杂度至少为O(N)。以图1所示线要素为例,其每个节点(首末节点除外,包括v 2 ,v 3 ,v 4 ,v 5 )对应权重值集合为{6,5,4,2},初始化最小堆过程如图3所示。

根据Visvalingam算法,图1线要素化简过程中首先删除v 5 ,对应最小堆需要动态调整,调整过程如图4所示。




(2)自相交问题处理

本文采用线自相交拓扑关系判断策略,并从全局考虑线上其他点对当前点的影响,解决化简后线自相交问题。具体策略为:首先判断待删除点是否会引起自相交,如果导致自相交,则记录该点,否则删除点,然后将所有前期被记录的点插入到最小堆中并更新最小堆(目的是判断这些被记录的点后期是否有可能被删除)。这样既能保证删除顶点后线要素不会产生自相交又能使线要素得到充分化简,充分考虑了当前化简效果对后续化简操作的影响。

如图5所示,左侧为原始算法计算过程,右侧为改进后算法计算过程。为便于理解,图中的面积权重值已经替换成了对应的数字权重值。

图5中,原始Visvalingam算法在权重值为0的点被移除后导致线要素自相交,而改进后的算法已考虑到删除该点产生的影响,且当相同权重点一起移除时不会产生自相交。改进后算法实现步骤为:

(1)计算输入线顶点(起始点和终止点除外)权重值即三角形面积,利用权重值进行最小堆初始化;

(2)查找最小权重值并判断其是否小于阈值,如果小于则进行下一步处理,否则退出;

(3)判断移除当前待删除顶点后生成的新线要素是否产生自相交现象,如果产生则记录其顶点信息并执行步骤(2),否则删除当前节点并更新相邻节点权重值;

(4)将步骤(3)中记录的所有删除后产生自相交的顶点重新插入到最小堆中,然后执行步骤(2)。具体的算法伪代码如图6所示。


3. 实验及结果分析

3.1 实验数据及化简阈值

以中国南方某城市30 km 2 范围内的矢量瓦片地图水田边线和河流数据作为实验数据,初始比例尺数据为1:1万。本文采用原始Visvalingam算法与改进Visvalingam算法对其进行化简,并对其结果在拓扑关系、几何特征和位置精度方面 [15] 进行比较分析。

在实验过程中,本文以屏幕像素为参考,各尺度需要满足在屏幕上像素化简阈值保持一致的原则,不同比例尺下的化简阈值是由式(1)定义:

式中: Distance n 是在n级别下的真实地理阈值; P 1为第1级别(即化简前初始级别)下用户设置的像素阈值(第1级化简像素宽度的设置是由人眼可分辨的视域大小决定的,实际化简过程中用户也可自己设定) P 1 =2(参考商用网络地图服务平台); R 为真实的地理范围;W 为单张矢量瓦片的像素宽度;S 1 和 S n 为第1级和第n级下的比例尺。

3.2 拓扑关系评价

图7是将1:25万矢量瓦片地图化简成1:100万的结果,且用红线突出显示了拓扑关系的保持程度。其中图7(a)、(b)、(c)为整体化简示例图,图7(d)、(e)、 (f)是局部放大显示的2种算法的化简结果。分析图7中2种化简算法的效果发现:

(1)图7中2种算法都能保留原始曲线上40%左右的点,在同等压缩率下,2种算法都具有较好的化简效果;

(2)原始Visvalingam算法虽然较好地保留了曲线整体形状(如图中极值点保持较好),但由于删除了权重最小的点(相邻三角形面积较小的点),且未能考虑曲线的拓扑特征,导致化简后曲线间发生相交。而改进的Visvalingam算法不仅对曲线的整体形态保持较好,同一压缩比率下,可保持较好的拓扑关系,避免发生相交,在不同化简粒度下,改进的Visvalingam算法对矢量瓦片地图线要素的化简效果更好。

3.3 几何特征评估分析

本文采用的几何特征评估主要包括线的长度比和线的曲折度2个指标。线的长度比值越小,说明对线的压缩量越大,如果不同线段之间的压缩比接近,表明该算法能较好地保持曲线的几何特征。而当线要素的长度变化较大、曲折度变化较小时,表明该算法维持了较好的曲线几何特征。具体如式(2)、式(3)所示。

式中: L ' 、 L 分别为原始曲线和化简后曲线的长度。

式中: Ang 是线的曲折度; φ 是每两条相邻直线段的夹角;n是曲线上的点数(首末节点除外)。

表1和表2为原始Visvalingam算法与改进Vis-valingam算法在3种比例尺地图上的线要素化简结果,结果表明:

(1)改进的 Visvalingam 算法较原始 Visvalin-gam算法稳定,但2种算法对河流化简后都随着比例尺的减小,长度和弯曲度也变小。

(2)改进的 Visvalingam 算法在比例尺 1:25 万的曲折度变化小于原始Visvalingam算法,主要是改进的Visvalingam算法保持了河流要素化简前后的拓扑关系,虽然比例尺变小,但仍可保持了原有的曲折度。

综上,与原始 Visvalingam 算法相比,改进的Visvalingam算法化简后线要素的长度变化较大、曲折度变化较小,能更好地保持矢量瓦片地图曲线的几何特征。

3.4 位置精度评估分析

本文主要采用位移标准差、位置误差、缓冲区限差3个指标来评价位置精度。对位移标准差与位置误差指标来说,值越小,说明算法化简结果更稳定,缓冲区限差指标值越大,说明算法较好地保持曲线的位置精度。

表3结果表明:改进的Visvalingam算法位移标准差与位置误差均小于原始Visvalingam算法,但位置误差值在小比例尺下较高,这是因为河流等自然要素,线弯曲多,且可能存在连续的小弯曲等现象。总体上看,改进的Visvalingam算法较原始Vis-valingam算法更稳定。

根据图8所示,2种算法的缓冲区限差大体上接近,但缓冲区宽度相同时,利用改进的Visvalin-gam算法化简后的曲线落在缓冲区内的占比更大,因此改进的Visvalingam算法能更好地保持矢量瓦片地图曲线的位置精度。

3.5 化简效率分析

采用改进的 Visvalingam 算法 1(未处理自相交)、改进的Visvalingam算法2(处理自相交)和原始Visvalingam算法对上文实验数据中的河流数据进行化简,初始比例尺数据为1:1万,在硬件和基础软件平台相同情况下,算法的耗时对比如表 4 所示。分析表4实验结果发现:

(1)如果采用最小堆技术查找算法化简过程中最小权重点,并且不检测自相交问题,则与原始Visvalingam算法相比,化简效率得到了极大提升,主要原因是采用最小堆技术,时间复杂度为O(1),而原始算法时间复杂度为O(N)。

(2)改进后的算法如果还要考虑化简前后自相交的问题,则耗时增加,主要原因是在化简过程还需要对数据进行拓扑检查操作,但随着比例尺缩小,曲线上总点数减小,化简耗时与原始算法逐渐趋同。

综上,改进后算法在化简结果的正确性和效率上整体优于原始Visvalingam算法。

4. 结论

针对矢量瓦片地图服务过程中从重要到次要、从高分辨率到低分辨率的逐级渐进式可视化的需求,本文主要对当前线要素化简算法的效率问题和自相交问题进行了研究,主要结论包括:

(1)基于原始Visvalingam算法,针对效率问题,提出采用最小堆技术来解决最小权重值查找效率低下问题,可以将时间复杂度由O(N)减小到O(1)。

(2)针对自相交问题,采用线自相交拓扑关系判断策略,从全局考虑线上其他点对当前点的影响,本文方法不仅对曲线的整体形态保持较好,同一压缩比率下,可保持较好的拓扑关系,避免发生相交。

(3)采用真实数据试验验证了本文的算法,从拓扑关系、几何特征、位置精度和时间效率4个维度对算法进行了比较分析,试验结果表明,改进后算法在化简结果的正确性和效率上整体优于原始Vis-valingam算法。

本文作者:风帆远航

本文链接:https://www.cnblogs.com/flying-birds-xyg/p/16001311.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   风帆远航  阅读(748)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.