Використовуючи шар пам'яті як вхідний та / або вихідний сигнал з 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 або не приймає шари, що знаходяться в пам'яті, або що він не може вивести жодного?


Відповіді:


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 зараз потрібен список вхідних шарів.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.