Zaimportuj moduły GRASS i SAGA do skryptu python

13

Jestem w tym nowy. „Buduję” wtyczkę Python dla qgis i chcę importować moduły z GRASS i SAGA, ale nie rozumiem, jak to zrobić. Wtyczka, którą chcę zaimportować, to interpolacja Kriging z SAGA lub v.surf.idw z GRASS lub wtyczka interpolacyjna z Raster qgis. Chcę, aby metoda interpolacji przekształciła punkty w siatkę.

Możesz mi pomóc?


Mam inne wątpliwości.

W moim kodzie uruchamiam następujące wiersze:

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)

Kiedy biegam, dostaję obraz tiff, ale bez niczego. Plik .aux nie został utworzony, a kiedy próbuję otworzyć utworzony obraz tiff, pojawia się następujący komunikat:

c: ... teste3.tif nie jest obsługiwanym źródłem danych rastrowych

Myślę, że wynik jest nieprawidłowy. Co muszę zrobić, aby uzyskać prawidłowy wynik? Czego mi brakuje?

Bárbara Duarte
źródło

Odpowiedzi:

15

Struktura przetwarzania w QGIS może wywoływać te funkcje bezpośrednio z Pythona.

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

Jeśli zbudujesz go jako model w Processing Framework, możesz zapisać ten model jako skrypt w języku Python. Daje rodzaj konstruktora GUI dla funkcji runalg przetwarzania.

Model przetwarzania

wprowadź opis zdjęcia tutaj

Jakob
źródło
Twoja odpowiedź była bardzo pomocna. Dzięki. Więc jeśli utworzę skrypt Python z modelu sextante, mogę włączyć ten kod do mojej wtyczki?
Bárbara Duarte
Tak, kod działa również we wtyczce.
Jakob
Kiedy uruchamiam kod, wyświetla mi się komunikat „AttributeError: class Processing nie ma atrybutu„ runalg ””. Dlaczego? Importuję przetwarzanie.
Bárbara Duarte
Znam odpowiedź na moje pytanie. W mojej wersji QGIS zamiast funkcji runalg mam funkcję runAlgorytm. Teraz to działa dobrze. Dziękuję Ci.
Bárbara Duarte