Przeprowadzanie wydobywania grobli z DEM?

14

Mam DEM o wymiarach 1x1 metra i oryginalną chmurę punktów LiDAR w .las, z której jest wykonana DEM. Muszę wydobyć groble rzeczne (najwyższe punkty grobli) do funkcji wektorowej (punkt, polilinia).

Masz pomysł na algorytm lub istniejące narzędzie?

Groble mają jasnoszare kolory na 1. zdjęciu, a poniżej znajduje się obraz chmury punktów dla przykładowego obszaru z groblami. Linia środkowa rzeki w kolorze niebieskim.

Groble są w kolorze jasnoszarym

Chmura punktów z wałami

Jakieś narzędzie do wyciągania cech liniowych z DEM?

Myślę, że potrzebuję czegoś takiego jak moduł ekstrakcji cech przestrzennych ENVI (strona 7), ale bez udziału ENVI, ponieważ nie stać mnie na to :)

Tomek
źródło
1
Z jakiego systemu GIS korzystasz?
Hornbydd,
Komercyjny - ArcInfo 10 (SA, 3D, rozszerzenia geostatystyczne). Otwarte źródło - dowolne.
Tomek
1
Myślałem o pewnym pomyśle, zakładając, że masz wektorową linię środkową rzeki, którą możesz buforować i używać do maskowania DEM i progowania wartości. Zakłada się, że grobla biegnie równolegle do koryta rzeki. Zatem wszelka logika, jakiej używasz, musi być na tyle sprytna, aby chwytać wały, gdy stają się „cofnięte” od rzeki.
Hornbydd,
Niestety, wały nie zawsze biegną równolegle do koryta rzeki i dość często są daleko od kanału rzeki. Myślałem, że będzie jakiś algorytm jako szkieletowy? Do wyodrębnienia obiektów liniowych z DEM przy pomocy takiej cechy mogłem uzyskać najwyższe punkty w chmurze punktów.
Tomek
2
Natknąłem się na ten artykuł, może być pomocny? asprs.org/a/publications/pers/2004journal/december/…
Hornbydd

Odpowiedzi:

8

Wszystko zależy od tego, gdzie narysujesz linię. Niezależnie od tego problem ten wygląda na to, że można go łatwo rozwiązać za pomocą funkcji morfologicznych dostępnych w programie Spatial Analyst, zwłaszcza progowania (wykonywanego za pomocą operacji lokalnych „<” i „>”) oraz „RegionGroup” w celu identyfikacji i wyodrębnienia komponentów.

Chociaż nie mam dostępu do DEM do zilustrowania, pierwszy obraz jest prawie wystarczająco dobry, aby wykonać zadanie. Na przykład, oto sekwencja zgrupowanych według regionu wersji czerwonego paska (z wartościami skalowanymi od 0,0 = czarny do 1,0 = biały), zaczynając od progu 0 i przechodząc od lewej do prawej, od góry do dołu, w przyrostach co 0,02:

Groble

(Te obrazy zostały tutaj zmniejszone w celu odtworzenia: cała analiza została wykonana w rozdzielczości oryginalnego obrazu).

Groble pojawiają się wokół granicy czarnego regionu na początku drugiego rzędu (próg = 0,08). Na początku trzeciego rzędu (próg = 0,16) groble tworzą własne komponenty (w kolorze ciemnoniebieskim) iw tym momencie można je łatwo wyodrębnić jako osobne siatki lub wielokąty (a ich granice można wyodrębnić jako polilinie po etapie wykrywania krawędzi ). Tylko najszersze groble pozostają w ostatnim rzędzie (próg = 0,24 i więcej). Musisz wybrać odpowiedni próg , aby uzyskać dokładnie to, czego chcesz.

W oryginalnym DEM elewacje odgrywają rolę intensywności, dlatego te procedury powinny być podobnie skuteczne z samym DEM. Jeśli DEM ma duży zasięg (w tym obiekty daleko od rzeki lub wału), odpowiednie elementy można wybrać jako sąsiadujące z komponentem, w którym znajduje się element rzeki.

Cienkie niechciane regiony znalezione przez RegionGroup można wyeliminować przez zastosowanie niewielkiej erozji (bufor ujemny), a następnie równoważne rozszerzenie (bufor dodatni). Małe niechciane regiony można wykluczyć według kryterium wielkości (całkowita liczba komórek lub obszar). Najwyższe punkty na każdym grobli (jeśli jest to naprawdę potrzebne) można znaleźć, porównując DEM z strefowymi maksymalnymi siatkami (używając grobli jako stref).


Nawiasem mówiąc, ta sekwencja obrazów została stworzona w Mathematica 8. Oto polecenia dla tych, którzy mogą chcieć skorzystać z tej opcji.

