对线状要素或面边界进行简化是制图综合操作的一种类型(Esri,1996),它可以在不破坏线或面边界的基本形状的前提下,移除无关紧要的折弯和小的凹进和凸出。在简化线或面工具中,可使用 POINT_REMOVE 和 BEND_SIMPLIFY 操作符简化线状要素和非正交面边界。
选择要使用的操作符
POINT_REMOVE 将应用具有增强功能的已公布算法(道格拉斯和普克算法,1973)。这是一种用于简化线的便捷算法。它将保留构成线基本形状的所谓关键点并移除所有其他点。此算法将通过“趋势线”连接弧的终止结点。首先测量每个折点到趋势线的垂直距离。与趋势线的距离小于容差的折点将被删除。距离趋势线最远的折点可将弧分开,从而构成两条新趋势线。然后再测量剩余折点到这两条线的垂直距离,整个过程将持续到与趋势线的距离小于容差的所有折点全部被删除为止(请参见下图)。
POINT_REMOVE 非常适用于数据压缩和消除冗余细节,但是生成的线可能含有尖角和尖锋,从而降低该线的制图质量。如果对于制图质量的要求不高,则可以使用 POINT_REMOVE 进行少量的数据缩减或压缩。
BEND_SIMPLIFY 将通过形状识别技术找出折弯并分析其特征,然后消除无关紧要的折弯。过窄的折弯会被略微加宽以使其满足识别容差。这样一来,生成的线与原始的线的形状将更加接近从而提高制图质量。
选择合适的容差
“去点容差”中设置的容差值将决定简化的程度。如果要生成制图输出,可将这些操作符的容差设置为等于或大于间隔阈值(图形元素之间允许的最小间距)。如果要进行其他类型的显示或者进行数据缩减,可能需要反复试验之后才能找到适合的容差。容差相同的前提下,POINT_REMOVE 生成的结果比 BEND_SIMPLIFY 生成的结果更粗略更简化。
改进结果
使用 POINT_REMOVE 和 BEND_SIMPLIFY 时,可以从两方面对结果进行改进。首先,使用尽可能多的折点(最高可达 500 个)构造弧。两种操作符将对弧进行逐个处理,并且弧越长效果越好。第二,将结点设置在长且平滑的弧段上而不要设置在非常弯曲的弧段上。
局限性和建议
如果 weed 容差相对较大,较大面旁的较小面可能最终会进入较大面的内部。但该程序无法检测到此类拓扑错误。
使用“简化线或面”之前,请消除所有不必要的面和洞(根据大小或其他条件)。此操作可缩短处理时间并降低产生拓扑错误的几率。
参考资料
技术论文,Esri,“地图制图综合自动化:前沿技术”,1996。此文章位于以下网址的“白皮书”(White Papers) 部分:https://downloads.esri.com/support/whitepapers/ao_/mapgen.pdf。
Douglas, David H. and Thomas K. Peucker, "Algorithms for the Reduction of the Number of Points Required to Represent a Digitized Line or Its Caricature," Canadian Cartographer, 10, No. 2 (December 1973).