Jak narysować ścieżkę strumienia w danym terenie?

23

Zakładając, że mam teren, jak zwykle teren ma grzbiety, potoki i wszystkie cechy, które można znaleźć na mapie z prawdziwego życia. Woda płynie ze szczytu góry na niższy obszar, a ścieżka, którą płynie, nazywana jest ścieżką przepływu strumienia.

Teren jest podany w postaci trójkątnej nieregularnej sieci (TIN), której każdy punkt p (x, y) ma wartość az. Jak wykorzystać te informacje do zbudowania ścieżki przepływu strumienia? Jaka jest za tym fizyka?

Z tego co wiem, do rozwiązania tego problemu można zastosować metodę najbardziej stromego zejścia . Zastanawiam się nad napisaniem własnego algorytmu przepływu strumienia, więc interesuje mnie teoretyczne tło, a nie korzystanie z istniejących narzędzi.

Grawiton
źródło

Odpowiedzi:

26

Możliwe są różne implementacje, ale większość procedur rozpocznie się od siatki, a nie od numeru NIP.

Najprostsza jest najprawdopodobniej procedura D8: obliczasz kierunek, w którym płynie woda. Istnieje 8 możliwości, 8 komórek, które są obok centralnej komórki siatki. Możesz najpierw obliczyć te kierunki, a nie sposób łączenia komórek, a na koniec narysować linie). Łatwa implementacja znajduje się w SAGA, prawie odczytuje jako pseudokod: http://saga-gis.svn.sourceforge.net/viewvc/saga-gis/trunk/saga-gis/src/modules_terrain_analysis/terrain_analysis/ta_channels/D8_Flow_Analysis. cpp? rewizja = 911 i widok = znaczniki

Chociaż jest to bardzo łatwe, nie jest to zbyt realistyczne: nie będzie strumienia rozpoczynającego się w każdej komórce. Bardziej zaawansowane algorytmy zwykle najpierw zamykają wgłębienia (zwłaszcza jeśli masz szczegółowy DEM), a następnie oblicz obszar zlewu na komórkę, czyli liczbę komórek, które dostarczają wodę do określonej komórki, a następnie użyj progu, aby ustalić, czy strumień jest obecny.

SAGA GIS implementuje wiele z tych metod, można znaleźć ich opis w tym podręczniku http://sourceforge.net/settings/mirror_choices?projectname=saga-gis&filename=SAGA%20-%20Documentation/SAGA%20Documents/ SagaManual.pdf

