1 votos

Forma limpia de convertir de pies estadounidenses a metros con lidR - Nube de puntos LiDAR

Me gustaría convertir esta nube de puntos de pies estadounidenses a metros. Metadatos de la nube de puntos aquí .

Primero pensé en convertirlo correctamente reproyectando a un CRS métrico pero esto me causó muchos problemas. Ver los siguientes posts (en su orden de publicación) :

Pero básicamente, lo que quiero son nubes de puntos métricas. Así que se me ocurrió la idea de convertir simplemente las coordenadas XYZ de la nube de puntos utilizando las_rescale() de lidR R paquete:

library(lidR)
tmp_las <- readLAS('./USGS_LPC_CA_FEMA_R9_Russian_2017_LAS_2018.laz')
tmp_las_RS <- las_rescale(tmp_las,xscale = 0.3048 , yscale = 0.3048, zscale = 0.3048)
#> X coordinates were moved by 0.0762 on average
#> Y coordinates were moved by 0.0762 on average
#> Z coordinates were moved by 0.0762 on average

Pero las cabeceras no lo tienen en cuenta

tmp_las_RS
#> class        : LAS (v1.2 format 3)
#> memory       : 618.7 Mb 
# extent       : 6268117, 6270217, 1998802, 2000902 (xmin, xmax, ymin, ymax)
#> coord. ref.  : +proj=lcc +lat_0=37.6666666666667 +lon_0=-122 +lat_1=39.8333333333333 +lat_2=38.3333333333333 +x_0=2000000.0001016 +y_0=500000.0001016 +ellps=GRS80 +units=us-ft +no_defs 
#> area         : 4.41 kus-ft²
#> points       : 7.05 million points
#> density      : 1.6 points/us-ft²

¿Hay alguna forma mejor de hacerlo a través de lidR?

2voto

Andrey Atapin Puntos 384

las_rescale() no realiza la tarea que usted cree. No es usted el primero que se confunde. Consulte esta respuesta exhaustiva: ¿Recalificación y reajuste de una nube de puntos con lidR?

Teniendo en cuenta la forma en que un archivo LAS almacena los datos (cabecera, factor de escala, desplazamiento) es realmente difícil realizar lo que quieres hacer porque necesitas (1) recalcular las coordenadas (2) cuantificar las coordenadas (3) actualizar la cabecera (4) actualizar el cuadro delimitador. Todo ello de forma manual.

Pero en la versión 3.1 las cosas son más fáciles (y están mejor documentadas). Vea esto hilo . Así que a partir de la versión 3.1 se puede hacer

ft2m = 1200/3937
las$X = las$X * ft2m
las$Y = las$Y * ft2m
las$Z = las$Z * ft2m

Pero esto no actualiza el SIR por arte de magia. Así que debes borrar el SIR porque, según tus mensajes anteriores, no sabes qué SIR introducir.

crs(las) <- sp::CRS()

Para instalar lidR 3.1 que no saldrá a la venta antes de enero de 2021.

remotes::install_github("Jean-Romain/lidR", ref = "devel")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X