ポリゴンをPyQGISを使用してネイバーにヒットするまでバッファリングしますか?


8

複数のポリゴンで構成されたシェープファイルがあります。多くの場合、隣接するポリゴンは属性を共有します。

私がする必要があるのは、共通の属性に基づいてこれらのポリゴンをバッファリングすることです。ただし、これらのバッファーが満たされるまで停止して停止できるまで、バッファーを拡張したいと思います。

私は急いで組み立てられたモックアップを持っています:

poorlyDrawExample

私がコードに関して持っているのは次のとおりです:

from qgis.core import *
from qgis.analysis import *

layer=qgis.utils.iface.activeLayer() 

QgsGeometryAnalyzer().dissolve(layer, "D:/test_dissolved.shp", onlySelectedFeatures=False, uniqueIdField=3, p=None)

正直なところ、私はQGIS APIドキュメントに精通しておらず、最善を尽くしても、これに適したメソッドを見つけることができません。 QgsGeometryAnalyzer().dissolve私はバッファを溶解することができますが、それは私が求めているものではありません。

ここで別の方向に目を向けるべきでしょうか?

回答:


5

あなたが試すことができるものは、ポリゴンをボロノイ処理し、次に同様の属性によってディゾルブするティーセンプロセスです。これがpythonでどうなるかはわかりませんが、手順が役立つかもしれません。


私はpyQGISを使用してボロノイルートを見つけ出し、それがどこへ行くのかを見ていきます。私はオープンソースのソリューションを使用するという考え方を好みます。
Ingwe 2017

オープンソースとはどういう意味ですか?QGISとそのすべてのツールは、無料のオープンソースライセンスに基づいています。
Knightshound 2017

2

おそらく、ラスター分析関数を探索する必要があります。ArcGIS for Desktop Basicを使用して海底峡谷データベース内のすべてのポリゴンの中心線作成するを参照してくださいそして、入力機能としてライン(よりむしろ点)を用いて、ティーセン(ボロノイ)ポリゴンを作成?さらなるインスピレーションを。

もちろん、これには適切なラスター解像度を使用する必要があります。


ラスタに変換するというこのアイデアが気に入って、思いついたのですが、データセットが大きいと処理時間が非常に遅くなりますか?
Ingwe 2017

ベクトルで同じことを繰り返し行うよりも遅くないかもしれません。
bugmenot123 2017

1

先日、少し関連のある仕事がありました。理論では、(重み付けされた)建物の中心点を持つボロノイポリゴンは、単にあなたのケースの解決策になるはずですが、私にはうまくいきませんでした。PostgreSQLはあなたが求めたものではありませんが、回避策として、それが最初のステップで求めている各建物の間の「中心線」である場合、PostGIS ST_ApproximateMedialAxisを使用することは試してみる価値があります。関連する結果を取得するには、関数をベースポリゴンに適用する前に、調査領域全体のベースポリゴンを作成し、建物のポリゴンを切り取る必要があります。うまくいくかもしれないが、できないかもしれない...

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