Został napisany dla starszej wersji SAGA GIS, ale opis algorytmów jest nadal dość dokładny i skopiuję go tutaj w celu szybkiego odniesienia (jest to około strona 120), ponieważ jest to oprogramowanie typu open source, możesz sprawdzić szczegóły implementacji, patrząc na kod.

  • Deterministic 8 (D8): Klasyczny. Przepływ przechodzi ze środka komórki do środka jednej (i tylko jednej) otaczających komórek. Kierunki przepływu są zatem ograniczone do wielokrotności 45o, co jest głównym powodem większości wad tej metody. (O'Callaghan i Mark 1984).
  • Rho8: To samo co powyżej, ale ze składnikiem stochastycznym, który powinien to poprawić. Kierunek przepływu określa losowy argument, który zależy od różnicy między aspektem a kierunkiem dwóch sąsiednich komórek sąsiadujących. Niezbyt przydatne. . . (Fairfield i Leymarie 1991).
  • Deterministyczna nieskończoność (D∞): przepływ przechodzi z jednej komórki do dwóch sąsiadujących ze sobą komórek, rozważając w ten sposób przepływ dwuwymiarowy i pokonując wady metody D8. (Tarboton 1998).
  • Braunschweiger Digitales Reliefmodell: kolejny algorytm wielokrotnego przepływu. Przepływ jest dzielony między otaczającą komórkę, której orientacja jest najbliższa aspektowi centralnej komórki i jej dwóch sąsiednich komórek. (Bauer, Bork i Rohdenburg 1985).
  • FD8 (występujący w SAGA po prostu jako Multiple Flow Direction): dwuwymiarowy algorytm routingu oparty na D8. (Quinn i in. 1991).
  • Kinematyczny algorytm routingu (KRA). Jednowymiarowy algorytm śledzenia przepływu. Przepływ zachowuje się jak kula tocząca się po DEM, bez ograniczania swojej pozycji do środka komórek. (Lea 1992).
  • Cyfrowa sieć modeli wysokościowych (DEMON): najbardziej złożona. Dwuwymiarowy algorytm śledzenia przepływu. Raczej czasochłonne. (Costa-Cabral i Burgess 1994).

Ostatnio dodano jeszcze więcej modeli:

  • Trójkątny wielokrotny kierunek przepływu - Seibert, J. / McGlynn, B. (2007): „Nowy trójkątny algorytm wielokrotnego kierunku przepływu do obliczania obszarów wzniesień z siatkowych cyfrowych modeli wysokościowych”, Water Resources Research, tom. 43, W04501. Może to być dla Ciebie interesujące, ponieważ może również działać bezpośrednio na NIP
  • Metoda Mass-Flux (MFM) do obliczania akumulacji przepływu w oparciu o DEM, jak zaproponowali Gruber i Peckham (2008). Gruber, S., Peckham, S. (2008): Parametry powierzchni ziemi i obiekty w hydrologii. W: Hengl, T. and Reuter, HI [Red.]: Geomorfometria: koncepcje, oprogramowanie, aplikacje. Rozwój w dziedzinie gleboznawstwa, Elsevier, Bd.33, S.293-308.
  • Algorytm boczny: http://watershed.montana.edu/Hydrology/Home_files/2010WR009296.pdf, a jego kod znajduje się również na jego stronie internetowej: http://thomasgrabs.com/side-alameterm/
johanvdw
źródło
5

Oryginalnym podejściem jest to zaproponowane w tym dokumencie :

Fisher, P., J. Wood i T. Cheng (2004). Gdzie jest Helvellyn? Niewyraźna wieloskalowa morfometria krajobrazu. Transakcje Instytutu Brytyjskich Geografów 29, 106-128.

Proponuje metodę opartą na rozmytej i wieloskalowej reprezentacji. Nie jestem pewien, ale ta metoda może być zaimplementowana w LandSerf .

wprowadź opis zdjęcia tutaj

Julien
źródło
Powyższy link do papieru nie jest już dostępny
Graviton
@Graviton: Link został poprawiony!
Julien
4

Jeśli masz dostęp do Spatial Analyst w ArcGIS, masz szereg narzędzi do obliczania ścieżek strumienia. Pełny obieg jest w odniesieniu ESRI, ale typowy obieg obejmuje:

  1. Przekształć swój NIP w raster wysokości.
  2. Oblicz kierunek przepływu.
  3. Napełniaj małe umywalki.
  4. Oblicz akumulację przepływu
  5. Korzystając z progu, wybierz tylko komórki o danej wielkości przepływu.
  6. Użyj narzędzia Stream to Feature, aby wyeksportować strumienie do pliku kształtu wektorowego.

Oczywiście istnieje wiele prac naukowych opisujących różne metody, ale ta metoda jest łatwa dla wszystkich, którzy mają dostęp do Spatial Analyst.

Patrick
źródło
Musiałbym napisać kod od zera, więc nie mogę używać tego pakietu oprogramowania.
Graviton,
Wydaje się, że jest to procedura stosowana przez większość pakietów GIS. TerraFlow jest opcją typu open source, ale nigdy jej nie używałem. Czego zamierzasz użyć do obsługi numeru TIN?
Patrick
1
Zastanawiam się nad napisaniem własnego algorytmu przepływu strumienia, dlatego wspomniane pakiety oprogramowania nie dotyczą mnie
Graviton,
2
W porządku. Kiedy powiedziałeś „Nie mam jasności, jak to zrobić”, założyłem, że potrzebujesz praktycznych porad, jak to zrobić. Przypuszczalnie przepływ pracy używany przez te pakiety oprogramowania może stanowić przewodnik po ogólnej strukturze algorytmu. Stamtąd sugeruję zapoznanie się z literaturą naukową na temat szczegółów. Na przykład, Tarboton, 1997 został kilkakrotnie przywołany w moich poszukiwaniach algorytmów kierunku przepływu.
Patrick,
3

W cyfrowych modelach elewacji opartych na siatce wiarygodne określenie linii nachylenia zapewnia metoda D8-LTD:

Orlandini, S. i G. Moretti (2009), Określenie ścieżek przepływu powierzchniowego na podstawie danych wysokościowych z siatki, Water Resour. Res., 45 (3), W03417, doi: 10.1029 / 2008WR007099.

Orlandini, S., G. Moretti, M. Franchini, B. Aldighieri i B. Testa (2003), Metody oparte na ścieżce do określania niedyspersyjnych kierunków drenażu w cyfrowych modelach elewacji, Water Resour. Res., 39 (6), 1144, doi: 10.1029 / 2002WR001639.

W cyfrowych modelach elewacji opartych na konturach linie nachylenia można określać automatycznie, rozwiązując złożone struktury topograficzne przy użyciu (złożonego) modelu opisanego w następującym artykule:

Moretti, G. i S. Orlandini (2008), Automatyczne wyznaczanie zlewni na podstawie danych wysokościowych konturu przy użyciu technik budowy szkieletu, Water Resour. Res., 44 (5), W05403, doi: 10.1029 / 2007WR006309.

Stefano Orlandini
źródło
1

Wydaje się, że napisanie narzędzia od zera będzie dość trudne. ESRI działa od dziesięcioleci i nadal nie mają racji.

AutoCAD (Civil 3D) może to zrobić za pomocą numeru TIN. Nie jestem świadomy tego, co dzieje się za kulisami, ale w ArcGIS identyfikacja sieci strumieniowych odbywa się za pomocą analizy rastrowej.

W skrócie, wejściowy raster DEM (gdzie każda komórka ma wartości X, Y, Z) jest używany jako dane wejściowe, a algorytm oblicza cytowanie „skumulowanego przepływu (jako skumulowanej masy) wszystkich komórek przepływających do każdej komórki opadającej w rastrze wejściowym. „ Produkt jest rastrem, w którym każda komórka ma wartość akumulacji przepływu. Aby zidentyfikować sieć strumieniową, należy odizolować komórki wysokiego przepływu, które są obszarami „skoncentrowanego przepływu”. Istnieją inne czynniki, takie jak opcjonalny współczynnik masy, hydrologicznie poprawny wejściowy DEM itp.

Omówię tylko kilka pomysłów: w odniesieniu do „mechaniki” takiego algorytmu przypuszczam, że może być całkiem prosty; rekurencyjnie i dla każdej komórki określ lokalizację i wysokość wszystkich otaczających komórek, a na podstawie jej wysokości zsumuj liczbę napływających do niej komórek. Jeśli chodzi o TIN, prawdopodobnie prawdopodobnie możesz zbudować linię z dwóch punktów na każdym trójkącie (najwyższym i najniższym wierzchołku), a następnie połączyć je wszystkie w sieć.

Jakub Sisak GeoGraphics
źródło
1
Powikłania pojawiają się w przypadku zlewów i płaskich powierzchni. Jako skrajny przykład rozważ DEM reprezentujący górskie jezioro, aby większość DEM była idealnie płaska. Dokładnie w jaki sposób rekursywna realizacja prowadziłaby cały dopływ do jeziora do jego punktów odpływu?
whuber