2010-11-24 164 views

回答

7

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

您可以使用geos :: operation :: buffer :: BufferOp类来修复多边形。例如。

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

您可以找到Secrets of the JTS Topology Suite.

1

往往指向交叉是允许的,所以你可以改变

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

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

那里点3和6相同。如果不允许点相交,请将其中一个小点移动。

根据我的经验,大多数这样的交点有些来自错误的多边形简化,所以如果可能的话返回源代码会更好。

0

自相交多边形一些更多的好食谱是无效的。因此BufferOp可能会导致无效的结果。 我没有找到任何方法修复Geos中的自相交多边形。 PostGIS中的st_makevalid函数使用geos。因此可以调查源代码。

+2

值得说明的是“自相交多边形无效”,但根据OGC SFS。它是几何世界中有效的复杂多边形。 – mloskot 2011-11-07 12:02:26

相关问题