Convertir les coordonnées de readShapePoly en R en coordonnées long-lat


9

J'essaie de trouver quelques centroïdes d'un fichier de formes pour les municipalités danoises et ensuite de trouver le temps de conduite entre elles. J'utilise Rla readShapePolyfonction de maptoolscombinée avec la gCentroidfonction de rgeos, et tout fonctionne. Cependant, j'obtiens des points spatiaux tels que

SpatialPoints:
     x       y
1 571860.7 6225016
Coordinate Reference System (CRS) arguments: NA 

Ce qui n'est clairement pas quelque chose que je peux utiliser dans Google pour saisir les temps de trajet. Je cherche un moyen de convertir ces nombres en longitude-latitude, mais je ne sais pas comment.

Lorsque je lis les données à l'aide readOGRde la rgdalbibliothèque, j'obtiens les mêmes coordonnées mais cela me dit ce qui suit sur ce que je suppose être la projection (mais les coordonnées sont les mêmes)

Slot "proj4string":
CRS arguments:
+proj=utm +zone=32 +ellps=intl +units=m +no_defs

Exemple reproductible: j'ai mis les données pour l'exemple ici: https://github.com/sebastianbarfort/shapefiles

Cela devrait reproduire le problème:

library(maptools)
library(rgdal)
library(rgeos)

map = readShapePoly("~/Downloads/shapefiles-master/kommuner1983.shp")
centroid = gCentroid(map)
centroid

Réponses:


14

Utilisez spTransformpour transformer les coordonnées en WGS84:

library("rgdal")
library("rgeos")

map <- readOGR(".", "kommuner1983")
map_wgs84 <- spTransform(map, CRS("+proj=longlat +datum=WGS84"))
plot(map_wgs84, axes=TRUE)

terrain

gCentroid(map_wgs84)
# SpatialPoints:
#       x     y
# 1 10.05 55.96
# Coordinate Reference System (CRS) arguments: +proj=longlat +datum=WGS84
# +ellps=WGS84 +towgs84=0,0,0 

rgdal::readOGRest capable de lire automatiquement les informations de projection. maptoolsne lit ni n'écrit les informations de projection, vous laissant le soin de gérer ces détails manuellement.


C'était exactement ce que je cherchais.
sBarfort

@sBarfort Si la réponse résout votre question, vous pouvez l'accepter. De cette façon, les autres sauront que c'est la bonne réponse.
RK

Vous n'avez pas le même contrôle que gCentroid, mais SpatialPolygons détient le centroïde dans l'objet. Vous pouvez les récupérer sous forme de matrice en utilisant: les coordonnées (map_wgs84)
Jeffrey Evans
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.