【发布时间】:2015-03-30 11:49:59
【问题描述】:
尊敬的 Stackoverflow 社区,
我有不规则多边形的轮廓作为无序数据点(就像这里的图:https://s16.postimg.org/pum4m0pn9/figure_4.png),我正在尝试对它们进行排序(即创建一个多边形)。
由于多边形的非凸形状,我无法使用凸包包络。我不能作为最小距离标准,因为轮廓其他部分的某些点更靠近(例如:点 A 必须与 B 连接,但更靠近 C)。由于轮廓形状不规则,我不能使用顺时针排序。
有没有人知道一种方法来实现(最好是在 Python 中)一种从起点重新排序数据点的算法?
【问题讨论】:
-
问题是您通过点的顺序可以定义不同的多边形,因此一般没有唯一的解决方案。
-
你看过python的
shapely模块吗?它具有许多多边形等功能。也许你会发现你的需求已经在那里实现了......pypi.python.org/pypi/Shapely -
您的问题类似于“旅行推销员问题”。多年前,我用“模拟退火”解决了这个问题。实现它应该很简单。
-
看这里finding holes in 2D point set 了解如何解决这个问题的一些想法
标签: python geometry 2d polygon computational-geometry