2010-11-24 28 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

は、多くの場合、あなたは

ポイント3と6が同じである
1 2 4 
*--* *  
| \ /| 
| 3*6| 
| /\| 
*--* * 
8 7 5 

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

を変更できるように交差点が、許可されているポイント。点の交点が許されない場合は、それらの1つを少々移動します。

私の経験では、ほとんどのこのような交差点はポリゴンの簡略化から得られたものなので、可能であればソースに戻ってください。

0

にいくつかのより良いレシピを見つけることができます。したがって、BufferOpは無効な結果を与える可能性があります。 ジオスで自己交差ポリゴンを修正する方法が見つかりませんでした。 PostGISのst_makevalid関数はgeosを使用します。したがって、ソースコードを調べることは可能です。

+2

OGC SFSによれば、「自己交差ポリゴンは無効です」ということを明確にする価値はあります。ジオメトリの世界で有効な複雑なポリゴンです。 – mloskot