多边形轮廓到多边形的无序浊点

时间:2015-03-30 11:50:00

标签: python geometry 2d polygon computational-geometry

亲爱的Stackoverflow社区,

我将不规则多边形的轮廓作为无序数据点(如图中所示:https://s16.postimg.org/pum4m0pn9/figure_4.png),我正在尝试对它们进行排序(即创建多边形)。

由于多边形的非凸形状,我无法使用凸包外壳。我不能使用最小距离标准,因为轮廓的其他部分的某些点更接近(例如:A点必须与B连接,但更接近C)。由于轮廓的不规则形状,我不能使用顺时针顺序。

有没有人用一种方法来实现(优先在Python中)一种算法,该算法会从起点重新排序数据点?

1 个答案:

答案 0 :(得分:0)

在这里finding holes in 2D point set查看有关如何解决此问题的一些想法

  1. 我会创建点密度图(类似于上面链接的答案)
  2. 创建所有行的列表
    • 所以添加所有可能的行组合(在关闭点之间)
    • 不与地图中的空白区域相交
  3. 删除所有相交的线
  4. 在行上应用闭环/连通性分析
  5. 然后处理剩余的未使用点
    • 通过分割最近的线...
    • map example
    • 根据您的地图网格大小和点密度,您可能需要混合/平滑地图以覆盖间隙
    • 如果网格尺寸太大,那么您可能会错过点A,C
    • 之间图像上的细节
    • 如果它太小,那么在低密度区域附近可能会出现明显的间隙
  6. 但是正如所说的那样有一个以上的解决方案,所以你需要稍微调整一下以使得想要的输出可能是一些用户输入,用于稍微摇动解决方案,直到找到想要的解决方案......

    [注释]

    你可以将它作为更多的凸多边形处理......

    • 仅在符合上限规则时添加行
    • 在找不到更多行时停止
    • 再次使用未使用的点
    • 并最终尝试连接找到的非闭合多边形......