Ich möchte die QGIS-Interpolations-Plugin-Funktion (TIN-Methode) (Raster-> Interpolate) von der Python-Konsole aufrufen.
Ich kann die entsprechende Funktion in der QGIS-API oder in der Liste der Verarbeitungsalgorithmen nicht finden. Ich habe den SAGA-Triangulationsalgorithmus gefunden, der gut funktioniert, aber 5-10 x langsamer ist, und in meinem Fall ist die Geschwindigkeit wichtig.
Irgendeine Idee, wie man es ausführt?
qgis
python
qgis-plugins
pyqgis
Vincent D.
quelle
quelle
from rasterinterpolation import rasterinterpolation
aber nicht sicher, welches Modul ich aufrufen soll (oder wie ich es überhaupt aufrufen soll).Antworten:
In der folgenden Frage konnte ich eine vollständige Lösung anbieten:
Wie berechnet man ein Interpolations-Raster aus der Python-Konsole in QGIS?
Ich werde die Antwort auch hier erneut veröffentlichen, da das Interesse offensichtlich sehr groß ist:
Antworten:
Die Dokumentation auf PyQGIS ist nicht sehr selbsterklärend, aber ich herausgefunden, wie richtig die damit verbundene Interpolation Klassen nennen (
QgsInterpolator
,QgsTINInterpolator
,QgsIDWInterpolator
,QgsGridFileWriter
) aus Python. Ich werde jeden Schritt des Skripts detailliert beschreiben:Schritt 1:
Importieren Sie das Kern- und Analysemodul und rufen Sie die gewünschte Vektorebene für die Interpolation ab, indem Sie sie mit einem Mausklick auf der Registerkarte "Ebene" auswählen.
Schritt 2:
Bereiten Sie die Interpolationsklassen mit den erforderlichen Parametern vor. Die genauen Parameter für die Initialisierung der LayerData-Struktur finden Sie in den QGIS-API-Dokumenten (Suchbegriff: QgsInterpolator).
Bitte beachten Sie, dass ich die z-Koordinate nicht verwende, das erste verfügbare Feld (Index = 0) als Interpolationsattribut erhalte und POINTS als Eingabetyp verwende.
Schritt 3:
Wählen Sie Ihre Interpolationsmaschine. Hier können Sie zwischen der TIN-Interpolationsmethode (
QgsTINInterpolator
) und der IDW-Interpolation (QgsIDWInterpolator
) wählen . Ich habe dasQgsTINInterpolator
in meinen Code übernommen.Denken Sie daran, dass Sie eine Python-Liste von
layer_data
an die Interpolations-Engine übergeben müssen! Auf diese Weise können Sie auch mehrere layer_data-Szenarien hinzufügen.Schritt 4:
Stellen Sie die Parameter ein, die für den Export der Interpolationsausgabe benötigt werden (siehe Dokumentation von
QgsGridFileWriter
). Diese enthalten ähnliche Informationen wie die Interpolations-GUI (Dateipfad, Umfang, Auflösung, Anzahl der Spalten und Zeilen).Beachten Sie die Dateierweiterung Ihres Ausgabe-Rasters, da
QgsGridFileWriter
nur ASCII-Gitter (.asc
) geschrieben werden. Die Daten werden durch Aufrufen derwriteFile()
Methode auf die Festplatte geschrieben . Nach dem Export können Sie die Rasterdatei als Raster zur Zeichenfläche hinzufügen.Vollständiges Skript als Referenz:
Beachten Sie, dass die QGIS-API derzeit auf Version 3.0 umgeschrieben wird und die verwendeten Interpolationsklassen von
qgis.analysis
nach verschoben werdenqgis.core
! Dies hat enorme Auswirkungen auf die Funktionalität dieses Skripts, sodass es für Version 3.0 neu geschrieben werden muss!quelle
Sie können dies tun, wenn Sie das Raster-Interpolations-Plugin mit dem Plugin-Manager installiert haben.
Hinweis: Ich weiß nicht wirklich, was der obige Code außer der Tatsache, dass es einen Wert gedruckt hat, tut. Aber es würde Ihnen wahrscheinlich helfen, die Verwendung zu verstehen.
quelle