Chmury punktów z R
W dzisiejszym poście pozostaniemy w tematyce świątecznej i pokażemy Wam jak wczytać w R chmury punktów. Możliwość wczytania tego typu plików ma wiele pakietów, ale naszym zdaniem uniwersalnym narzędziem zawierającym wiele funkcji do pracy z tymi danymi ma pakiet lidR. Zainstalujmy i zainicjujmy w R ten pakiet (przeczytaj tutaj). W naszym ćwiczeniu skorzystamy z naszego zbioru danych zapisanego w formacie LAZ który możecie pobrać tutaj. A wygląda on tak:)
Po wczytaniu pakietu przystąpmy do wczytania chmury punktów do zmiennej pc używając funkcji readLAS, gdzie jako argument wpisujemy ścieżkę do pliku:
pc <- readLAS('D:/data.laz')
Po wczytaniu pliku możemy go wywołać:
> lidar class : LAS (LASF v1.2) memory : 169.1 Mb extent : -2.93889 , 4.511044 , -5.501742 , 2.620667 (xmin, xmax, ymin, ymax) area : 48.60705 m2 (convex hull) points : 1927722 points, NA pulses density : 39659.3 points/m2, NA pulses/m2 field names : X Y Z gpstime Intensity ReturnNumber NumberOfReturns ScanDirectionFlag EdgeOfFlightline Classification Synthetic_flag Keypoint_flag Withheld_flag ScanAngle UserData PointSourceID R G B coord. ref. : NA
Uzyskujemy wtedy podstawowe informacje o zapisanych w pliku danych. Możemy również przejrzeć szczegółowo zapisane punkty wybierając:
> pc@data X Y Z gpstime Intensity ReturnNumber NumberOfReturns ScanDirectionFlag EdgeOfFlightline Classification Synthetic_flag Keypoint_flag Withheld_flag 1: 4.443461 -3.535939 -20.74261 0 0 0 0 0 0 0 FALSE FALSE FALSE 2: 4.443162 -3.540033 -20.75485 0 0 0 0 0 0 0 FALSE FALSE FALSE 3: 4.441204 -3.546241 -20.76430 0 0 0 0 0 0 0 FALSE FALSE FALSE 4: 4.438651 -3.553199 -20.77274 0 0 0 0 0 0 0 FALSE FALSE FALSE 5: 4.435916 -3.527723 -20.74886 0 0 0 0 0 0 0 FALSE FALSE FALSE --- 1927718: -1.728747 -4.646368 -19.82108 0 0 0 0 0 0 0 FALSE FALSE FALSE 1927719: -1.726810 -4.653493 -19.82575 0 0 0 0 0 0 0 FALSE FALSE FALSE 1927720: -1.708234 -4.716075 -19.85415 0 0 0 0 0 0 0 FALSE FALSE FALSE 1927721: -1.734891 -4.667811 -19.85303 0 0 0 0 0 0 0 FALSE FALSE FALSE 1927722: -1.716344 -4.719571 -19.85127 0 0 0 0 0 0 0 FALSE FALSE FALSE ScanAngle UserData PointSourceID R G B 1: 0 0 0 30976 12288 10752 2: 0 0 0 30976 12544 10496 3: 0 0 0 30976 13312 9728 4: 0 0 0 30976 13312 8960 5: 0 0 0 31744 14080 10496 --- 1927718: 0 0 0 5376 1536 256 1927719: 0 0 0 5632 1280 0 1927720: 0 0 0 8448 3584 2304 1927721: 0 0 0 4864 1024 768 1927722: 0 0 0 6656 2304 2304
Zbiór punktów możemy wyświetlić korzystając z funkcji plot:
plot(pc)
Chmurę punktów możemy, również zapisać korzystając z funkcji:
writeLAS(pc,'D:/data_out.laz')
To na tyle w tym poście:) Testujcie możliwości przedstawionej dzisiaj biblioteki lidR.
W Nowym Roku 2019 życzymy Wam dużo nowych geo-wyzwań i nie tylko.