GISProjekt RTele-FotoUAV

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.