Lidar data is simply 3d coordinates, usually in las
file format. Сontent example
library(rgdal)
library(raster)
library(tmap)
library(tmaptools)
library(lidR)
library(RStoolbox)
las_cat <- readLAScatalog("C:/1/078-638.las")
summary(las_cat)
opt_chunk_size(las_cat) <- 500
plot(las_cat, chunk_pattern = TRUE)
las_cat
#> class : LAScatalog (v1.2 format 1)
#> extent : 637999, 638240.5, 6077999, 6079999 (xmin, xmax, ymin, ymax)
#> coord. ref. : NA
#> area : 483081.1 units²
#> points : 3.68 million points
#> density : 7.6 points/units²
#> density : 5.6 pulses/units²
#> num. files : 1
Is there a way to get point coordinates in a typical data.frame
for R?
As an example we can use data from this http://data.wvgis.wvu.edu/elevation/.
Also, is there a way to get the angle of reflection, the number of reflections in the data.frame
from the lidar file?
Please find below one possible solution to get a data.table,data.frame
with all the information. You can use as.data.frame()
to get a pure data.frame
but a data.table
is a data.frame
Reprex
NB: I used a .las
dataset built in the lidR
library as it is more convenient.
lidR
library(lidR)
LASfile <- system.file("extdata", "example.laz", package="rlas")
las <- readLAS(LASfile)
summary(las)
#> class : LAS (v1.0 format 1)
#> memory : 21.2 Kb
#> extent : 339002.9, 339015.1, 5248000, 5248001 (xmin, xmax, ymin, ymax)
#> coord. ref. : NAD83 / UTM zone 17N
#> area : 16 m²
#> points : 30 points
#> density : 1.88 points/m²
#> density : 1.62 pulses/m²
#> File signature: LASF
#> File source ID: 0
#> Global encoding:
#> - GPS Time Type: GPS Week Time
#> - Synthetic Return Numbers: no
#> - Well Know Text: CRS is GeoTIFF
#> - Aggregate Model: false
#> Project ID - GUID: 00000000-0000-0000-0000-000000000000
#> Version: 1.0
#> System identifier: LAStools (c) by rapidlasso GmbH
#> Generating software: las2las (version 201011)
#> File creation d/y: 343/2011
#> header size: 227
#> Offset to point data: 323
#> Num. var. length record: 1
#> Point data format: 1
#> Point data record length: 28
#> Num. of point records: 30
#> Num. of points by return: 26 4 0 0 0
#> Scale factor X Y Z: 0.001 0.001 0.001
#> Offset X Y Z: 6e+05 6500000 0
#> min X Y Z: 339002.9 5248000 973.145
#> max X Y Z: 339015.1 5248001 978.345
#> Variable Length Records (VLR):
#> Variable Length Record 1 of 1
#> Description: by LAStools of rapidlasso GmbH
#> Tags:
#> Key 1024 value 1
#> Key 3072 value 26917
#> Key 3076 value 9001
#> Key 4099 value 9001
#> Extended Variable Length Records (EVLR): void
payload(las)
#> Z gpstime Intensity ReturnNumber NumberOfReturns ScanDirectionFlag
#> 1 975.589 269347.3 82 1 1 1
#> 2 974.778 269347.3 54 1 1 1
#> 3 974.471 269347.3 27 2 2 1
#> 4 974.025 269347.3 55 2 2 1
#> 5 974.298 269347.3 117 1 1 0
#> 6 974.985 269347.3 81 1 1 0
#> 7 975.182 269347.3 84 1 1 1
#> 8 974.434 269347.3 104 1 1 1
#> 9 974.159 269347.3 91 1 1 1
#> 10 973.145 269347.3 99 1 1 1
#> 11 976.739 269347.5 87 1 1 1
#> 12 976.823 269347.5 83 1 1 1
#> 13 977.227 269347.5 87 1 1 1
#> 14 975.873 269347.5 87 1 1 1
#> 15 975.782 269347.5 107 1 1 1
#> 16 975.353 269347.5 76 1 1 1
#> 17 974.704 269347.5 113 1 1 1
#> 18 977.170 269347.5 64 1 1 0
#> 19 977.757 269347.5 89 1 1 0
#> 20 978.212 269347.5 98 1 1 0
#> 21 978.309 269347.5 50 1 2 0
#> 22 974.816 269347.5 31 2 2 0
#> 23 978.345 269347.5 51 1 2 1
#> 24 974.824 269347.5 32 2 2 1
#> 25 978.014 269347.5 85 1 1 1
#> 26 977.781 269347.5 94 1 1 1
#> 27 976.455 269347.5 78 1 1 1
#> 28 976.313 269347.7 71 1 1 1
#> 29 975.735 269347.7 75 1 1 1
#> 30 975.674 269347.7 106 1 1 1
#> EdgeOfFlightline Classification Synthetic_flag Keypoint_flag Withheld_flag
#> 1 1 1 FALSE FALSE FALSE
#> 2 0 1 FALSE FALSE FALSE
#> 3 0 1 FALSE FALSE FALSE
#> 4 0 1 FALSE FALSE FALSE
#> 5 0 1 FALSE FALSE FALSE
#> 6 0 1 FALSE FALSE FALSE
#> 7 1 1 FALSE FALSE FALSE
#> 8 0 1 FALSE FALSE FALSE
#> 9 0 1 FALSE FALSE FALSE
#> 10 0 1 FALSE FALSE FALSE
#> 11 1 1 FALSE FALSE FALSE
#> 12 0 1 FALSE FALSE FALSE
#> 13 0 1 FALSE FALSE FALSE
#> 14 0 1 FALSE FALSE FALSE
#> 15 0 1 FALSE FALSE FALSE
#> 16 0 1 FALSE FALSE FALSE
#> 17 0 1 FALSE FALSE FALSE
#> 18 0 1 FALSE FALSE FALSE
#> 19 0 1 FALSE FALSE FALSE
#> 20 0 1 FALSE FALSE FALSE
#> 21 0 1 FALSE FALSE FALSE
#> 22 0 2 FALSE FALSE FALSE
#> 23 1 1 FALSE FALSE FALSE
#> 24 1 2 FALSE FALSE FALSE
#> 25 0 1 FALSE FALSE FALSE
#> 26 0 1 FALSE FALSE FALSE
#> 27 0 1 FALSE FALSE FALSE
#> 28 1 1 FALSE FALSE FALSE
#> 29 0 2 FALSE FALSE FALSE
#> 30 0 1 FALSE FALSE FALSE
#> ScanAngleRank UserData PointSourceID X Y
#> 1 -21 32 17 339002.9 5248001
#> 2 -21 32 17 339003.0 5248000
#> 3 -21 32 17 339002.9 5248000
#> 4 -21 32 17 339002.9 5248000
#> 5 -21 32 17 339003.6 5248000
#> 6 -21 32 17 339003.5 5248000
#> 7 -21 32 17 339003.6 5248000
#> 8 -21 32 17 339003.7 5248000
#> 9 -21 32 17 339003.6 5248000
#> 10 -21 32 17 339003.7 5248000
#> 11 -22 32 17 339009.6 5248001
#> 12 -22 32 17 339009.5 5248001
#> 13 -22 32 17 339009.2 5248000
#> 14 -22 32 17 339009.4 5248001
#> 15 -22 32 17 339009.3 5248000
#> 16 -22 32 17 339009.3 5248000
#> 17 -22 32 17 339009.3 5248000
#> 18 -22 32 17 339009.5 5248000
#> 19 -22 32 17 339009.5 5248000
#> 20 -22 32 17 339009.5 5248000
#> 21 -22 32 17 339009.6 5248000
#> 22 -22 32 17 339010.7 5248001
#> 23 -22 32 17 339009.6 5248000
#> 24 -22 32 17 339010.6 5248001
#> 25 -22 32 17 339009.5 5248000
#> 26 -22 32 17 339009.4 5248000
#> 27 -22 32 17 339009.7 5248000
#> 28 -22 32 17 339015.1 5248000
#> 29 -22 32 17 339015.1 5248000
#> 30 -22 32 17 339015.0 5248000
Created on 2022-03-18 by the reprex package (v2.0.1)