¿Usando la capa de memoria como entrada y / o salida con runalg?

9

¿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?

BritishSteel
fuente
2
Relacionado: gis.stackexchange.com/questions/144948/…
alphabetasoup

Respuestas:

4

No estoy completamente seguro de por qué su método no funciona, pero otro método es usarlo Nonecuando se usa, runalgya que esto también creará una salida en la memoria. A continuación, definí el primer proceso como output_0y llamé al resultado de esto como entrada para el segundo proceso:

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

Resultado:

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.

José
fuente