QGIS / Pythonでベクトルをスケルトン化する


8

QGISとそのバンドルを使用して、大きなベクターデータセットのスケルトンを作成するツールを見つけようとしています。Pythonまたはコマンドラインを介してプログラムから直接呼び出すことができます(QGIS、GRASS、OGRなどはすべて問題ありません)。

ターゲットは、ストリートエリアを表す穴のある大きな細いポリゴンであり、スケルトン化によって道路ネットワークの概算を取得する必要があります。

これまでに見つけたもの:

  • GRASS 7.0はv.skeleton十分に優れているはずですが、近い将来、QGISとの統合には対応していないようです。
  • もちろん、CGALにはスケルトンアルゴリズムがありますが、Pythonのサポートは非​​常に貧弱です。
  • pySkeletonは私にとっては機能せず、おそらくコードをサルベージする時間がありません。

他の代替手段(openJumpスケルトン、この古いArcGISプラグイン ...)は、QGIS / Pythonに簡単に接続できません。

他の提案はありますか?


4
GRASS 7.0 「Pythonまたはコマンドラインを介してプログラムから直接呼び出すことができる」ので、ソリューションもQGISに緊密にバインドする必要があるのはなぜですか?また、PostGISはどうですか?データはどのように保存されますか?
alphabetasoup

2
直接使用できるQGISプラグインとしてソリューションを投稿したいので、QGISにバンドルされているGRASSバージョンを使い続けたいです。
JanŠimbera2015年

回答:


6

このドキュメント「のPostGISを使用してスケルトン化ポリゴンは、」からツール利用するプロセスについて説明しPostGISのGRASSどちらも、可能性が呼び出し可能に。PostGISを使用してベクターのスケルトンを作成し、PostGISを再度使用するかGRASSを使用してクリーンアップすることについて言及しています。

以下のようなPython /コマンドラインから呼び出すときに、うまくいけば、処理ツールボックスからの既存のツールがあります。

  • PostGISにインポート-データセットをインポートするために使用します。

  • PostGIS実行SQL-ST_StraightSkeleton関数の実行に使用します。

  • v.clean-rmdangleツールの実行に使用します。

お役に立てれば!


ありがとう!ただし、PostGISがインストールされていないと想定する必要があります...
JanŠimbera15年

@JanŠimbera-バディと幸運を歓迎します!あなたが持っている非常に興味深い問題のように聞こえます:)
ジョセフ

4

1つは、ややラウンドアラウンドオプションは、QGISまたはコマンドラインユーティリティを使用して、SAGAのグリッドスケルトン化モジュール(http://www.saga-gis.org/saga_module_doc/2.1.3/imagery_segmentation_1.html)を使用することsaga_cmdです。まずポリゴンをSAGAラスターに変換する必要があります。

それ以外の場合は、@ Alpha-beta-soupで述べられているようv.skeletonに、コマンドラインでGRASSから使用できます。

Python内からコマンドラインツールを使用するには、subprocessモジュールを使用してコマンド文字列をシステムに渡します。


提案をありがとう。範囲が大きく、高解像度の結果が必要なため、ラスターに変換したくない。それを最後の手段として考えています。
JanŠimbera2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.