Indeksowanie chmur punktów LIDAR

Coraz częściej stajemy przed wyzwaniem  szybkiego wyszukiwania wśród zbiorów danych LIDAR. Dziś o tworzeniu wektorowych indeksów plików LAS.

LAS: Chmura punktów

Wykonanie indeksowania plików z danymi przestrzennymi z wykorzystaniem biblioteki GDAL opisywano w sieci wielokrotnie i nie powinno sprawić problemów użytkownikom QGIS’a lub programu SAGA. Jednak przetwarzanie chmur punktów ze względu na specyficzny format danych nastręcza większych problemów i wymaga innego podejścia do tematu.

Niezbędne oprogramowanie

Do tego celu użyjemy narzędzia LASboundary stanowiącym jeden ze składników pakietu LAStools rozwijanego przez rapidlasso GmbH. LAStools to zestaw narzędzi pozwalający na bardzo szybkie i wydajne przetwarzanie chmur punktów powstałych w wyniku skanowania laserowego w tym klasyfikację, konwersję, dzielenie i wiele innych operacji automatyzujących pracę z chmurami.

Oprogramowanie, zbudowane w oparciu o opensource’ową (licencja LGPL) bibliotekę LASlib, do zastosowań naukowych i niekomercyjnych jest darmowe. Pakiet narzędzi LAStools można pobrać na stronie producenta (ZIP, 21 MB). Z oprogramowania można korzystać na dwa sposoby – z poziomu linii komend lub za pośrednictwem prostego interfejsu graficznego.

Do naszych potrzeb wykorzystamy narzędzie LASboundary, które po zdekompresowaniu archiwum, w strukturze katalogów można znaleźć w poniższej lokalizacji:

\LAStools\bin\lasboundary.exe

Tworzenie granic zbiorów

Zanim uruchomimy aplikację musimy wykonać prostą operację – tworzymy katalog, w którym zapiszemy pliki powstałe w operacji indeksowania zbiorów. Program nie zapewnia funkcjonalności tworzenia katalogów więc musimy to zrobić ręcznie. Proponuję utworzenie katalogu o nazwie „granice” w dowolnym miejscu struktury katalogów.

Dwukrotne kliknięcie otwiera okno aplikacji, w którym należy wykonać kilka kroków:

  1. Rozwijamy zakładkę „browse” [1] i kolejno podajemy numer litery dysku na którym znajdują się dane directory [2], wypełniamy pole „wildcard”, które pozwala na tworzenie wzorca wybierania plików [3], a następnie przechodzimy w zakładce powyżej do katalogu zawierającego pliki z chmurą punktów [4]. Ostatnim elementem jest kliknięcie przycisku „add” co spowoduje dodanie wszystkich plików znajdujących się na liście do przetworzenia [5].
  2. Efektem działania jest pojawienie się grupy poligonów w centralnej części programu [6]
  3. Kolejnym krokiem jest wybranie opcji eksportu. Nam zależy na przetworzeniu całego zbioru, a więc wybieramy opcję „process all files” [7], a następnie w zakładce „output” wybieramy utworzony na początku katalog „granice” [8], wybieramy opcję „use bounding box” [9], wybieramy format pliku wyjściowego „output -> shp” [10] i uruchamiamy aplikację przyciskiem RUN” [11].
  4. W przypadku chęci wybrania tylko części zbioru można ograniczyć ilość do konkretnych plików źródłowych wybierając konkretne pliki z listy lub posłużyć się narzędziem „clip input” dostępnym w dolnej części okna i wybrać tylko niezbędne elementy.

LAS Boundary

Tworzenie warstwy z indeksem zbioru

Efektem działania aplikacji będzie utworzenie w katalogu „granice” serii plików SHP zgodnych co do nazwy z plikami źródłowymi. Niestety oprócz obrysu granicy, pliki nie posiadają nazwy pliku zapisanej w tabeli atrybutów, co w znaczącym stopniu utrudnia wykorzystanie takiego zbioru.

Co prawda w programie QGIS istnieje funkcja scalania wielu plików SHP do jednego (Wektor -> Narzędzia zarządzania danymi -> Połącz pliki Shapefile w jeden) jednak z powodu opisanego powyżej będziemy musieli skorzystać z innego oprogramowania i tu z pomocą przychodzi nam SAGA.

Saga posiada narzędzie do składania zbiorów przy jednoczesnym indeksowaniu ich nazw – czyli dokładnie to co jest nam potrzebne w tym zadaniu.

Aby uzyskać niezbędny nam efekt otwieramy program SAGA. Następnie do okna danych dodajemy wszystkie pliki, które planujemy scalić (File -> Shapes -> Load) i trzymając wciśnięty Shift wybieramy utworzone pliki SHP.

Następnie scalmy dane tworząc jedną warstwę. Do tego celu wykorzystamy narzędzie „Merge Layers” (Geoprocessing -> Shapes -> Construction -> Merge Layers). Po wybraniu tego polecenie otworzy się okno, w którym definiujemy kolejno warstwy do scalenia [1], plik wyjściowy [2], i pozostawiamy dodatkowe opcje  jako zaznaczone [3] i uruchamiamy przyciskiem „Okay”.

SAGA: Merge Layers

Utworzony plik trafił na listę warstw (zakładka „Data”). Aby sprawdzić czy rzeczywiście zawiera dane wystarczy kliknąć prawym przyciskiem myszy na nazwę „Merged Layers” i wybrać „Atributes -> Show”. Jak widać na obrazku poniżej powstała nam warstwa posiadająca indeks nazw  scalonych plików. Aby podejrzeć graficzną reprezentację warstwy wybieramy opcję „Atributes -> Add to Map”.

SAGA: indeks plików LAS

Ostatnim krokiem jest zapisanie efektu naszej pracy do pliku SHP. W tym celu wybieramy warstwę „Merged Layers” i prawym przyciskiem myszy wybieramy opcję „Save as…”.

Na koniec

Stworzona w formacie SHP warstwa stanowi podstawę do szybkiej identyfikacji przestrzennej zbiorów, a atrybut nazwy plików pozwala na szybki odnalezienie niezbędnej chmury na dysku komputera.

Wyprzedzając pytania: tak, wszystkie pokazane narzędzia można także uruchomić z poziomu narzędzia Geoprocesing dostępnego w QGIS. Nie zrobiłem tego z powodu wrodzonego u Polaków zamiłowania do utrudniania sobie życia, a także ze względów dydaktycznych.