Speicherschicht als Eingabe und / oder Ausgabe mit runalg verwenden?

9

Kann eine Speicherschicht als Eingabe und / oder Ausgabe mit runalg verwendet werden ?

Mit runandload bekomme ich folgendes zum Laufen :

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

Parameter 2 und 3 sind die Eingabeebenen, die sich bereits im Speicher befinden, und Parameter 3 ist die Ausgabeebene, die in den Speicher geschrieben und im folgenden Tool (Auflösen) verwendet wird. Dies funktioniert einwandfrei , aber wenn ich versuche, dieselbe Logik mit runalg zu verwenden , scheint meine zusammengeführte Ebene im Speicher nicht erstellt zu werden, da das Auflösungswerkzeug nie ausgeführt wird. Folgendes würde beispielsweise nicht funktionieren:

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

Kann ich davon ausgehen, dass runalg entweder keine im Speicher befindlichen Ebenen akzeptiert oder keine ausgeben kann?

BritishSteel
quelle
2
Siehe auch
alphabetasoup

Antworten:

4

Sie sind sich nicht ganz sicher, warum Ihre Methode nicht funktioniert, aber eine andere Methode ist die Verwendung Nonebei der Verwendung, runalgda dies auch eine Ausgabe im Speicher erzeugt. Im Folgenden habe ich den ersten Prozess als definiert output_0und das Ergebnis als Eingabe für den zweiten Prozess bezeichnet:

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

Ergebnis:

Ergebnis


Getestet auf QGIS 2.16.0-Nødebo mit dem Processing Plugin v2.12.2.

Beachten Sie, dass qgis:mergevectorlayers jetzt eine Liste der Eingabeebenen erforderlich ist.

Joseph
quelle