LAStools jest pakietem umożliwiającym wykonanie podstawowych operacji na chmurach punktów skaningu laserowego. Został zbudowany w oparciu o opensource’ową (licencja LGPL) bibliotekę LASlib. Same narzędzia są dystrybuowane jako darmowe do celów naukowych i innych niekomercyjnych.
O ile biblioteka LASlib jest wieloplatformowa, tak jedynie część z LAStools posiada kod źródłowy do kompilacji w systemach innych niż Windows. Na szczęście skompilowane programy .exe dają się bez problemu uruchomić z wykorzystaniem Wine, jeśli z Microsoftem nam nie po drodze.
Programy potrafią odczytać chmurę punktów zapisaną w formacie ASCII, LAS, oraz specyficznym dla LASlib – LAZ, czyli LAS skompresowany ZIPem.
Z LAStools możemy skorzystać na dwa sposoby: z linii komend oraz za pośrednictwem prostego GUI (lastool.exe). GUI daje dostęp do większości narzędzi, umożliwia przeglądanie systemu plików, nagłówków plików LAS oraz zasięgów poszczególnych plików. Niestety nie wszystkie parametry są konfigurowalne z jego poziomu. Interfejs lastool prezentuje się następująco:
A oto co można zrobić z użyciem LAStools:
– przeglądać chmurę punktów z użyciem prostej przeglądarki lasview,
– tworzyć rastry z chmury punktów na podstawie wysokości, intensywności, kąta skanowania, liczby odbić na potrzeby analiz (formaty ASC i BIL) lub wizualizacji (pozostałe formaty) – za pomocą programu lasgrid,
– ograniczyć liczbę punktów do 1 w każdej komórce zadanej wielkości – lasthin,
– podzielić dużą chmurę na kwadratowe kafelki – lastile,
– sklejać dane z różnych szeregów lub plików zawierających osobno pierwsze i ostatnie odbicie – lassort,
– utworzyć poligony z zasięgu punktów używając concave hull – lasboundary,
– łączyć chmury z różnych plików i zapisać je w jednym lub wielu plikach wyjściowych – lasmerge,
– konwertować pliki LAS/LAZ na ASCII – las2txt i na Shapefile (MultiPointZ) – las2shp,
– wyciągać dane o zadanych kryteriach (numer odbicia, klasyfikacja, wysokość, zasięg…) i zapisywać w nowych plikach – las2las,
– tworzyć rastrowe DEMy z rzeczywistymi wartościami lub ich wizualizacje (mapy hipsometryczne, cieniowane) – las2dem, poziomice – las2iso i TINy (w formacie ESRI) – las2tin,
– wycinać punkty zawierające się wewnątrz zadanych poligonów, bądź zaliczyć je do zadanej klasy – lasclip,
– porównywać wysokości punktów LiDAR z punktami kontrolnymi – lascontrol,
– normalizować chmurę punktów (zamienić wysokości nad poziomem morza na wysokości nad poziomem gruntu – wymaga to wcześniejszej klasyfikacji), za pomocą narzędzia lasheight,
– dokonywać klasyfikacji gruntu z użyciem algorytmu Axelssona – lasground,
– usuwać z chmury punkty o identycznych współrzędnych x,y lub x,y,z – lasduplicate,
– kompresować i dekompresować pliki do/z formatu LAZ – laszip,
– tworzyć indeks przestrzenny 3D dla chmury punktów, przyspieszający przeglądanie – lasindex.
Do każdego narzędzia jest dołączona dokumentacja w postaci tekstowego pliku README, zawierającego opis dostępnych parametrów i kilka przykładowych przypadków użycia.
Liczba dostępnych funkcji jest więc całkiem spora, a szybkość i stabilność działania zadowalająca. Szczególnie interesującym narzędziem w pakiecie jest lasground – jakość klasyfikacji jest znacznie lepsza niż w przypadku podobnego pakietu FUSION/LDV, a program jest zdecydowanie łatwiejszy w użyciu niż mocno przestarzały ALDPAT lub moduły v.lidar.* z GRASS. Przykładowe wyniki klasyfikacji i filtracji przedstawiam poniżej – niech wyniki mówią same za siebie.
LAStools można ściągnąć ze strony domowej. Dla użytkowników dostępna jest również grupa dyskusyjna i profil na Facebooku.
Po pobraniu części lub całości danych stajemy przed kolejnym problemem: jak ich użyć w środowisku GIS? Ze względu na specyficzny model danych, są one dla większości standardowych narzędzi zupełnie niestrawne. Istnieje szereg konwerterów, z których omówię trzy: wtyczkę QGIS, osm2pgsql oraz Imposm.
[important]Poniżej opiszę sposoby konwersji danych,które są zoptymalizowane pod kątem wizualizacji. Innych narzędzi trzeba będzie użyć w celu zbudowania topologii sieci, albo stworzenia bazy punktów adresowych.[/important]
Jest to standardowo instalowana wtyczka do QGIS – wystarczy ją włączyć.
Oprócz pobierania danych z API, posiada również funkcję wczytywania plików .osm pozyskanych innymi sposobami. Dużą wadą tego rozwiązania jest ograniczenie liczby dostępnych kolumn atrybutów do 9 predefiniowanych – wobec mnogości tagów jest to o wiele za mało, oraz brak obsługi plików skompresowanych bzip2. Po wczytaniu do widoku QGIS powstaną 3 warstwy – po jednej na obiekty punktowe, liniowe i powierzchniowe. Następnie można je zamienić na pliki Shapefile, przez klik prawym klawiszem myszy i „Zapisz jako…”.
Konwerter ten służy do importu danych OSM do bazy PostGIS. Umożliwia import plików .osm, .pbf i .osm.bzip2, a także aktualizację bazy przy pomocy diffów. W systemie Linux można go zainstalować z pakietów (w Ubuntu znajduje się w standardowym repozytorium), bądź skompilować ze źródeł. Dla Windows najnowszą wersję trzeba skompilować samemu, natomiast starsze są dostępne jako jeden z elementów pakietu Hotosm.
Narzędzie obsługuje się z linii komend. Dostępnych jest wiele parametrów, których lista wyświetli się po wykonaniu komendy osm2pgsql -h. Baza danych tworzona przez osm2pgsql składa się z trzech tabel przestrzennych: planet_osm_point, planet_osm_line i planet_osm_polygon. Liczba kolumn, tworzonych na podstawie kluczy tagów, jest zależna od użytkownika – ustala się ją za pomocą pliku .style (można stworzyć swój od zera lub edytować domyślny default.style, w Ubuntu zlokalizowany jest w katalogu /usr/share/osm2pgsql).
Import danych może zostać dokonany w trybie standardowym – wówczas wszystkie dane OSM zostaną załadowane do pamięci RAM, lub w tzw. slim mode. Istotą tego drugiego jest utworzenie tymczasowych, nieprzestrzennych tabel, służących jako magazyn. Umożliwia to przetwarzanie plików większych niż rozmiar RAMu.
Baza utworzona przez osm2pgsql jest wyjątkowo mało przyjazna w korzystaniu, głównie za sprawą ogromnej liczby kolumn. Nowe wersje pozwalają nieco ograniczyć ten problem, korzystając z zapisu wszystkich tagów w jednej kolumnie typu hstore. Schemat podziału danych na trzy tabele jest sztywny – jedyne, na co mamy wpływ, to ilość kolumn. Głównym zadaniem tego narzędzia jest przygotowanie bazy dla wizualizacji za pomocą biblioteki Mapnik.
Jest to projekt rozwijany przez firmę Omniscale. Istnieją dwie wersje, 2 napisana w języku Python i 3 napisana w Go. W odróżnieniu od osm2pgsql użytkownik ma znacznie większy wpływ na schemat bazy danych: ilość, nazwy, zawartość, typ geometrii tabel są w pełni konfigurowalne. Możliwe jest skupienie wartości tagów z różnych kluczy (np. pokrycie terenu z kluczy landuse, natural, man_made, leisure, waterway) w jednej kolumnie „type“, co bardzo ułatwia wizualizację, a także ograniczenie importowanych wartości – pomocne przy tworzeniu map tematycznych.
Ponadto, konwerter ten umożliwia automatyczne tworzenie tabel o zgeneralizowanej geometrii (za pomocą funkcji ST_Simplify z PostGIS) dla map w małych skalach i widoków łączących różne dane, np. wszystkie kategorie dróg razem.
Imposm również jest obsługiwany z linii komend. Podstawowe polecenia to:
–read – wczytuje dane OSM z pliku (XML albo PBF) i umieszcza w tymczasowej bazie,
-write – zapisuje dane z bazy tymczasowej do PostGIS, zostaną umieszczone w tabelach z przedrostkiem osm-new w przypadku Imposm2 lub w schemacie “import” dla Imposm3.
–deploy-production-tables – przenosi dane z tabel przejściowych do tabel produkcyjnych.
Imposm 2 nie umożliwia przyrostowej aktualizacji danych, natomiast Imposm 3 – tak.
Dane OpenStreetMap są dostępne dla każdego do pobrania. Jednak nie każdy wie, że istnieje kilka różnych sposobów na ich pozyskanie z sieci. Każdy z nich ma swój zakres zastosowania, głównie w zależności od tego, jak dużo danych potrzebujemy oraz pożądanego formatu: oryginalny XML, binarny PBF, czy też dane przetworzone do postaci Shapefile.
Jest to najważniejsza usługa głównego serwera bazy danych, umożliwiająca zarówno odczyt jak i zapis. Jego głównym zadaniem jest dostarczanie małych porcji danych w celu ich edycji i wysłania zmian na serwer. Jest zatem usługą najsilniej obciążoną i obowiązują ją ostre limity: największy dopuszczalny obszar może mieć 0,25 stopnia kwadratowego lub 5 milionów elementów (nodes, ways i relations), w zależności od tego, co jest mniejsze. API nadaje się więc do doraźnego pobierania danych dla najmniejszych obszarów – najwyżej jednej gminy, a w przypadku miast z dużą ilością szczegółów – nawet osiedla.
Z API możemy skorzystać na następujące sposoby:
http://api.openstreetmap.org/api/0.6/map?bbox=<left>,<bottom>,<right>,<top>
BBOX podajemy w następującej kolejności: zachodnia, południowa, wschodnia, północna granica obszaru i formacie stopnie.dziesiąte stopnia. Wynik otrzymamy zawsze w postaci nieskompresowanego XML.
Ta usługa korzysta z kopii bazy danych, udostępnionej tylko do odczytu. Overpass API udostępnia własny język zapytań, który umożliwia filtrowanie danych według zadanych kryteriów atrybutowych lub przestrzennych. Z tego API można skorzystać za pośrednictwem serwisu http://overpass-turbo.eu lub wtyczki do QGIS o nazwie “QuickOSM”.
Niemiecka firma Geofabrik udostępnia za darmo do ściągnięcia większe fragmenty danych OSM. Dostępne są w trzech postaciach: binarnym formacie PBF, XML spakowanego kompresorem bzip2, albo też przekonwertowanej do formatu Shapefile. Dostępne są pakiety dla krajów, kontynentów i pojedynczych stanów USA. Ale uwaga – dane nie są precyzyjnie wymaskowane wzdłuż granic, zdarzają sie drobne fragmenty z krajów sąsiednich. Odpowiednie dane o granicach państwowych zwykle znajdują się w OSM, więc wystarczy po ściągnięciu i konwersji użyć odpowiedniego zapytania przestrzennego, by tę wadę usunąć.
Dane w formacie SHP, w odróżnieniu od oryginalnego XML, są gotowe do użycia w środowisku GIS. Zostały one podzielone na osobne warstwy tematyczne , oraz co bardzo ważne – najistotniejsze atrybuty skupione zostały w jednej kolumnie „fclass”. Dzięki temu można użyć ich w programach nie posiadających opcji wizualizacji opartej na regułach (rule-based rendering), koniecznej do wykorzystania wielu kolumn. Do tych danych dostępna jest szczegółowa dokumentacja w języku niemieckim i angielskim.
Adres do strony pobierania: http://download.geofabrik.de/osm/
Jest to zrzut całej zawartości bazy OSM. Można go pobrać z http://planet.openstreetmap.org, aktualnie zajmuje 36 GB w formacie binarnym. Import tak dużej bazy wymaga już mocnej maszyny. Aby ułatwić aktualizację posiadanej bazy o takich rozmiarach, publikowane są tzw. diffy – zestawy zmian. Dostępne są zestawy generowane co minutę, godzinę, dzień i tydzień. Ale uwaga – nie wszystkie konwertery obsługują aktualizację tą metodą.
Konieczność posiadania podkładu mapowego jest często sporym problemem w działaniach GIS-owych, szczególnie jeśli niezbędne są prawa do publikacji. Ceny takich podkładów, szczególnie wektorowych, mogą być barierą nie do przeskoczenia dla niskobudżetowych projektów. Skoro mamy już wolne oprogramowanie, dlaczego miałoby nie być wolnych map? Przy obecnym stanie techniki zbieranie danych przestało wszak wymagać specjalnych umiejętności i drogiego sprzętu. Dlatego możliwe stało się powstanie takich projektów, jak OpenStreetMap. Poniżej postaram się opisać najważniejsze zasady funkcjonowania i korzystania z zasobów OSM.
OpenStreetMap Polska oblikowało e-book wyjaśniający w przystępny sposób, jak każdy z nas może zacząć swoją przygodę z OSM i uczestniczyć w tym otwartym projekcie
Podręcznik jest przekładem z wersji anglojęzycznej tej publikacji wydanej przez Humanitarian OSM Team. Można się z niego dowiedzieć m.in.: jak założyć konto na OSM, jak korzystać z dostępnych edytorów oraz zbierać dane w terenie za pomocą odbiornika GPS.
Pobierz podręcznik [8 MB]
Książka opisuje wykorzystanie istniejących rozwiązań Open Source i modułów dostępnych dla języka programowania Python przy tworzeniu aplikacji GIS. Autor prezentuje informacje w formie tutorialu “krok po kroku”. W kolejnych rozdziałach opisane są ogólne metody stosowane w systemach informacji przestrzennej, najważniejsze biblioteki Pythona służące do operacji na danych przestrzennych, korzystanie z baz danych. Praktyczne przykłady pokazują w jaki sposób można samemu stworzyć kompletną aplikację GIS z dostępnych narzędzi Open Source.
Dane, z którymi przychodzi nam pracować przeważnie występują w znanych formatach, odpowiednich do oprogramowania, jednak nie zawsze. Czasem trzeba się naszukać zanim znajdzie się informację o pochodzeniu danych, z którymi trzeba pracować. Mamy nadzieję, iż poniższa lista pomoże.
Kalkulator pól dostępny w QGIS pozwala przeprowadzać operacje na danych i zapisywać ich wynik w tabeli atrybutów. Aktualnie dostępnych jest kilkadziesiąt funkcji operujących na danych tekstowych i numerycznych. Poniżej znajduje się spis dostępnych funkcji udostępnianych przez QGIS.
[important]
[/important]
[warning]Nowe funkcje dodawane są w kolejnych wersjach QGIS. Poniższa lista oparta jest na wersji 1.7.1, niektóre funkcję mogą być niedostępne we wcześniejszych wersjach QGIS. [/warning]
Funkcje tekstowe:
Funkcja | Opis | Przykład | Wynik |
tostring(a) | konwersja liczby a do tekstu | tostring(7.3) | ‘7.3’ |
lower(a) | konwersja tekstu a na małe litery | lower(‘Piotr Pociask’) | ‘piotr pociask’ |
upper(a) | konwersja tekstu a na duże litery | upper(‘Piotr Pociask’) | ‘PIOTR POCIASK’ |
length(a) | długość tekstu a | length(‘coord. X’) | 8 |
replace(a,b,c) | zamiana fragmentu tekstu b na tekst c w tekście a | replace(‘aabba’,’a’,’c’) | ‘ccbbc’ |
regexp_replace(a,b,c) | zamiana znaków c w tekście a z wykorzystaniem wyrażeń regularnych b | regexp_replace(‘abbaab’,'[ab]a’,’c’) | ‘abcab’ |
substr(a,from,len) | zwraca fragment tekstu a o długości len zaczynając od znaku o indeksie from (pierwszy znak tekstu ma indeks 1) | substr( ‘abbaab’ ,2,3) | ‘bba’ |
a || b | połączenie tekstów | ‘prosty’ || ‘Test’ | ‘prosty Test’ |
Funkcje matematyczne (operujące na liczbach):
Funkcja | Opis | Przykład | Wynik |
toint(a) | konwersja tekstu a do liczby całkowitej | toint(‘3’) | 3 |
toreal(a) | konwersja tekstu a do liczby rzeczywistej | toreal(‘12.2’) | 12.2 |
-a | wartość negatywna liczby a | -3 | 3 |
a+b | suma liczb a i b | 2+3 | 5 |
a-b | różnica liczb a i b | 5-10 | -5 |
a*b | iloczyn liczb a i b | 0.5*(-12) | -6 |
a/b | iloraz liczb a i b | 5/2 | 2.5 |
a^b | liczba a podniesiona do potęgi b | 3^2 | 9 |
sqrt(a) | pierwiastek kwadratowy liczby a | sqrt(9) | 3 |
sin(a) | zwraca sinus kąta a | sin(90) | 1 |
cos(a) | zwraca cosinus kąta a | cos(60) | 0.5 |
tan(a) | zwraca tangens kąta a | tan(0) | 0 |
asin(a) | zwraca arcus sinus kąta a (-1≤a≤1) | asin(1) | 1.5707 |
acos(a) | zwraca arcus cosinus kąta a (-1≤a≤1) | acos(-1) | 3.1415 (180°=pi) |
atan(a) | zwraca arcus tangens kąta a | atan(90) | 1.5596 |
atan2(x,y) | zwraca kąt w radianach między osią X a punktem (x, y) | atan2(1,1) | 0.7853 (45°=pi/4) |
Funkcje związane z obiektami przestrzennymi:
Funkcja | Opis |
NULL | Brak wartości w komórce tabeli |
$rownum | zwraca numer wiersza tabeli atrybutów |
$area | zwraca powierzchnię danego obiektu (poligony) |
$perimeter | zwraca obwód danego obiektu (poligony) |
$length | zwraca długość danego obiektu (linie) |
$id | zwraca unikalny identyfikator obiektu |
$x | zwraca współrzędną X danego obiektu (punkty) |
$y | zwraca współrzędną Y danego obiektu (punkty) |
xat(n) | Wartość X koordynatu dla n-tego punktu linii (pierwszy punkt n=0, wartości ujemne powodują liczenie punktów od końca linii) |
yat(n) | Wartość Y koordynatu dla n-tego punktu linii (pierwszy punkt n=0, wartości ujemne powodują liczenie punktów od końca linii) |
GIS czyli mapa w komputerze
Celem tej książki jest przedstawienie wiadomości pozwalających na zrozumienie podstaw systemów GIS i spełnianych przez nie funkcji. Autor starał się także pokazać, że nie jest to oprogramowanie tylko dla specjalistów i może być używane wszędzie i przez każdego. Książka jest przeznaczona dla tych, którzy chcieliby się dowiedzieć co to jest GIS, ale również dla tych, którzy chcieliby swą wiedzę usystematyzować i poszerzyć (Źródło: www.Helion.pl).
Systemy Informacji Geograficznej. Zarządzanie danymi przestrzennymi w GIS, SIP, SIT, LIS
Książka jest adresowana zarówno do osób, które pragną się dowiedzieć, co to jest GIS, jak i tym, które chciałyby swoją wiedzę usystematyzować i poszerzyć. Dzięki niej zdobędziesz obszerną wiedzę o:
…a w razie uczucia niedosytu możesz zajrzeć na strony internetowe, których adresy podano w książce.