Использование слоя памяти в качестве входа и / или выхода с runalg?

9

Можно ли использовать слой памяти как вход и / или выход с помощью runalg ?

С runandload я получаю это для работы:

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

Параметр 2 и 3 - это входные слои, которые уже находятся в памяти, а параметр 3 - это выходной слой, который записывается в память и используется в следующем инструменте (Dissolve). Это работает нормально, но когда я пытаюсь использовать ту же логику с runalg , то мой объединенный слой в памяти не создается, так как инструмент Dissolve никогда не запускается. Следующее, например, не будет работать:

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

Могу ли я предположить, что runalg либо не принимает слои, находящиеся в памяти, либо не может выводить какие-либо?

BritishSteel
источник
2
Связанный: gis.stackexchange.com/questions/144948/…
alphabetasoup

Ответы:

4

Не совсем уверен, почему ваш метод не работает, но другой метод должен вместо этого использовать Noneпри использовании, runalgпоскольку это также создаст вывод в памяти. Ниже я определил первый процесс как output_0и назвал результат этого как вход для второго процесса:

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

Результат:

Результат


Протестировано на QGIS 2.16.0-Nødebo с плагином Processing v2.12.2.

Обратите внимание, что qgis:mergevectorlayers теперь требуется список входных слоев.

Джозеф
источник