Ich versuche, ein Verarbeitungsskript mit dem Grasalgorithmus r.neighbors
für Raster zu schreiben . Wenn Sie die GUI für diesen Algorithmus verwenden, können Sie das GRASS-Ebenenausdehnungsfeld leer lassen, um die minimale Ausdehnung zu verwenden. Im Gegenteil, wenn ich in der Python-Konsole verwendet werde, kann ich nicht finden, wie diese Art von "Standard" -Wert eingegeben werden kann.
Ich habe auf https://docs.qgis.org/2.2/en/docs/user_manual/processing/console.html gesehen, dass es obligatorisch zu sein scheint, die vier Koordinaten für einen Extent-Parameter einzugeben. Ich habe versucht, zu verwenden, iface.mapCanvas().extent()
aber das zurückgegebene Objekt wird nicht als Parameter akzeptiert und ich kann nicht finden, wie ich seine Koordinaten erhalten kann.
Gibt es eine Möglichkeit, xmin, ymin, xmax, ymax
die Ebene in PyQGIS dazu zu bringen, sie in den Algorithmus einzugeben? Mache ich das total falsch
extent
fehlen, sodass sie nicht funktionierten. .Antworten:
Die Antwort ist fast vollständig in einem Beitrag enthalten, den ich kürzlich geschrieben habe.
Der Extent wird als QgsRectangle () -Objekt mit dem folgenden Code zurückgegeben:
Um die Koordinaten der Eckpunkte für die aktuelle Ebene abzurufen, können Sie diesen Code ausführen:
Schließlich können Sie den folgenden Code für die Verwendung des
r.neighbors
Moduls in der Python-Konsole ausführen :quelle
Sie waren auf dem richtigen Weg, Sie müssen nur noch einen Schritt weiter gehen. Weitere Informationen finden Sie in der QGIS-Dokumentation zu QgsRectangle
Grundsätzlich tun Sie:
Holen Sie sich die aktuelle Ebene
Holen Sie sich das Ausmaß, das ein QgsRectangle-Objekt ist
und extrahiere dort die Werte mit:
quelle