Posso reprojetar um arquivo LAS em LidR

Aug 16 2020

Estou trabalhando com 2 conjuntos de dados LAS 2014 adjacentes fornecidos em 2 projeções:

No entanto, quando eu digito espg (las) minha resposta retornada é 0

Se eu digitar resumo (las) meu coord.Ref .: NA

Desejo reprojetar ambos para NAD83 / UTM18 e processá-los juntos por meio do LiDR. Não estou certo se isso é possível fazer no LiDR. Qual a melhor forma de proceder? Tenho 1000 ladrilhos de 1km para lidar.

Respostas

3 JRR Aug 17 2020 at 04:02

Você pode atribuir um CRS ao seu objeto LAS com epsg()<-

epsg(las) <- 12345

Você pode reprojetar com, spTransform()mas esta função está abaixo do ideal em sua implementação atual. Na verdade, ele transforma o LASem um SpatialPoints, usa sp::spTransform()e atualiza novamente o LAS. Eu recomendo usar las2lasde LAStoolspara este tipo de tarefas de processamento de arquivo LAS, mas para pequenos conjuntos de dados spTransformpode ser conveniente.

library(lidR)
LASfile <- system.file("extdata", "Megaplot.laz", package="lidR")
las = readLAS(LASfile)
las
#> class        : LAS (v1.2 format 1)
#> memory       : 6.2 Mb 
#> extent       : 684766.4, 684993.3, 5017773, 5018007 (xmin, xmax, ymin, ymax)
#> coord. ref.  : +proj=utm +zone=17 +datum=NAD83 +units=m +no_defs 
#> area         : 53112.69 m²
#> points       : 81.6 thousand points
#> density      : 1.54 points/m²
las2 = spTransform(las, sp::CRS(SRS_string = "EPSG:26918"))
las2
#> class        : LAS (v1.2 format 1)
#> memory       : 6.2 Mb 
#> extent       : 214261.7, 214504.9, 5021517, 5021767 (xmin, xmax, ymin, ymax)
#> coord. ref.  : +proj=utm +zone=18 +datum=NAD83 +units=m +no_defs 
#> area         : 53174.62 m²
#> points       : 81.6 thousand points
#> density      : 1.53 points/m²

Nota - antes que lidR 3.0.4a função seja um pouco problemática. Se você verificar las2, verá que não está mais em conformidade com as especificações. Foi corrigido em lidR 3.0.4.

las_check(las2)