Apakah mungkin mendapatkan lapisan tersebut dikembalikan oleh alat GRASS tanpa menyimpannya ke disk di QGIS?
Saya menggunakan beberapa alat GRASS di QGIS Python Console. Semua tools yang saya gunakan kembali kamus dengan kunci dan nilai yang berisi string path, seperti ini: {"output": "file/path"}
. Ada jawabannya disini . Ini menyarankan untuk menggunakan string itu dalam QgsVectorLayer
. Tetapi menulis / membaca file ke / dari disk memakan waktu.
Saya mencoba processing.runAndLoadResults
dan processing.run
. Keduanya menambahkan lapisan. Tetapi sebelum menambahkan lapisan, mereka menyimpan lapisan tersebut ke disk, lalu menambahkannya.
processing.run("grass7:v.buffer", {..., 'output':'TEMPORARY_OUTPUT', ...})
# returns {'output': '/tmp/.../output.gpkg'} -> file path
processing.runAndLoadResults("grass7:v.buffer", , {..., 'output':'TEMPORARY_OUTPUT', ...})
# returns {'output': '/tmp/.../output.gpkg'} -> file path
Saya bertanya-tanya, apakah ada cara untuk mendapatkan lapisan yang dikembalikan / ditambahkan dengan alat GRASS tanpa menyimpan ke disk (untuk digunakan di alat pemrosesan berikutnya dalam skrip Python)?
Jawaban
Saya rasa tidak ada cara untuk menggunakan alat GRASS di QGIS. Saya mencatat bahwa alat GRASS yang saya gunakan selalu mengembalikan jalur file. Satu-satunya cara yang dapat saya capai untuk mendapatkan lapisan tanpa menyimpannya adalah dengan menggunakan alat pemrosesan asli QGIS melalui processing.run
metode. Jawaban ini menjelaskan bagaimana melakukannya.
Jika Anda menggunakan lapisan keluaran sebagai lapisan perantara, saya sarankan Anda untuk menggunakan alat asli yang setara (QGIS) (jika ada) processing.run
yang melaluinya mengembalikan QgsVectorLayer
contoh tanpa menyimpannya ke disk. Jika tidak, saya sarankan Anda untuk menjalankan alat menggunakan processing.run
dan kemudian digunakan QgsVectorLayer
untuk menambahkan output ke memori.