Importez les modules GRASS et SAGA dans un script python

13

Je suis nouveau dans ce domaine. Je "construis" un plugin python pour qgis et je veux importer des modules depuis GRASS et SAGA mais je ne comprends pas comment le faire. Le plugin que je veux importer est l'interpolation Kriging de SAGA ou v.surf.idw de GRASS ou le plugin d'interpolation de Raster qgis. Je veux une méthode d'interpolation pour convertir des points dans la grille.

Pouvez-vous m'aider?


J'ai un autre doute.

Je lance ces lignes dans mon code:

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)

Quand je cours, j'obtiens une image tiff mais sans rien. Le fichier .aux n'est pas créé et lorsque j'essaie d'ouvrir l'image tiff que j'ai créée apparaît ce message:

c: ... teste3.tif n'est pas une source de données raster prise en charge

Donc, je suppose que la sortie est fausse. Que dois-je faire pour obtenir une sortie correcte? Qu'est-ce qui me manque?

Bárbara Duarte
la source

Réponses:

15

Le framework de traitement dans QGIS peut appeler ces fonctions directement depuis Python.

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

Si vous le créez en tant que modèle dans le Framework de traitement, vous pouvez enregistrer ce modèle en tant que script Python. Il vous donne une sorte de générateur GUI pour la fonction runalg de traitement.

Modèle de traitement

entrez la description de l'image ici

Jakob
la source
Votre réponse a été très utile. Merci. Donc, si je crée un script Python à partir d'un modèle sextante, je peux incorporer ce code dans mon plugin?
Bárbara Duarte
Oui, le code s'exécute également dans un plugin.
Jakob
Lorsque j'exécute le code, il me donne ce message "AttributeError: class Processing n'a pas d'attribut 'runalg'". Pourquoi? J'importe le traitement.
Bárbara Duarte
Je connais la réponse à ma question. Dans ma version QGIS, j'ai la fonction runAlgorithm au lieu de runalg. Maintenant, cela fonctionne bien. Je vous remercie.
Bárbara Duarte