runalgでメモリレイヤーを入力または出力として使用していますか?


9

メモリ層をrunalgの入力および/または出力として使用できますか?

runandload私は仕事にこれを取得します:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

パラメータ2と3はすでにメモリ内にある入力レイヤであり、パラメータ3はメモリに書き込まれ、次のツール(Dissolve)で使用される出力レイヤです。これは正常に機能しますが、runalgで同じロジックを使用しようとすると、メモリにマージされたレイヤーが作成されないように見えます。これは、Dissolveツールが実行されないためです。たとえば、以下は機能しません。

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

runalgがメモリ内のレイヤーを受け入れない、または何も出力できないと想定できますか?


回答:


4

あなたの方法がうまくいかない理由は完全には分かりませんが、別の方法は代わりに使用Noneすることrunalgです。これはこれもメモリに出力を作成するためです。以下では、最初のプロセスをとして定義し、output_0その結果を2番目のプロセスへの入力として呼び出しました。

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

結果:

結果


QGIS2.16.0-Nødeboで処理プラグインv2.12.2を使用してテストされています。

入力レイヤーのリストが必要になることに注意してくださいqgis:mergevectorlayers


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