¿Se puede usar una capa de memoria como entrada y / o salida con runalg ?
Con runandload consigo que esto funcione:
processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")
Los parámetros 2 y 3 son las capas de entrada, que ya están en la memoria, y el parámetro 3 es la capa de salida, que se escribe en la memoria y se usa en la siguiente herramienta (Disolver). Esto funciona bien, pero cuando trato de usar la misma lógica con runalg , parece que mi capa fusionada en la memoria no se crea, ya que la herramienta Disolver nunca se ejecuta. Lo siguiente, por ejemplo, no funcionaría:
processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")
¿Puedo suponer que runalg no acepta capas que están en la memoria o que no puede generar ninguna?
qgis
pyqgis
qgis-processing
BritishSteel
fuente
fuente
Respuestas:
No estoy completamente seguro de por qué su método no funciona, pero otro método es usarlo
None
cuando se usa,runalg
ya que esto también creará una salida en la memoria. A continuación, definí el primer proceso comooutput_0
y llamé al resultado de esto como entrada para el segundo proceso:Resultado:
Probado en QGIS 2.16.0-Nødebo con el complemento de procesamiento v2.12.2.
Tenga en cuenta que
qgis:mergevectorlayers
ahora requiere una lista de capas de entrada.fuente
http://gis.stackexchange.com/q/76594/22646 arroja más luz sobre runalg, runandload y la capa de memoria. Según http://gis.stackexchange.com/a/184802 , la forma de referirse a la capa de memoria resultante depende de la versión de Procesamiento.
fuente