平滑多边形边缘的算法

时间:2015-01-28 09:50:54

标签: javascript algorithm computational-geometry

我使用Node.js和Concave hull算法来隔离英国邮政编码扇区。 这就是我现在得到的: enter image description here

所以现在,我需要平滑边界看起来像这样: enter image description here

有谁知道我应该使用哪种算法?

2 个答案:

答案 0 :(得分:1)

似乎有很多方法可以做到这一点。我倾向于引用某种贝塞尔插值(http://www.antigrain.com/research/bezier_interpolation/)。

@amit给出了关于如何解决问题的另一个很好的线索,样条实际上对于平滑多边形非常有用。请参阅相关问题:https://gis.stackexchange.com/questions/24827/how-to-smooth-the-polygons-in-a-contour-map

希望它有所帮助!

答案 1 :(得分:1)

至少 2方法:

  • 曲线拟合算法(最适合您的用例)
  • Rammer-Douglas-Peucker 算法(更易于实施)

Rammer-Douglas-Peucker算法减少了多边形的节点数 - 这不会使它平滑,因为它会使它弯曲,它只会减少节点(粗糙度),同时努力保持多边形它是尽可能原始的形状

虽然你是什么,很可能,之后是通过一系列点的曲线拟合算法。

请参阅this answer我为此做出的解决方案(和上面的答案,更具描述性)。