有没有办法使用GEOS从多边形中删除自交叉?
答案 0 :(得分:7)
所以,我必须自己回答这个问题。也许它会帮助别人。
您可以使用geos :: operation :: buffer :: BufferOp类修复多边形。 E.g。
geos::geom::Geometry * result =
geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);
中找到更多好的食谱
答案 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函数使用地理。因此可以调查源代码。