PostGIS2で一連の街路セグメントを街区に変換する方法は?


8

理論的には、街路が街路軸(LineStrings)で表されている場合、街路ブロック(都市ブロック)のポリゴンを街路から取得できます。

都市のブロックは道路で囲まれているため、道路のセグメントを使用して、内部に1つのブロックのみを含むポリゴンを形成できます。図を参照してください。

これを行う(SQL)PostGIS 2.Xスクリプトはありますか?プラグインソフトウェア?
PS:おおよその街区形状で十分です。

説明する

「接続されたラインセグメントのメッシュ」からプロセスを開始すると、次のようになります。1)関連するポリゴンを取得します。2)負のバッファとラインのバッファ減算によってポリゴンを分離します。

ここに画像の説明を入力してください

例:ポリゴン262(都市ブロックを表す)は、セグメント2496、2494、2369、1513、...によって作成されました。また、隣接するポリゴン263はいくつかの共通セグメントを使用できますが、次に(負のst_bufferまたは別の操作によって)本当に孤立したポリゴンなので、低精度で十分です。


(編集)

この特定の問題をより一般的な問題に変換できると思います。一連のストリートセグメントは、一種のテッセレーションと見なすことができます 。つまり、セグメントは平面を隣接する領域に分割します 。都市のブロックはこれらの内部にあります地域。各セグメントは2つのリージョンの側面です。

主な問題は、「テッセレーションのセグメントのセット」を独立したポリゴンに変換することです


おそらく、新しいpostgisトポロジモジュールを使用すると、街路の境界をグループ化して、このポリゴン(閉じた領域)を形成できます。
cavila 2013

どのようにブロックを取得することを提案しますか?通りは(概念的には)ラインストリングですが、各ブロックはポリゴンです。流線、公園、自然保護区、戦斧のブロック(例:anewhouse.com.au/2012/07/battleaxe-block)、川/小川があるブロックの存在下で、ラインストリングが与えられた単一の都市ブロックをどのように見つけますか/通りの間の稜線など?
BradHards 2013

@Cavilaに感謝します。例を探していて、このようなものを探していましたが、それは私が必要としていることですが、すべて「ポリゴン」で始まり、「テッセレーションセグメント」ではありません(問題の一般化を参照)。私の入力は一連のセグメントです。
ピータークラウス

@BradHards、レビューをありがとう(!)、問題の焦点を示すために編集しました。はい、戦闘斧ブロックのような多くの例外があります。はい、「完全なテッセレーション」のために川のセグメント、鉄道のセグメントなどを追加する必要があります。ブロックの「最初の近似」のみが必要であり、ブロックの完全で自動化された構築は必要ありません。
Peter Krauss

彼は通りの境界に基づいてブロックまたはセクターを取得する用意があると思います。1つの物件に1つの都市区画ではありません。1つの解決策は、開始点にシンボルをプロットし、シンボルをプロットした開始場所に戻るまで右に曲がり始める歩行者をリサンプルすることです。したがって、ポリゴンまたは閉じた境界が得られます。
cavila 2013

回答:


7

ST_PolygonizePostGIS の集約はgeometry_dump、一連の線によって形成されるすべての可能なポリゴンを含むを返します。あなたの例に示されているブロックIDは、入力ラインワークのIDとは関係がないと想定しています。この場合、ポリゴンとIDは次のようにして取得できます。

SELECT (st_dump).path[1] as poly_id, (st_dump).geom FROM
    (SELECT ST_Dump(ST_Polygonize(geom)) FROM 
        (SELECT ST_Union(geom) as geom FROM lines) mergedlines) polys

ここで遅い部分はST_Unionです。入力ラインが適切にノード化されている限り、これはその呼び出しなしで動作するようですが、私は成功していません。

行き止まりの道路はポリゴン化プロセスによって無視されるため、負のバッファーでは、例に示されている正確な結果は得られません。ただし、元のラインワークのポジティブバッファーを取得ST_Differenceして、ブロックポリゴンからその領域を削除するために使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.