Python 多边形轮廓到多边形的无序云点

Python 多边形轮廓到多边形的无序云点,python,geometry,2d,polygon,computational-geometry,Python,Geometry,2d,Polygon,Computational Geometry,亲爱的社区: 我将不规则多边形的轮廓作为无序的数据点,如图所示:,我正在尝试对它们进行排序,即创建一个多边形 由于多边形的非凸形状,我不能使用凸包封套。我不能使用最小距离标准,因为轮廓其他部分的一些点更靠近。例如:点a必须与B连接,但更接近C。由于轮廓形状不规则,我不能使用顺时针顺序 有没有人知道一种方法可以优先在Python中实现一种算法,从一个起点对数据点进行重新排序?在这里寻找一些关于如何解决这个问题的想法 我将创建类似于上面链接答案的点密度图 创建所有行的列表 因此,在闭合点之间添加所有

亲爱的社区:

我将不规则多边形的轮廓作为无序的数据点,如图所示:,我正在尝试对它们进行排序,即创建一个多边形

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

有没有人知道一种方法可以优先在Python中实现一种算法,从一个起点对数据点进行重新排序?

在这里寻找一些关于如何解决这个问题的想法

我将创建类似于上面链接答案的点密度图 创建所有行的列表 因此,在闭合点之间添加所有可能的线条组合 不与地图中的空白区域相交 删除所有相交线 在管线上应用闭环/连通性分析 然后处理其余未使用的点 通过将最近的线除以它们。。。 根据贴图栅格大小和点密度,可能需要混合/平滑贴图以覆盖间隙 如果网格尺寸太大,那么您可能会错过A、C点之间图像上的细节 如果它太小,那么在低密度区域附近可能会出现明显的间隙 但正如前面所说的,这有不止一个解决方案,所以你需要稍微调整一下,使想要的输出可能是一些用户输入,以便稍微摇晃解决方案,直到找到想要的解决方案

[附注]

你可以处理更多的covex多边形

仅当符合缠绕规则时添加行 当找不到更多行时停止 从未使用的点重新开始 最后尝试连接找到的非闭合多边形。。。
问题是,通过点的顺序可以定义不同的多边形,因此通常没有唯一的解决方案?它具有许多多边形等功能。也许你会发现你的需求已经在那里实现了。。。你的问题类似于旅行推销员的问题。多年前,我用模拟退火法解决了这个问题。实现它应该是非常简单的。看看这里有一些关于如何解决这个问题的想法