1 引言
折线简化是一个减少折线顶点数量的过程,同时尽量保持整体形状不变。
保持拓扑结构的折线简化意味着不会引入新的交叉点,也不会改变多边形的嵌套层级:岛屿不会与简化后的海岸线相交,且岛屿仍然保持在水域内。
本包实现的方法基于文献[1],它可以简化任意集合的折线,无论是开口还是闭合的,且这些折线可能相互或自身相交。该方法通过迭代地将两条边 (p,q)(p,q)(p,q) 和 (q,r)(q,r)(q,r) 替换为单条边 (p,r)(p,r)(p,r),即从某条折线上移除顶点 qqq 来简化折线集合。在简化过程中,该算法保证折线集的拓扑结构保持不变,确保移除顶点不会引入新的交叉点。
顶点的移除顺序由用户提供的**代价函数(cost function)**确定,该函数计算简化误差,衡量原始折线与去除该顶点后的折线之间的偏差。
当用户定义的停止条件满足时(例如达到期望的顶点数量或最大简化误差),算法终止。
该折线简化算法基于第2章“二维三角剖分”中的一个三角剖分类,具体是 Constrained_triangulation_plus_2。该数据结构允许移除折线约束上的顶点,同时保持这些顶点所在点集不变。由于这是一个三角剖分,基于剖分中与顶点相邻的顶点集合,可以高效地进行拓扑检查。

订阅专栏 解锁全文
585

被折叠的 条评论
为什么被折叠?