original = Import["http://i.stack.imgur.com/gV7Du.jpg"];
{r, g, b} = ColorSeparate[original];
frames = ParallelTable[Colorize[MorphologicalComponents[Binarize[r, t/100]], 
                       ColorFunction -> "ThermometerColors"], {t, 0, 30, 2}];
Rasterize @ TableForm[Partition[frames, 4]]

Całkowity czas zegara (po zaimportowaniu obrazu) wynosił 0,94 sekundy, z czego połowa potrzebna była do zmniejszenia i wyeksportowania wszystkich 16 obrazów: operacje morfologiczne są zwykle szybkie (co jest dobre, ponieważ LIDAR DEM może być ogromny).

Whuber
źródło
Cała koncepcja brzmi dobrze, ale nie rozumiem „... progowania (wykonywanego z częścią„ <”i„> „operacje lokalne)”. Jak to osiągnąć za pomocą zestawu narzędzi Generalizacja (SA)?
Tomek
@Tomek One nie. Zobacz logiczny zestaw narzędzi .
whuber
9

Czytam o różnych algorytmach dla zadania (tj. Zgodnie z linkiem @ Horbydds ).

Wypróbowałem kilka metod, a najlepsze wyniki w moim przypadku dają Standardową analizę terenu od SAGA. Oto co zrobiłem i dlaczego:

Groble są zwykle najwyższą cechą w pobliżu koryta rzeki, więc zamieniłem je w kanały, odwracając DEM (MapAlgebra DEM * -1 lub przesadzając zbocza -10). Od tego momentu mogłem korzystać z dowolnego zestawu narzędzi hydrologicznych (ArcHydro, HEC-GeoRas lub SAGA narzędzia wodne). Wybrałem SAGA / Analiza terenu - analiza złożona / Standardowa analiza terenu, ponieważ produkuje River Network za pomocą kilku kliknięć. River Network to to, co chciałem osiągnąć, ponieważ produkuje polilinie, które wskazują najlepszą drogę przepływu wody, co w przypadku odwróconych wałów przeciwpowodziowych daje im najwyższy punkt.

Wytworzony plik kształtu jest nieco niechlujny (wiele mniejszych polilinii), ale po pewnych poprawkach wyniki są zadowalające. Kolejną irytacją jest to, że 1 grobla jest wykonana z 300 krótkich polilinii, ale myślę, że znajdę sposób, aby sobie z tym poradzić.

Oto przykład wyników:

wprowadź opis zdjęcia tutaj

Oczywiście jest to dość trudne rozwiązanie i prawdopodobnie będę dalej badał ten problem, ale pomyślałem, że warto się nim podzielić.

Tomek
źródło
5

Niektóre kombinacje poniższych elementów z oryginalnym DEM powinny pomóc podświetlić żądane informacje rastrowe i odrzucić resztę. Można je wykonać w różnych skalach i rozmiarach sąsiedztwa, aby poprawić efekt.

  • Ponownie próbkuj, a następnie Neighborhood -> Filter: High Pass
  • Powierzchnia -> Krzywizna
  • Neighborhood -> Focal Statistics: Standard Deviation
  • „Wysokość względna” = (piksele) - (sąsiedztwo -> statystyki ogniskowej: mediana)
  • Odwróć, ponownie próbkuj, a następnie Neighborhood -> Focal Flow

Po wykonaniu tego przeklasyfikowanie i kontury powinny dać dość dobry zarys samego grobli. Jeśli groble mają płaskie nachylenie i chcesz uzyskać szerszy zasięg, możesz również spróbować czegoś takiego jak suma krzywizny i nachylenia, przeskalowana o określoną wartość, a nawet wykonać kontury nachylenia osobno i połączyć je ze sobą.

Oto samouczek na temat wyciągania grzbietów wektorowych z rastrowego DEM za pomocą Spatial Analyst, który powinien mieć duże zastosowanie:

Mapowanie jutro
źródło
Przyjrzę się kombinacji narzędzi - może dać dobre wyniki. Dzięki. Jak widzę, samouczek ESRI opisuje proces +/- tak jak ja :) Fajnie. Dzięki.
Tomek
0

Myślę, że może to być tylko część odpowiedzi, ale być może możesz zacząć od tworzenia konturów / wielokątów z twoich obrazów w określonych odstępach czasu / w oparciu o wartości wysokości. Myślałem, że wały powinny mieć wyższe wartości wysokości, a zatem jeśli przekształcisz DEM w wielokąty, może się okazać, że obszary, które Cię interesują, są reprezentowane przez wielokąty centain. Możesz także zacząć od przeklasyfikowania DEM i sprawdzić, czy to przyniesie oczekiwane rezultaty. Jeśli masz inne dane obrazu obejmujące obszar, który Cię interesuje, spróbuj dodać je do swojej klasyfikacji obrazów i sprawdź, czy to pomaga. Powodzenia!!

Dango
źródło