Muszę być w stanie zmierzyć odległości między punktami, jednak odległość należy obliczyć w stosunku do wysokości. Punkty to domy gawędziarzy z XIX wieku i miejsca wymienione w ich opowiadaniach. Odległość musi zatem być „odległością pieszą”. Ścieżka wzdłuż doliny będzie prawdopodobnie krótsza niż ścieżka nad górą, nawet jeśli faktyczna prosta odległość jest krótsza. W załączeniu znajduje się zrzut ekranu ilustrujący moje myślenie. Na obrazie ścieżki A i C zostałyby zatem obliczone krócej niż ścieżka B.
Punkty pochodzą z pliku CSV, ale mam również warstwę rastrową z danymi wysokości.
Odpowiedzi:
Osiągnięcie tego celu jest nieco podstawowym zadaniem w GIS, jednak metoda w QGIS może nie być trywialna. Twoja najlepsza szansa to skorzystanie z
r.walk
funkcji GRASS , która tworzy anizotropową powierzchnię kosztu (dem + nachylenie + inne czynniki).Najpierw musisz utworzyć powierzchnię cierną jako wejście
r.walk
. W twoim przypadku może to być raster jednowartościowy (1.0) pasujący do zakresu twojego DEM. Możesz go utworzyć zar.mapcalculator
pomocą wzoru:A*0+1
gdzie A jest Twoim DEM.Następnie musisz wybrać zestaw punktów początkowych z pliku CSV. Są to punkty, na podstawie których obliczona zostanie skumulowana powierzchnia kosztów. Musisz stworzyć indywidualną powierzchnię kosztów z każdego punktu początkowego. Rozsądne może być zdefiniowanie punktów końcowych związanych z każdym punktem początkowym na tym etapie (w poszczególnych warstwach poza kursem). Następnie możesz uruchomić
r.walk
z utworzonymi danymi wejściowymi. Punkty początkowe mogą znajdować się na pojedynczej warstwie, możesz je powtarzać za pomocą zielonej strzałki w oknie dialogowym.Teraz w idealnym przypadku masz powierzchnie kosztów i punkty końcowe dla każdej powierzchni kosztów. Teoretycznie można znaleźć ścieżki o najniższych kosztach
r.drain
, ale dla mnie zakończyło się to błędem (python nie mógł zaimportować biblioteki QgisRaster). Jeśli napotkasz ten sam problem, możesz skorzystać z algorytmu SAGA „Ścieżki najtańszych kosztów”. Utworzy punkt i warstwę liniową dla każdego punktu końcowego z powierzchnią kosztu (ponownie użyj przycisku iteracji). Po uzyskaniu wszystkich linii możesz połączyć je w jeden plik kształtu za pomocą narzędzia „Scal warstwy warstw” SAGA.Ta metoda może być bardzo powolna z przyrostem punktów, więc jeśli masz ich dużo, możesz spróbować zautomatyzować metodę za pomocą Pythona. Będzie jeszcze dużo czasu na obliczenia (zwłaszcza powierzchni kosztów), ale nie trzeba ręcznie tworzyć ton warstw punktów końcowych.
źródło
r.walk
. Możesz użyć mapy tarcia, aby skonfigurować nieprzejezdne komórki. Ponownie przypisz DEM zar.reclass
pomocą reguł, takich1 thru 2000 = 1
2000 thru * = 9999
jak plik reguł (jeśli twój próg wynosi 2000m). W ten sposób algorytm nie przepuści komórek o wysokich wartościach tarcia, obejście go będzie tańsze.