Usando a camada de memória como entrada e / ou saída com runalg?


9

Uma camada de memória pode ser usada como entrada e / ou saída com o runalg ?

Com runandload, eu faço isso funcionar:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

Os parâmetros 2 e 3 são as camadas de entrada que já estão na memória e o parâmetro 3 é a camada de saída, que é gravada na memória e usada na ferramenta a seguir (Dissolver). Isso funciona bem, mas quando tento usar a mesma lógica com runalg , minha camada mesclada na memória parece não ser criada, pois a ferramenta Dissolve nunca é executada. O seguinte, por exemplo, não funcionaria:

 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")

Posso assumir que o runalg não aceita camadas que estão na memória ou que não pode gerar nenhum?


Respostas:


4

Não sei ao certo por que seu método não funciona, mas outro método é usar Noneao usar, runalgpois isso também criará uma saída na memória. Abaixo, defini o primeiro processo como output_0e chamei o resultado disso como entrada para o segundo processo:

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


Testado no QGIS 2.16.0-Nødebo com o plugin de processamento v2.12.2.

Observe que qgis:mergevectorlayers agora requer uma lista de camadas de entrada.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.