ArcGIS 线简化算法的使用及两种方法的比较
D-P vs Bend Simplification
一 实验流程
1.1 数据下载
本次实验使用中国山东省海岸线数据(部分),该数据下载于OSM官网,使用ArcGIS
转换为shp
格式,图像如下。
源数据 | 图像 |
---|---|
数据1 | |
数据2 |
1.2 筛选海岸线数据
接着我们对原始数据进行筛选,选择出海岸线数据,打开shp
属性表可以看到:
所以使用ArcGIS
按属性选择工具即可筛选出所有的海岸线数据。筛选结果为:
筛选结果 | 图像 |
---|---|
数据1 | |
数据2 |
1.3 线简化
使用ArcGIS
线简化工具对海岸线进行简化处理。在ArcGIS 10.2
版本中提供了两种方法–POINT_REMOVE
& BEND_SIMPLIFY
。
POINT_REMOVE
方法基于道格拉斯-普克算法,该方法的工作原理是识别并移除相对多余的折点来简化数据并以较小的比例显示。它将保留所有构成线要素的基本形状的关键点而移除其他点。该算法从使用趋势线连接线要素的各端点开始。首先测量每个折点到趋势线的垂直距离。与趋势线的距离小于容差的折点将被删除。线要素最先在距离趋势线最远的折点处断开,从而构成两条新趋势线。然后再测量剩余折点到这两条线的垂直距离,整个过程将持续到与趋势线的距离小于容差的所有折点全部被删除为止。它通常被用于数据压缩或粗糙的简化。随着容差的增大,生成的线中有棱角的部分将显著增大。
BEND_SIMPLIFY
算法基于Wang和Mueller提出的折弯提取思想,把弯曲定义为线上直线段绕动方向一致的几条相邻直线段的集合。通过形状识别技术找出折弯并分析其特征,然后消除无关紧要的折弯。算法将线状要素视为由一系列折弯组成,可将每个折弯的几何属性与直径等于指定简化容差的参考半圆的对应属性进行比较。这些测量结果用于确定是保留折弯还是消除折弯,也就是说用基线(连接折弯端点的线)取代折弯。总结来说,算法更接近原始图像,但需要更多的处理时间,速度较慢。
1.3.1 POINT_REMOVE
点击简化线工具:
**输入要素:**要简化的线要素
**输出要素类:**简化要素的输出目录
**简化算法:**此处选择POINT_REMOVE
算法
**简化容差:**表示创建的每个折点和新线之间的最大允许垂直距离。
容差 | 数据 | 结果 |
---|---|---|
1 | 数据1 | |
0.01 | 数据1 | |
1 | 数据2 | |
0.01 | 数据2 |
这也说明容差越大,简化力度越大,有棱角的部分越大,且数据1与数据2对比可发现,数据很复杂的情况下简化效果一般。
1.3.2 BEND_SIMPLIFY
**输入要素:**要简化的线要素
**输出要素类:**简化要素的输出目录
**简化算法:**此处选择BEND_SIMPLIFY
算法
**简化容差:**表示近似于有效折弯的圆的直径
容差 | 数据 | 结果 |
---|---|---|
1 | 数据1 | |
0.01 | 数据1 | |
1 | 数据2 | |
0.01 | 数据2 |
实验证明,简化容差越大,简化程度越大,且在逼近最佳容差时,使用该方法能较好地拟合原始图像。
二 实验结果分析
通过实际实验使用POINT_REMOVE
& BEND_SIMPLIFY
两种线简化算法。我们可以获得一些结论。
通过横向和纵向比较两种算法在不同容差时的结果,可以得到:
- 简化容差越大,简化力度越大,有棱角的部分越大
- 在简化容差较大时,数据不太复杂时,两者差距并不明显,随着简化容差的减小,两者差距逐渐增大
- 简化容差相同的情况下,
BEND_SIMPLIFY
算法较POINT_REMOVE
算法更为精细,对原始图像的拟合程度更好
因此,POINT_REMOVE
算法更适用于对制图质量的要求不高的时候,它生成的线可能含有不必要的尖角和尖锋,速度较快。而BEND_SIMPLIFY
算法生成的简化线与原始线的大体形状十分接近,制图质量也高于点移除算法,速度较慢,实际应用时,可以根据两种方法的特点进行合理选择。
参考
1 曲线的弯曲识别方法研究–郭庆胜 黄远林 章莉萍
2 ArcGIS官方文档