有没有办法使用 GEOS 从多边形中删除自相交?
问问题
9699 次
3 回答
7
所以,我必须自己回答这个问题。也许它会帮助某人。
您可以使用 geos::operation::buffer::BufferOp 类修复多边形。例如
geos::geom::Geometry * result =
geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);
您可以在 JTS 拓扑套件的秘密中找到更多好的秘籍。
于 2010-12-08T16:56:59.570 回答
1
通常允许点交叉点,因此您可以更改
1 2 4
*--* *
| \ /|
| X |
| / \|
*--* *
6 5 3
到
1 2 4
*--* *
| \ /|
| 3*6|
| / \|
*--* *
8 7 5
其中第 3 点和第 6 点相同。如果不允许点交叉点,则将其中一个点移动少量。
以我的经验,大多数这样的交叉点都来自错误的多边形简化,所以如果可能的话,最好回到源头。
于 2010-11-24T16:33:39.653 回答
1
自相交多边形无效。因此 BufferOp 可能会给出无效的结果。我没有找到任何方法来修复 geos 中的自相交多边形。PostGIS 中的 st_makevalid 函数使用 geos。因此可以调查源代码。
于 2011-11-07T11:58:56.763 回答