Używasz warstwy pamięci jako danych wejściowych i / lub wyjściowych w runalg?


9

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ć?


Odpowiedzi:


4

Nie całkowicie pewien, dlaczego metoda nie działa, ale inna metoda to zamiast używać Noneprzy użyciu runalgjak to będzie także stworzyć wyjście w pamięci. Poniżej zdefiniowałem pierwszy proces jako output_0i nazwałem jego wynik jako dane wejściowe do drugiego procesu:

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

Wynik:

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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.