¿Es posible obtener la capa devuelta por una herramienta GRASS sin guardarla en el disco en QGIS?
Utilizo algunas herramientas de GRASS en QGIS Python Console. Todas las herramientas que uso devuelven un diccionario con una clave y un valor que contiene el camino de cuerda, como esto: {"output": "file/path"}
. Aquí hay una respuesta . Sugiere usar esa cadena en QgsVectorLayer
. Pero escribir / leer un archivo en / desde el disco requiere mucho tiempo.
Lo intenté processing.runAndLoadResults
y processing.run
. Ambos agregan una capa. Pero antes de agregar la capa, guardan la capa en el disco y luego la agregan.
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
Me pregunto, ¿hay alguna manera de obtener la capa devuelta / agregada por la herramienta GRASS sin guardarla en el disco (para usar en la siguiente herramienta de procesamiento en un script de Python)?
Respuestas
No creo que haya una forma de usar una herramienta GRASS en QGIS. Noté que las herramientas de GRASS que usé siempre devolvían la ruta del archivo. La única forma en que pude lograr obtener la capa sin guardarla fue usar las herramientas de procesamiento nativas de QGIS a través del processing.run
método. Esta respuesta explica cómo hacerlo.
Si usa la capa de salida como capa intermedia, le recomiendo que use la herramienta nativa equivalente (QGIS) (si existe) a través de la processing.run
cual devuelve la QgsVectorLayer
instancia sin guardarla en el disco. De lo contrario, le sugiero que ejecute una herramienta processing.run
y luego la use QgsVectorLayer
para agregar la salida a la memoria.