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?
qgis
pyqgis
qgis-processing
BritishSteel
sumber
sumber
Jawaban:
Tidak sepenuhnya yakin mengapa metode Anda tidak berfungsi, tetapi metode lain digunakan sebagai gantinya
None
saat digunakanrunalg
karena ini juga akan membuat output dalam memori. Di bawah ini saya mendefinisikan proses pertama sebagaioutput_0
dan menyebut hasil ini sebagai input ke proses kedua:Hasil:
Diuji pada QGIS 2.16.0-Nødebo dengan Processing plugin v2.12.2.
Perhatikan bahwa
qgis:mergevectorlayers
sekarang memerlukan daftar lapisan input.sumber
http://gis.stackexchange.com/q/76594/22646 gudang lebih banyak cahaya pada runalg, runandload dan lapisan memori. Menurut http://gis.stackexchange.com/a/184802 , cara merujuk ke lapisan memori yang dihasilkan tergantung pada versi Pemrosesan.
sumber