Douglas-Peucker的简化算法的标准参数是几何形状和公差(例如PostGIS中的ST_Simplify)。公差参数是什么意思?我知道值越大,几何形状就越粗糙。但是数字有任何单位还是仅仅是任意的?

#1 楼

公差是一个距离。粗略地说,曲线中与直线相差小于此数量的任何“摆动”将被拉直。该算法会找到超出公差范围的最极端摆动,将最偏离直线的点固定下来,然后将自身递归应用于固定摆动之间的弧。

公差必须以软件执行算法所使用的单位表示。 (这取决于它是否使用存储的坐标或“即时”投影的坐标进行显示或分析。)在Wikipedia上有关Douglas-Peucker算法的文章中有插图说明。

评论


很好的解释,+ 1。

–德里克·斯温利(Derek Swingley)
2011年7月7日在16:05

通常,此公差参数值应等于目标分辨率。

–朱利安
13年2月7日在17:37

@julien有道理。我总是喜欢理解这种经验法则的原因,因为以我的经验,如果更仔细地研究,许多这样的结论就不会成立。 (令人惊讶的是,这样令人惊讶:您总是学到一些东西。)因此,您能否就为什么公差应该等于“目标分辨率”(以及该分辨率究竟是什么)分享您的想法?

– hu
13年2月7日在17:41

如何检查敏感性?测试ST_Simplify(geom,0.00001)= geom是错误的。但是,即使ST_AsGeoJSON(geom,3)= ST_AsGeoJSON(ST_Simplify(geom,0.0000001),3)也是错误的!

– Peter Krauss
20-2-11在13:24

#2 楼

在您发布的链接中没有看到它,但发现了这一点:


公差单位与输入几何的投影相同。


http://revenant.ca/www/postgis/workshop/advanced.html#processing-functions

评论


我懂了。但是,当几何图形为WGS84(纬度/经度)并将公差设置为1.0时,这到底意味着什么? 1度以内的误差?还是有些困惑。

– ejel
2011年7月6日在22:59

我不会说“ 1度内的误差”……请看一下该算法的维基百科页面,那里有一个漂亮的图形和很好的解释:en.wikipedia.org/wiki/…

–德里克·斯温利(Derek Swingley)
2011年7月6日23:26

如何检查敏感性?测试ST_Simplify(geom,0.00001)= geom是错误的。但是,即使ST_AsGeoJSON(geom,3)= ST_AsGeoJSON(ST_Simplify(geom,0.0000001),3)也是错误的!

– Peter Krauss
20-2-11在13:22