如何将激光雷达格式 las 转换为 data.frame?
How to convert lidar format las to data.frame?
激光雷达数据只是 3d 坐标,通常采用 las
文件格式。内容示例
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
有没有办法在 R 的典型 data.frame
中获取点坐标?
例如,我们可以使用 http://data.wvgis.wvu.edu/elevation/ 中的数据。
另外,有没有办法从激光雷达文件中获取反射角度,data.frame
中的反射次数?
请在下面找到一种可能的解决方案,以获得包含所有信息的 data.table,data.frame
。您可以使用 as.data.frame()
获得纯 data.frame
,但 data.table
是 和 data.frame
Reprex
注意:我使用了 lidR
库中内置的 .las
数据集,因为它更方便。
- 示例数据集来自
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
由 reprex package (v2.0.1)
于 2022-03-18 创建
如果您不想玩 lidR
而想使用裸机 data.frame
只需使用 rlas
而不是 lidR
。
library(rlas)
read.las("C:/1/078-638.las")
激光雷达数据只是 3d 坐标,通常采用 las
文件格式。内容示例
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
有没有办法在 R 的典型 data.frame
中获取点坐标?
例如,我们可以使用 http://data.wvgis.wvu.edu/elevation/ 中的数据。
另外,有没有办法从激光雷达文件中获取反射角度,data.frame
中的反射次数?
请在下面找到一种可能的解决方案,以获得包含所有信息的 data.table,data.frame
。您可以使用 as.data.frame()
获得纯 data.frame
,但 data.table
是 和 data.frame
Reprex
注意:我使用了 lidR
库中内置的 .las
数据集,因为它更方便。
- 示例数据集来自
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
由 reprex package (v2.0.1)
于 2022-03-18 创建如果您不想玩 lidR
而想使用裸机 data.frame
只需使用 rlas
而不是 lidR
。
library(rlas)
read.las("C:/1/078-638.las")