EPSG-Code in LAS - lidR kann nicht eingestellt werden

Sep 30 2020

Ich versuche, eine LAZ-Datei von EPSG 2226 auf EPSG 6418 neu zu projizieren.

Die Neuprojektion funktioniert einwandfrei (ich habe Folgendes befolgt: Kann ich eine LAS-Datei in LidR neu projizieren ), aber ich kann die Informationen nicht im LAS-Header speichern und anschließend meine LAS-Datei speichern (und die R-Umgebung verlassen). Das CRS ist verloren.

Laden Sie diese LAZ-Datei herunter

Ich habe den folgenden Code verwendet:

library(lidR)
las_tmp <- readLAS("./USGS_LPC_CA_Sonoma_2013_SOCO_0054_108_LAS_2017.laz")
las_tmp_reproj <- spTransform(las_tmp, sp::CRS("+init=epsg:6418"))

#> Warning messages:
#> 1: In showSRID(uprojargs, format = "PROJ", multiline = "NO") :
#>   Discarded datum NAD83_National_Spatial_Reference_System_2011 in CRS definition
#> 2: In sp::proj4string(x) : CRS object has comment, which is lost in output
#> 3: EPSG code not found: header not updated. Try to use the function epsg() manually to ensure CRS will be written in file. 
#> 4: In showSRID(uprojargs, format = "PROJ", multiline = "NO") :
#>   Discarded datum Unknown based on GRS80 ellipsoid in CRS definition

Wie unter warnings()Nummer 3 angegeben, wird der Epsg-Code nicht gefunden und der Header nicht aktualisiert. Ich habe die Tipps befolgt und den folgenden Befehl ausprobiert:

epsg(las_tmp_reproj) <- as.integer(6418)

#> Warning message:
#> In showSRID(SRS_string, format = "PROJ", multiline = "NO") :
#>   Discarded datum NAD83_National_Spatial_Reference_System_2011 in CRS definition

Leider führt der Zugriff auf die epsg-Informationen nach diesem Schritt zu epsg(las_tmp_reproj)folgendem Fehler:

epsg(ctg_tmp_reproj)
#> Error in if (tags[[i]]$key == 3072) return(i) : 
#>   l'argument est de longueur nulle

Bezieht es sich auf das Datum selbst? Die Fehlermeldung ist nicht wirklich explizit und ich stecke ziemlich fest

Antworten

3 JRR Sep 30 2020 at 04:16

Sie haben tatsächlich einen Fehler gefunden. Ich habe es als epsg (x) gemeldet : Fehler in if (tags [[i]] $ key == 3072) return (i): l'argument est de longueur nulle . Dieser Fehler kommt aus dem Paket rlas. Es wurde in Version 1.3.7 behoben. Um Ihre Probleme vor der CRAN-Version zu beheben, können Sie sie rlasvon Github installieren

remotes::install_github("Jean-Romain/rlas")