Bir GRASS aracı tarafından döndürülen katmanı QGIS'de diske kaydetmeden elde etmek mümkün müdür?

Dec 18 2020

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.runAndLoadResultsve 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

3 KadirŞahbaz Dec 18 2020 at 19:08

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.runyö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.rundöndüren eşdeğer yerel (QGIS) aracı (varsa) kullanmanızı öneririm QgsVectorLayer. Aksi takdirde, kullanarak bir araç çalıştırmanızı processing.runve ardından QgsVectorLayerçıktıyı belleğe eklemek için kullanmanızı öneririm .