如何修复具有自相交的多边形?

时间:2010-11-24 14:38:30

标签: geometry intersection geos

有没有办法使用GEOS从多边形中删除自交叉?

3 个答案:

答案 0 :(得分:7)

所以,我必须自己回答这个问题。也许它会帮助别人。

您可以使用geos :: operation :: buffer :: BufferOp类修复多边形。 E.g。

geos::geom::Geometry * result = 
                       geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);

您可以在Secrets of the JTS Topology Suite.

中找到更多好的食谱

答案 1 :(得分:1)

通常允许点交叉点,因此您可以更改

1  2   4
*--*   *       
|   \ /|
|    X |
|   / \|
*--*   *
6  5   3

1  2   4
*--*   *       
|   \ /|
|   3*6|
|   / \|
*--*   *
8  7   5

其中第3点和第6点相同。如果不允许点交叉点,请移动其中一个点。

根据我的经验,大多数此类交叉点都来自错误的多边形简化,因此如果可能的话,最好回到源。

答案 2 :(得分:1)

自相交多边形无效。因此,BufferOp可能会给出无效结果。 我没有找到任何方法来修复地理中的自相交多边形。 PostGIS中的st_makevalid函数使用地理。因此可以调查源代码。

相关问题