J'ai un certain nombre de fichiers de formes dans différents CRS (principalement WGS84 lat / lon) que je voudrais transformer en une projection commune (probablement conique d'Albers Equal Area Conic, mais je pourrais demander de l'aide pour choisir une autre question une fois mon problème résolu -défini).
J'ai passé quelques mois à faire de la statistique spatiale en R, mais c'était il y a 5 ans. Pour ma vie, je ne me souviens pas comment transformer un sp
objet (par exemple SpatialPolygonsDataFrame
) d'une projection à une autre.
Exemple de code:
P4S.latlon <- CRS("+proj=longlat +datum=WGS84")
hrr.shp <- readShapePoly("HRR_Bdry"), verbose=TRUE, proj4string=P4S.latlon)
# Shapefile available at
# http://www.dartmouthatlas.org/downloads/geography/hrr_bdry.zip
# but you must rename all the filenames to have the same
# capitalization for it to work in R
J'ai maintenant une SpatialPolygonsDataFrame
information de projection appropriée, mais j'aimerais la transformer en projection souhaitée. Je me souviens qu'il existait une fonction quelque peu involontairement nommée pour cela, mais je ne me souviens plus de quoi il s'agit.
Notez que je ne veux pas simplement changer le CRS mais changer les coordonnées pour les faire correspondre ("reproject", "transformer", etc.).
modifier
En excluant AK / HI qui sont déplacés au Mexique pour ce fichier de formes:
library(taRifx.geo)
hrr.shp <-
subset(hrr.shp, !(grepl( "AK-" , hrr.shp@data$HRRCITY ) |
grepl( "HI-" , hrr.shp@data$HRRCITY )) )
proj4string(hrr.shp) <- P4S.latlon
la source
Réponses:
Vous pouvez utiliser les
spTransform()
méthodes de rgdal - en utilisant votre exemple, vous pouvez transformer l'objet en NAD83 pour le Kansas (26978):Pour le sauvegarder dans la nouvelle projection:
EDIT : Ou, selon la suggestion de @ Spacedman (qui écrit un fichier .prj avec les informations sur le CRS):
Si vous ne savez pas par quel CRS projeter, reportez-vous au post suivant:
Et si on veut définir / assigner un CRS quand les données n'en ont pas, se référer à:
la source
Depuis l'introduction du paquet sf (regardez les vignettes sf1 , sf2 , sf3 , sf4 et un guide de migration ici ), vous pouvez utiliser
st_transform()
pour reprojeter vos données vectorielles:sf remplacera sp à l'avenir et a, en raison de sa simplicité et de sa rapidité, plusieurs avantages par rapport à sp.
la source