Importar módulos GRASS y SAGA a script python


13

Soy nuevo en esto. Estoy "construyendo" un complemento de Python para qgis y quiero importar módulos de GRASS y SAGA, pero no entiendo cómo hacerlo. El complemento que quiero importar es la interpolación de Kriging de SAGA o v.surf.idw de GRASS o el complemento de interpolación de qgis de ráster. Quiero un método de interpolación para convertir puntos en la cuadrícula.

¿Me puedes ayudar?


Tengo otra duda

Ejecuto estas líneas en mi código:

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)

Cuando corro, obtengo una imagen tiff pero sin nada. El archivo .aux no se crea y cuando intento abrir la imagen tiff que creé aparece este mensaje:

c: ... teste3.tif no es una fuente de datos ráster compatible

Entonces, supongo que la salida es incorrecta. ¿Qué tengo que hacer para obtener una salida correcta? Lo que me falta?

Respuestas:


15

El marco de procesamiento en QGIS puede llamar a estas funciones directamente desde Python.

Desde la consola 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 lo compila como modelo en Processing Framework, puede guardar ese modelo como un script de Python. Le proporciona un tipo de generador de GUI para la función de procesamiento runalg.

Modelo de procesamiento

ingrese la descripción de la imagen aquí


Tu respuesta fue muy útil. Gracias. Entonces, si creo un script de Python a partir del modelo sextante, ¿puedo incorporar ese código en mi complemento?
Bárbara Duarte

Sí, el código también se ejecuta en un complemento.
Jakob

Cuando ejecuto el código, me da este mensaje "AttributeError: class Processing no tiene el atributo 'runalg'". ¿Por qué? Importo procesamiento.
Bárbara Duarte

Sé la respuesta a mi pregunta. En mi versión QGIS tengo la función runAlgorithm en lugar de runalg. Ahora esto funciona bien. Gracias.
Bárbara Duarte
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.