ハロー
あなたが探しているのは特定のアルゴリズムだとは思いません。タスクは、データセットに応じて非常に困難な場合や非常に単純な場合があります。
問題を少なくとも2つの部分に分ける必要があります。1)ネットワーキングの問題、ラインストリングの閉じたリングを見つける方法。2)閉じたラインストリングをポリゴンとして表現する
「ラインをポリゴンに変換する」という2番目の部分は、ポリゴン/ラインストリング表現よりも多くの形式に依存します。私はから行くことを意味します:
LINESTRING(1 1、2 2)
LINESTRING(2 2、2 1)
LINESTRING(2 1、1 1)
宛先:POLYGON((1 1,2 2,2 1,1 1))
線を多角形に変換していますが、あなたが話していることではないでしょう。より難しい部分は最初のものです。ラインのスパゲッティがある場合、それらを閉じたラインストリングとして注文する方法。
その質問に対する答えは、データセットの多くに依存すると思います。カークが尋ねたように、線が問題を越えることができるかどうかははるかに大きい。すべての「ラインコレクション」が閉じたラインストリングの一部であることがわかっている場合は、簡単になります。その後、任意の線をつかみ、再び戻るまでパスを歩き回り、上記のステップ2に進みます。
私のポイントは、データセットの条件がその方法に関するすべてのルールを設定するということです。線ストリングのスパゲッティですべての可能なポリゴンを検索する場合、すべての交差点に頂点ポイントを配置したり、すべての可能なパスを検索したりするために、多くの異なるアルゴリズムが必要になると思います。
PostGISでは、この関数はST_Polygonizeと呼ばれます。
この関数は、指定したラインストリングからすべての可能なポリゴンを作成します。
GEOSによって実行されるため、GEOSとJTSの両方のコードの背後にあるアルゴリズムを見つけることができます。
いくつかの考え
/ Nicklas