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.