Bir GRASS aracı tarafından döndürülen katmanı QGIS'de diske kaydetmeden elde etmek mümkün müdür?
QGIS Python Konsolunda bazı GRASS araçları kullanıyorum. Kullandığım tüm araçlar bir anahtar ve bunun gibi dize yolunu içeren bir değere sahip bir sözlük dönmek: {"output": "file/path"}
. Burada bir cevap var . Bu dizeyi kullanmayı önerir QgsVectorLayer
. Ancak diske / diske dosya yazmak / okumak zaman alıcıdır.
Denedim processing.runAndLoadResults
ve processing.run
. Her ikisi de bir katman ekler. Ancak katmanı eklemeden önce katmanı diske kaydedip sonra eklerler.
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
Merak ediyorum, GRASS aracıyla döndürülen / eklenen katmanı diske kaydetmeden almanın bir yolu var mı (bir Python komut dizisindeki sonraki işleme aracında kullanmak için)?
Yanıtlar
QGIS'te GRASS aracı kullanmanın bir yolu olduğunu sanmıyorum. Kullandığım GRASS araçlarının her zaman dosya yolunu döndürdüğünü fark ettim. Katmanı kaydetmeden elde etmenin tek yolu, QGIS yerel işleme araçlarını processing.run
yöntem aracılığıyla kullanmaktı. Bu cevap nasıl yapılacağını açıklıyor.
Çıktı katmanını ara katman olarak kullanırsanız, örneği diske kaydetmeden processing.run
döndüren eşdeğer yerel (QGIS) aracı (varsa) kullanmanızı öneririm QgsVectorLayer
. Aksi takdirde, kullanarak bir araç çalıştırmanızı processing.run
ve ardından QgsVectorLayer
çıktıyı belleğe eklemek için kullanmanızı öneririm .