Можно ли использовать слой памяти как вход и / или выход с помощью 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 либо не принимает слои, находящиеся в памяти, либо не может выводить какие-либо?
qgis
pyqgis
qgis-processing
BritishSteel
источник
источник
Ответы:
Не совсем уверен, почему ваш метод не работает, но другой метод должен вместо этого использовать
None
при использовании,runalg
поскольку это также создаст вывод в памяти. Ниже я определил первый процесс какoutput_0
и назвал результат этого как вход для второго процесса:Результат:
Протестировано на QGIS 2.16.0-Nødebo с плагином Processing v2.12.2.
Обратите внимание, что
qgis:mergevectorlayers
теперь требуется список входных слоев.источник
http://gis.stackexchange.com/q/76594/22646 проливает больше света на runalg, runandload и уровень памяти. Согласно http://gis.stackexchange.com/a/184802 , способ обращения к полученному уровню памяти зависит от версии обработки.
источник