NMT w 3D w SAGA GIS

Darek Bobak zauważył przy wpisie o Rozprzy, że GIS to nie tylko ładne mapy. To prawda. Ale nie zaszkodzi by przy okazji jakąś ładną mapę spłodzić. W niniejszym wpisie kilka słów poświęcę spłodzeniu estetycznie wyglądającego Numerycznego Modelu Terenu w ujęciu 3D (czy też pseudo 3D), czyli modnego wśród archeologów rzutu izometrycznego.

W tym zbożnym celu wykorzystuje się zwykle program Surfer. Jest to rzeczywiście wspaniałe oprogramowanie, niestety ma jedną podstawową wadę – jest drogie. No i przeznaczony jest wyłącznie na system Windows, co zniechęca takich nawiedzonych linuksiarzy jak ja (no dobra – tak na prawdę to nie mam kasy). Oczywiście wielu osób nie zniechęca cena Surfera. Właściwie nie ma ona żadnego znaczenia wobec dostępności wersji Pirate Edition. Tutaj jednak w ramach propagowania legalnego i otwartego oprogramowania spróbujemy zastąpić Surfera przez SAGA GIS.

1. Budujemy Numeryczny Model Terenu. W tym celu importujemy do programu punkty pomiarowe w formacie shapefile: File – GDAL/OGR – Import vector data.

skosz150Aby teraz wyświetlić zaimportowaną warstwę musimy w lewym oknie wejść w zakładkę „Data”.

skosz151I kliknąć dwukrotnie na miniaturę zaimportowanej warstwy. Od tej pory najlepiej będzie oglądać ją w zakładce „Maps” i podzakładce „Tree”, która wyświetla drzewo warstw GIS. Natomiast w oknie podglądu mapy będzie to wyglądało tak:

skosz152Do stworzenia modelu możemy użyć opcji triangulacji (Interpolation from Points – Triangulation) albo krigingu (Spatial and geostatistics – Kriging – Ordinary kriging). Jeśli wszystko pójdzie dobrze uzyskujemy mniej więcej taki efekt (tyle, że w kolorystyce red-blue):

skosz1482. Teraz należy dobrać odpowiedni sposób prezentacji naszego modelu. W domyślnie skonfigurowanym oknie programu SAGA, w prawym okienku możemy ustawić sobie sposób prezentacji. Wybieramy więc opcję: Colors – Scaling i w ramce klikamy na Colors. Pojawi się okno dialogowe, w którym wybieramy Presets. W Presets settings wybieramy schemat kolorystyczny dla naszej mapy. Niech będzie to „Topography”.

skosz138Należy pamiętać, że każdą zmianę w oknie ustawień musimy zatwierdzić klikając Apply.

W efekcie uzyskamy taki mniej więcej obraz:

skosz1423. Teraz zbudujemy sobie warstwę cieniowaną, która nada nieco głębi naszej mapie. Wybieramy Terrain Analysis – Lighting – Analytical Hillshading. W rubryczce Exaggeneration możemy ustawić przewyższenie, np. 3.

skosz149Azymut i kąt padania światła możemy zostawić bez zmian (ale z tą opcją warto poeksperymentować).

W efekcie powinniśmy otrzymać taki obrazek:

skosz1434. Kolejnym etapem jest ustawienie przezroczystości dla warstwy z cieniowaniem. Robimy to w prawym okienku (czyli oknie ustawień). Możemy ustawić np. 40. W efekcie nasz obrazek będzie wyglądał tak:

skosz1445. Teraz możemy wykonać projekcję 3D klikając na stosowną ikonkę na pasku górnym. W oknie ustawień widoku 3D (dostępnym w każdym momencie z 3D View – Properties) możemy ustawić przewyższenie (Exaggeneration) na wartość np. 3 (co podkreśli formę terenową). Warto też ustawić nieco większą niż domyślna wartość rozdzielczości (Resolution), przynajmniej na 800 (to w dużej mierze zależeć będzie od jakości waszej karty graficznej – im wyższa wartość tym lepszej karty będziecie potrzebowali; 2000 jest już całkiem nieźle i więcej nie trzeba zazwyczaj). W oknie 3D będzie to wyglądało tak:

skosz145Jak widać, coś już widać, ale dalekie to jest od jakości, której byśmy się spodziewali. Oczywiście widoczna na obrazku pikseloza w znacznej mierze zależeć będzie od jakości waszego modelu. Jeżeli jest to duży NMT, w dodatku oparty na pomiarach LiDAR, to piksele nie powinny przeszkadzać. Jeśli jest mniejszy, będzie bolało. Na szczęście jest na to rada.

6. Żeby pozbyć się wielkich pikseli wystarczy dalej pogrzebać w opcjach wyświetlania map, czyli w naszym prawym okienku programu. W ustawieniach Display wybieramy Interpolation i ustawiamy opcję B-Spline:

skosz137Jeśli zastosujemy ten zabieg dla obu naszych warstw rastrowych (NMT i warstwy cieniowanej), to nasz widok 3D powinien wyglądać tak:

skosz146Co jest już znacznie ładniejsze od wersji zamieszczonej wyżej.

7. Teraz możemy wzbogacić naszą mapę o warstwę izolinii (czyli warstwę warstwic). Wybieramy: Modules – Shapes – Grid – Vectorization – Contour Lines from Grid. W oknie dialogowym najważniejszym parametrem będzie wybranie odpowiedniego cięcia (Equidistance). Jeżeli potrzebujemy wartości dziesiętnej to musimy pamiętać by wpisać ją z kropką, a nie przecinkiem. Cięcie co 25 cm będziemy więc wpisywać: „0.25”. W efekcie powinniśmy uzyskać wektorową mapę warstwicową:

skosz147Możemy teraz zapisać nasz widok 3D w postaci obrazka. Wybieramy 3D View – Save as Image. Domyślne rozmiary zapisywanego obrazka mogą być nieco zbyt małe, więc możemy je nieco powiększyć, by uzyskać lepszą rozdzielczość. Niestety program nie zrobi tego automatycznie, więc musimy sobie samodzielnie wpisać wartości np. dwukrotnie większe niż domyślnie zaproponowane. Efekt końcowy wygląda tak:

3d5

Całość możemy wzbogacić o legendę. W menu „Map” klikamy „Copy Legend to Clipboard”. Legendę możemy wstawić na obrazek posługując się dowolnym programem graficznym, np. Gimpem. Otwieramy obrazek i wklejamy na niego legendę pozostającą w schowku systemowym. I gotowe. Nie będzie to Surfer, ale też będzie nieźle…

Reklamy

One thought on “NMT w 3D w SAGA GIS

  1. A czy istnieje metoda modyfikacji NMT? Mam dane dla wału przeciwpowodziowego i gdy tworze ich model, to SAGA GIS łączy mi punkty w taki sposób, że do niczego się on nie nadaje. W ArcGISie jest opcja “delineate TIN” która pozwala na ustawienie max. długości ramienia trójkąta dla modelu TIN. Czy w SG jest coś podobnego?

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s