PostGIS / Pythonで複雑なポリゴンの中心線を抽出する


8

PostGIS関数またはPythonモジュールを使用して、次のポリゴンの中心線(図1)を抽出する方法はありますか?ボロノイ関数を試してみましたが、このような形状には役立ちません。Fig2の黒い線のようなものが欲しい。

図1:ポリゴンの形状 図2:中心線


2
この回答を確認することをお勧めします:gis.stackexchange.com/questions/29863/… 代わりにArcGISを使用していることを知っていますが、このアプローチが役立つ場合があります。
WhiteboxDev


@Jakub既存のPostGISデータベースにSFCGAL(スケルトン機能に必要)を構成しようとしています。ディレクトリにlibSFCGAL.soファイルをインストールしましたが、dbを取り込む/usr/local/lib方法がわかりませんがST_StriaghtSkeleton()?何か案が?
Zia

PostGISはSFCGALサポートを使用してコンパイルする必要がありますが、これは別の質問であり、あまり慣れていません。
Jakub Kania 14

@Jakubありがとう。私はこのSFCGAL構成を自分でここで
Zia

回答:


4

これは間違ったツールかもしれませんが、OpenJUMPとSkeletonizerプラグインを使用するだけで簡単に実行できます。プラグインはhttp://sourceforge.net/projects/jump-pilot/files/OpenJUMP_plugins/More%20Plugins/JUMP%20Skeletonizer%20Plugin/からダウンロードできます。

Zipファイルには適切なマニュアルが含まれています。プラグインは、小川と水域を対象としていますが、ポリゴンは小川を模倣しています。

これは私がデジタル化したポリゴンです。入力/出力の中心線の頂点に注意してください。

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

別のレイヤーでデジタル化されたエントリポイント。ポイントはポリゴン境界の頂点にスナップする必要があります。

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

スケルトン化ツールを使用してフィールドに入力する

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

結果を得る

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


残念ながら、jarファイルにはマニュアルが含まれていません。このプラグインをOpenJump-GUIに追加する方法を教えていただけませんか?
Zia

zipの中を見ると、skeletonizer-1.0 \ doc \に「SkeletonizerUserGuide.doc」というファイルがあります。インストールは、jarファイルをskeletonizer-1.0 \ lib \からOpenJUMPのlib \ extディレクトリにドロップすることによって行われます。
user30184 2014

ただし、ほとんどのjarまたはそれらの新しいバージョンは、OpenJUMPの\ libまたは\ lib \ extにすでに含まれているようです。おそらく、不足しているように見えるものだけをコピーするのが最善です。新しいjarを追加した後、再起動が必要です。
user30184 2014

私はこの瓶をここで見つけまし。しかし、java.lang.Exception: Could not determine shapefile type - data is either all GeometryCollections or empty (Illegal State Exception)このSkeletonizerプラグインの実行中にこのエラーが発生します
Zia

3

ポリゴンがラスターの場合は、デジタル化します。

ポリゴンが実際にポリゴンになると:)、最初の解決策は、@ WhiteboxDevが言ったようにありますが、これはまっすぐなスケルトンですが、必要な中心線の他に、その線から放射状に広がる多数のセグメントも返すという問題があります。ポリゴンの境界。ただし、PostGIS 2.2以降を使用している場合は、ST_ApproximateMedialAxis()代わりに使用できます。

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