Puis-je re-projeter un fichier LAS dans LidR

Aug 16 2020

Je travaille avec 2 jeux de données LAS 2014 adjacents fournis dans 2 projections:

Cependant, lorsque je tape espg (las), ma réponse retournée est 0

Si je tape summary (las) ma référence de coordonnées: NA

Je souhaite re-projeter ces deux éléments sur NAD83 / UTM18 et les traiter ensemble via LiDR. Je ne sais pas si cela est possible de le faire dans LiDR? Comment procéder au mieux? J'ai 1000 tuiles de 1 km à traiter.

Réponses

3 JRR Aug 17 2020 at 04:02

Vous pouvez attribuer un CRS à votre objet LAS avec epsg()<-

epsg(las) <- 12345

Vous pouvez re-projeter avec spTransform()mais cette fonction n'est pas optimale dans son implémentation actuelle. Il transforme réellement le LASen un SpatialPoints, utilise sp::spTransform()et met à jour le LAS. Je recommande d'utiliser las2lasfrom LAStoolspour ce type de tâches de traitement de fichiers LAS, mais pour un petit ensemble de données, cela spTransformpeut être pratique.

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²

Remarque - avant lidR 3.0.4la fonction est un peu boguée. Si vous cochez, las2vous verrez qu'il n'est plus strictement conforme aux spécifications. Il a été corrigé lidR 3.0.4.

las_check(las2)