Importar módulos GRASS e SAGA para script python

13

Eu sou novo nisso. Estou "construindo" um plugin python para qgis e quero importar módulos do GRASS e SAGA, mas não entendo como fazê-lo. O plugin que quero importar é a interpolação Kriging do SAGA ou v.surf.idw do GRASS ou o plug-in de interpolação do Raster qgis. Eu quero um método de interpolação para converter pontos na grade.

Pode me ajudar?


Eu tenho outra duvida.

Eu corro estas linhas no meu 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)

Quando corro, recebo uma imagem tiff mas sem nada. O arquivo .aux não é criado e, quando tento abrir a imagem tiff criada, aparece a seguinte mensagem:

c: ... teste3.tif não é uma fonte de dados rasterizada suportada

Então, acho que a saída está errada. O que tenho que fazer para obter uma saída correta? O que eu sinto falta?

Bárbara Duarte
fonte

Respostas:

15

A estrutura de processamento no QGIS pode chamar essas funções diretamente do Python.

No console do 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 você o criar como um modelo na Estrutura de processamento, poderá salvar esse modelo como um script Python. Ele fornece um tipo de construtor de GUI para a função runalg de processamento.

Modelo de processamento

insira a descrição da imagem aqui

Jakob
fonte
Sua resposta foi muito útil. Obrigado. Então, se eu criar um script Python a partir do modelo sextante, posso incorporar esse código no meu plugin?
Bárbara Duarte
Sim, o código também é executado em um plugin.
Jakob
Quando executo o código, ele exibe a mensagem "AttributeError: class Processing não tem atributo 'runalg'". Por quê? Eu importo o processamento.
Bárbara Duarte
Eu sei a resposta para minha pergunta. Na minha versão do QGIS, tenho a função runAlgorithm em vez de runalg. Agora isso funciona bem. Obrigado.
Bárbara Duarte