Menggunakan lapisan memori sebagai input dan / atau output dengan runalg?

9

Dapatkah lapisan memori digunakan sebagai input dan / atau output dengan runalg ?

Dengan runandload saya mengaktifkan ini:

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

Parameter 2 dan 3 adalah lapisan input, yang sudah ada dalam memori, dan parameter 3 adalah lapisan output, yang ditulis ke dalam memori dan digunakan dalam alat berikut (Dissolve). Ini berfungsi dengan baik, tetapi ketika saya mencoba menggunakan logika yang sama dengan runalg , maka layer gabungan saya dalam memori sepertinya tidak dibuat, karena alat Dissolve tidak pernah berjalan. Misalnya, yang berikut ini tidak akan berfungsi:

 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")

Dapatkah saya berasumsi bahwa runalg tidak menerima lapisan yang ada di memori atau tidak dapat menghasilkan apa pun?

BritishSteel
sumber

Jawaban:

4

Tidak sepenuhnya yakin mengapa metode Anda tidak berfungsi, tetapi metode lain digunakan sebagai gantinya Nonesaat digunakan runalgkarena ini juga akan membuat output dalam memori. Di bawah ini saya mendefinisikan proses pertama sebagai output_0dan menyebut hasil ini sebagai input ke proses kedua:

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

Hasil:

Hasil


Diuji pada QGIS 2.16.0-Nødebo dengan Processing plugin v2.12.2.

Perhatikan bahwa qgis:mergevectorlayers sekarang memerlukan daftar lapisan input.

Yusuf
sumber