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?

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.