简化线的工作原理
简化是在不破坏线要素的基本形状的前提下,移除无关紧要的折弯和小的凹进和凸出。简化线工具使用以下两种简化算法之一:点移除和折弯简化。
选择要使用的操作符
点移除
点移除选项应用一种已发表的具有增强功能的算法(道格拉斯和普克算法,1973)。这是一种用于简化线的便捷算法。它将保留所有构成线要素的基本形状的关键点而移除其他点。该算法从使用趋势线连接线要素的各端点开始。首先测量每个折点到趋势线的垂直距离。与趋势线的距离小于容差的折点将被删除。线要素最先在距离趋势线最远的折点处断开,从而构成两条新趋势线。然后再测量剩余折点到这两条线的垂直距离,整个过程将持续到与趋势线的距离小于容差的所有折点全部被删除为止。
点移除对于数据压缩和消除冗余细节非常有效,但是生成的线可能含有不必要的尖角和尖锋,从而降低线的制图质量。如果对制图质量要求不高,则可使用点移除实现相对较少的数据缩减或压缩。
折弯简化
折弯简化通过形状识别技术找出折弯并分析其特征,然后消除无关紧要的折弯。可将线状要素视为由一系列折弯组成 (Wang, 1996),其中的每个折弯在其连续折点处的拐角符号(正或负)均相同。可将每个折弯的若干个几何属性与直径等于指定简化容差的参考半圆的对应属性进行比较。这些测量结果用于确定是保留折弯还是消除折弯,也就是说用基线(连接折弯端点的线)取代折弯。这种简化是迭代进行的,因此,较小的折弯在较早的迭代过程中可能会“消失”,从而形成大折弯。这样一来,生成的线与原始线的大体形状将更加接近,而制图质量也高于点移除。
分析和改进结果
该工具一次简化多条线;线越长,结果越理想。采集或构造源数据时,请切记:尽可能将线端点放在长而平滑的线段上,而不要放在弯曲程度很大的线段上。
使用解决拓扑错误选项时,该过程会检查是否存在拓扑错误、线交叉、重合的线或折叠的零长度线。如果在第一轮简化后检测到此类错误中的任意一种,将查找相关的线段(而不是整条线),并使用较小的容差(先前所用容差的一半)重新简化这些线段。该迭代过程将根据需要重复多次,直到不存在拓扑错误为止。输出要素类将包含两个新属性 MaxSimpTol 和 MinSimpTol,它们显示简化每条线时实际使用的容差范围。即使在此过程中并未发现错误,也会添加这些字段。使用这些字段可估计指定容差对数据的作用效果。如果 MaxSimpTol 和 MinSimpTol 小于为大多数输出线所指定的容差,则说明在处理过程中出现了多次冲突。这种情况下,请考虑使用较小的容差。MaxSimpTol 和 MinSimpTol 小于容差时,可以表现更精细的细节,例如,一条很窄的双线河流或两条非常接近的边界线。这种情况下,简化过程可能无法提供理想的制图解决方案。窄要素可能需要以不同的方式表示,例如,用一条具有代表性的线表示。