Importieren Sie GRASS- und SAGA-Module in Python-Skripte

13

Ich bin neu in diesem Bereich. Ich "baue" ein Python-Plugin für QGIS und möchte Module aus GRASS und SAGA importieren, verstehe aber nicht, wie das geht. Das Plugin, das ich importieren möchte, ist Kriging-Interpolation von SAGA oder v.surf.idw von GRASS oder Interpolations-Plugin von Raster-QGIS. Ich möchte eine Interpolationsmethode, um Punkte im Raster umzuwandeln.

Kannst du mir helfen?


Ich habe noch einen Zweifel.

Ich führe diese Zeilen in meinem Code aus:

vectorlayer_vector =  ftools_utils.getVectorLayerByName(inputLayer)
Elevation = self.lineAttrib.currentText()
cellSize = int(self.linePix.value())
outPath = self.inputLayerCombo3.text()
output = ftools_utils.getRasterLayerByName(outPath) 

Processing.runAlgorithm("saga:shapestogrid", vectorlayer_vector, Elevation, 0, 0, 4, None, cellSize, output)

Wenn ich renne, bekomme ich ein Tiff-Bild, aber ohne etwas. Die .aux-Datei wird nicht erstellt. Wenn ich versuche, das von mir erstellte Tiff-Bild zu öffnen, wird die folgende Meldung angezeigt:

c: ... teste3.tif ist keine unterstützte Raster-Datenquelle

Also denke ich, dass die Ausgabe falsch ist. Was muss ich tun, um eine korrekte Ausgabe zu erhalten? Was ich vermisse?

Bárbara Duarte
quelle

Antworten:

15

Das Processing Framework in QGIS kann diese Funktion direkt von Python aus aufrufen.

Über die QGIS Python-Konsole:

>>>import processing
>>>outputs_0=Processing.runalg("saga:ordinarykriging", vectorlayer_pointtable, z, True, 0, 0, True, 100, True, 0.0, 10.0, 100.0, 1.0, 0.1, 1, 0.5, 1000.0, 4, 20, 1.0, True, None, None, None)
>>>outputs_1=Processing.runalg("grass:r.surf.idw", outputs_0['GRID'], 12, True, None, 0.0, None)

Wenn Sie es im Processing Framework als Modell erstellen, können Sie es als Python-Skript speichern. Es gibt Ihnen eine Art GUI-Builder für die Verarbeitungs-Runalg-Funktion.

Verarbeitungsmodell

Bildbeschreibung hier eingeben

Jakob
quelle
Ihre Antwort war sehr hilfreich. Vielen Dank. Wenn ich also ein Python-Skript aus einem Sextantemodell erstelle, kann ich diesen Code in mein Plugin einbinden?
Bárbara Duarte
Ja, Code läuft auch in einem Plugin.
Jakob
Wenn ich den Code ausführe, wird die Meldung "AttributeError: class Processing hat kein Attribut 'runalg'" angezeigt. Warum? Ich importiere die Bearbeitung.
Bárbara Duarte
Ich kenne die Antwort auf meine Frage. In meiner QGIS-Version habe ich die Funktion runAlgorithm anstelle von runalg. Nun funktioniert das gut. Vielen Dank.
Bárbara Duarte