题
有没有办法从使用GEOS多边形除去自相交?
解决方案
所以,我来回答这个问题我自己。也许这将帮助别人。
可以使用GEOS ::操作::缓冲器:: BufferOp类修复的多边形。 E.g。
geos::geom::Geometry * result =
geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);
您可以找到在JTS拓扑套件的秘密一些更多的好食谱。
其他提示
常点交叉点是允许的,所以可以改变
1 2 4
*--* *
| \ /|
| X |
| / \|
*--* *
6 5 3
到
1 2 4
*--* *
| \ /|
| 3*6|
| / \|
*--* *
8 7 5
其中点3和6是相同的。如果点交叉点是不允许的,移动它们中的一个的量小。
在我的经验,大多数这样的十字路口一些从故障多边形简化,所以倒不如回到源如果可能的话。
自相交多边形是无效的。因此BufferOp可能会无效结果。 我没有找到任何方式在GEOS修复自相交多边形。 在PostGIS的st_makevalid函数使用GEOS。因此,有可能研究的源代码。
不隶属于 StackOverflow