Chciałbym wywołać funkcję wtyczki interpolacji QGIS (metoda TIN) (Raster-> Interpolate) z konsoli python.
Nie mogę znaleźć odpowiedniej funkcji w QGIS API lub na liście algorytmów przetwarzania. Znalazłem algorytm triangulacji SAGA, który działa dobrze, ale jest 5-10 x wolniejszy, a szybkość jest ważna w moim przypadku.
Masz pomysł, jak to wykonać?
qgis
python
qgis-plugins
pyqgis
Vincent D.
źródło
źródło
from rasterinterpolation import rasterinterpolation
ale nie jestem pewien, do którego modułu zadzwonić (lub jak nawet zadzwonić).Odpowiedzi:
Byłem w stanie zapewnić pełne rozwiązanie w następującym pytaniu:
Jak obliczyć raster interpolacji z konsoli python w QGIS?
Ponownie opublikuję odpowiedź tutaj, z uwagi na duże zainteresowanie, które wydaje się przyciągać:
Odpowiedź:
Dokumentacja na pyqgis nie jest zbyt oczywiste, ale zorientowali się, jak prawidłowo zadzwonić przynależne klas interpolacji (
QgsInterpolator
,QgsTINInterpolator
,QgsIDWInterpolator
,QgsGridFileWriter
) z pytona. Szczegółowo opiszę każdy krok skryptu:Krok 1:
Zaimportuj moduł rdzenia i analizy i uzyskaj żądaną warstwę wektorową do interpolacji, zaznaczając ją myszką na karcie warstwy.
Krok 2:
Przygotuj klasy interpolacji z niezbędnymi parametrami. Dokładne parametry inicjalizacji struktury LayerData można znaleźć w dokumentacji API QGIS (searchterm: QgsInterpolator).
Zauważ, że nie używam współrzędnej z, otrzymuję pierwsze dostępne pole (indeks = 0) jako atrybut interpolacji i używam PUNKTÓW jako typu danych wejściowych.
Krok 3:
Wybierz silnik interpolacji. Tutaj możesz wybrać pomiędzy metodą interpolacji TIN (
QgsTINInterpolator
) a interpolacją IDW (QgsIDWInterpolator
). WziąłemQgsTINInterpolator
kod.Pamiętaj, że musisz przekazać listę python
layer_data
do silnika interpolacji! Umożliwia to także dodawanie wielu scenariuszy layer_data.Krok 4:
Ustaw parametry potrzebne do eksportu wyniku interpolacji (patrz dokumentacja
QgsGridFileWriter
). Obejmują one podobne informacje jak GUI interpolacji (ścieżka pliku, zasięg, rozdzielczość, liczba kolumn i wierszy).Pamiętaj o rozszerzeniu pliku wyjściowego rastra, ponieważ
QgsGridFileWriter
zapisuje tylko ASCII-grids (.asc
). Dane zostają zapisane na dysk przez wywołaniewriteFile()
metody Po wyeksportowaniu możesz dodać plik siatki jako raster do kanwy.Pełny skrypt w celach informacyjnych:
Należy pamiętać, że QGIS-API jest obecnie przepisywany do wersji 3.0, a używane klasy interpolacji są przenoszone z
qgis.analysis
doqgis.core
! Będzie to miało ogromny wpływ na funkcjonalność tego skryptu, dlatego należy go przepisać dla wersji 3.0!źródło
Możesz to zrobić, jeśli masz zainstalowaną wtyczkę Raster Interpolation przy użyciu Menedżera wtyczek.
Uwaga: tak naprawdę nie wiem, co robi powyższy kod poza faktem, że wypisał wartość. Ale prawdopodobnie pomoże ci to zrozumieć użycie.
źródło