Importa i moduli GRASS e SAGA nello script python


13

Sono nuovo in questo. Sto "costruendo" un plugin Python per qgis e voglio importare moduli da GRASS e SAGA ma non capisco come farlo. Il plugin che voglio importare è l'interpolazione di Kriging da SAGA o v.surf.idw da GRASS o il plugin di interpolazione da Raster qgis. Voglio un metodo di interpolazione per convertire i punti nella griglia.

Mi potete aiutare?


Ho un altro dubbio

Corro queste righe nel mio codice:

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)

Quando corro, ottengo un'immagine tiff ma senza niente. Il file .aux non viene creato e quando provo ad aprire l'immagine tiff che ho creato appare questo messaggio:

c: ... teste3.tif non è un'origine dati raster supportata

Quindi, immagino che l'output sia sbagliato. Cosa devo fare per ottenere un output corretto? Cosa mi manca

Risposte:


15

Il framework di elaborazione in QGIS può chiamare queste funzioni direttamente da Python.

Dalla console QGIS Python:

>>>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)

Se lo costruisci come modello in Processing Framework, puoi salvarlo come script Python. Ti dà una sorta di builder GUI per l'elaborazione della funzione runalg.

Modello di elaborazione

inserisci qui la descrizione dell'immagine


La tua risposta è stata molto utile. Grazie. Quindi, se creo uno script Python dal modello sestante, posso incorporare quel codice nel mio plugin?
Bárbara Duarte,

Sì, il codice viene eseguito anche in un plug-in.
Jakob,

Quando eseguo il codice, mi viene visualizzato questo messaggio "AttributeError: class Processing non ha attributo 'runalg'". Perché? Importazione elaborazione.
Bárbara Duarte,

Conosco la risposta alla mia domanda. Nella mia versione di QGIS ho la funzione runAlgorithm invece di runalg. Ora funziona benissimo. Grazie.
Bárbara Duarte,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.