Banyak algoritma pemrosesan memiliki opsi untuk menghemat output sebagai memori. Jika dijalankan dari kotak alat, ini berfungsi dengan baik, karena Anda dapat mencentang kotak "Buka file keluaran setelah menjalankan algoritma".
Melihat kode sumber untuk QGIS, kode untuk memuat lapisan memori tampaknya didefinisikan dalam fungsi Postprocessing.handleAlgorithmResults
. Fungsi ini menggunakan akses ke alg.outputs
daftar, dan melakukan hal berikut:
for out in alg.outputs:
progress.setPercentage(100 * i / float(len(alg.outputs)))
if out.hidden or not out.open:
continue
if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
try:
if out.value.startswith('memory:'):
layer = out.memoryLayer # NOTE!!
QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!!
else:
# ...
Ketika Anda menjalankan pemrosesan algoritma dari konsol, apakah ada cara untuk memuat layer tanpa akses ke objek ini? saya bisa berlari
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
atau bahkan
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Namun saya tidak dapat menemukan cara untuk mengambil output yang dihasilkan.