Compte tenu d'une série chronologique zoo
avec des colonnes "lat", "LON" et "valeur":R: Lat-Lon UTM pour les séries chronologiques de zoo
z <- zoo(...)
# anyone knows how to create a simple example series here?
Je dois convertir les degrés lat et lon à UTM pour effectuer d'autres opérations comme le calcul de distance. Après un peu de recherche, je suis venu avec un extrait de travail qui convertit tout à un data.frame:
d <- as.data.frame(z)
coordinates(d) <- ~ lon+lat
proj4string(d) <- CRS("+proj=longlat +datum=WGS84")
d.final <- spTransform(d, CRS(paste("+proj=utm +zone=",zone," ellps=WGS84",sep="")))
Cela supprime les premières colonnes lat et ajoute deux LON et nouveaux UTM comme des colonnes lat et longitude. Y at-il un moyen simple de le faire directement avec l'objet zoo
?
En outre, cet extrait manque clairement d'informations de la variable zone
. De Determining UTM zone (to convert) from longitude/latitude nous apprenons comment obtenir le numéro de la zone de la longitude:
zone.number <- (floor((z$lon + 180)/6) %% 60) + 1
Mais je ne toujours pas maintenant comment calculer la zone lettre, par exemple. "N". Comment l'obtenir? En général, je peux m'attendre à ce que la zone de toutes mes séries chronologiques soit constante.
Cette solution modifiée à partir d'une réponse a été ce qui a été utilisé:
# coming from a zoo time series z with columns z$lat and z$lon
library(rgdal)
# assume that z stays within a zone
zone <- (floor((z$lon[1] + 180)/6) %% 60) + 1
# convert
utm <- project(merge(z$lon, z$lat), paste0("+proj=utm +zone=", zone))
# assign UTM values to new columns in z
z$utmx <- utm[,1]
z$utmy <- utm[,2]
Comment la conversion peut-elle être indépendante de la lettre de zone? Je m'attends à ce que la forme de la courbure de la géométrie UTM soit liée à la latitude beaucoup plus que la longitude. – Martin
Il vérifie pour moi. Veuillez fournir un exemple qu'il ne vérifie pas. –
Je viens de découvrir que «projet» a besoin de «lon» d'abord, que «lat», ce qui est contradictoire et je ne peux pas voir documenté clairement. Donc ce simple liner convertit latlon en UTM dans R: 'projet (t (c (lon, lat)), paste0 (" + proj = utm + zone = ", zone)'. – Martin