有没有办法从使用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。因此,有可能研究的源代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top