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?
qgis
pyqgis
qgis-processing
BritishSteel
fonte
fonte
Respostas:
Não sei ao certo por que seu método não funciona, mas outro método é usar
None
ao usar,runalg
pois isso também criará uma saída na memória. Abaixo, defini o primeiro processo comooutput_0
e chamei o resultado disso como entrada para o segundo processo: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.fonte
http://gis.stackexchange.com/q/76594/22646 lança mais luz sobre a camada de execução, carga de execução e memória. De acordo com http://gis.stackexchange.com/a/184802 , a maneira de se referir à camada de memória resultante depende da versão de processamento.
fonte