计算几何-如何将一组2D点(多点)转换为多边形



我有一组密集的、不确定分布的2D点("分散在各处")。它们可以存储在单个MULTIPOINT WKT对象中,包括"孔",或者如果需要,可以存储为delaunay三角形。

如何将其转换为多边形,即一个外边界和零个、一个或多个内边界?

附言:这不是我要找的最大的封闭多边形(可以通过ConvexHull或ConcaveHull解决)。我正在寻找一个真正的多边形,其形状与散射点集(包括内部边界)相同。

在我看来,你的问题就像"找到一个有一组给定点作为顶点的多边形。"这种解释正确吗?

如果是这样,可以执行以下操作:创建点的凸包。将这些点从考虑中删除,并取其余点的凸包。以这种方式继续操作,直到没有剩余的点为止。中间结果将是一个嵌套在另一个内部的凸多边形序列。通过连接后续的每对多边形,可以将它们变成单个多边形。通过从两个多边形中删除一条边,然后"反过来"连接生成的端点,可以连接两个多边形。需要注意的是,这些连接不会与其他任何东西重叠,但这不应该太难。

请注意,在我阅读的过程中,有许多可能的结果符合规范。如果你需要一个特定的结果,你必须详细说明选择的标准。

使用QHull:http://www.qhull.org/

这是这类事情的事实上的标准。

最新更新