Czy warstwa run może być używana jako wejście i / lub wyjście w runalg ?
Dzięki runandload mam to do pracy:
processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")
Parametry 2 i 3 to warstwy wejściowe, które są już w pamięci, a parametr 3 to warstwa wyjściowa, która jest zapisywana w pamięci i używana w następującym narzędziu (Rozpuszczanie). Działa to dobrze, ale kiedy próbuję użyć tej samej logiki z runalg , moja scalona warstwa w pamięci nie wydaje się być tworzona, ponieważ narzędzie Dissolve nigdy nie działa. Na przykład następujące elementy nie działałyby:
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")
Czy mogę założyć, że runalg albo nie akceptuje warstw, które są w pamięci, albo że nie może ich wyprowadzać?
qgis
pyqgis
qgis-processing
BritishSteel
źródło
źródło
Odpowiedzi:
Nie całkowicie pewien, dlaczego metoda nie działa, ale inna metoda to zamiast używać
None
przy użyciurunalg
jak to będzie także stworzyć wyjście w pamięci. Poniżej zdefiniowałem pierwszy proces jakooutput_0
i nazwałem jego wynik jako dane wejściowe do drugiego procesu:Wynik:
Testowane na QGIS 2.16.0-Nødebo z wtyczką Processing v2.12.2.
Zauważ, że
qgis:mergevectorlayers
teraz wymaga listy warstw wejściowych.źródło
http://gis.stackexchange.com/q/76594/22646 rzuca więcej światła na runalg, runandload i warstwę pamięci. Według http://gis.stackexchange.com/a/184802 sposób odwoływania się do wynikowej warstwy pamięci zależy od wersji Przetwarzanie.
źródło