Deseamos compartir contigo la mejor información que encontramos en todo internet. Esperamos que te sea de utilidad y si quieres aportar alguna mejora siéntete libre de hacerlo..
Solución:
Puedes usar el spTransform()
métodos en rgdal: con su ejemplo, puede transformar el objeto a NAD83 para Kansas (26978):
library(rgdal)
library(maptools)
P4S.latlon <- CRS("+proj=longlat +datum=WGS84")
hrr.shp <- readShapePoly("HRR_Bdry", verbose=TRUE, proj4string=P4S.latlon)
plot(hrr.shp)
hrr.shp.2 <- spTransform(hrr.shp, CRS("+init=epsg:26978"))
plot(hrr.shp.2)
Para guardarlo en la nueva proyección:
writePolyShape(hrr.shp.2, "HRR_Bdry_NAD83")
EDITAR: O, según la sugerencia de @ Spacedman (que escribe un archivo .prj con la información de CRS):
writeOGR(hrr.shp.2, dsn = getwd(), layer = "HRR_Bdry_NAD83", driver="ESRI Shapefile")
Si no está seguro de desde qué CRS proyectar, consulte la siguiente publicación:
- ¿Elegir el valor correcto para proj4string para la lectura de shapefile en R?
Y si uno quiere definir / asignar un CRS cuando los datos no lo tienen, consulte:
- ¿Asignar CRS a shapefile cuando no tiene uno, en R?
Desde la introducción del paquete sf (eche un vistazo a las viñetas sf1, sf2, sf3, sf4 y una guía de migración aquí) puede usar st_transform()
para volver a reproyectar sus datos vectoriales:
require(sf)
hrr_sf = st_read('HRR_Bdry.shp', stringsAsFactors = FALSE,
crs = 4326) # has +proj=longlat +datum=WGS84
plot(hrr_sf)
hrr_sf2 = st_transform(hrr_sf, "+init=epsg:26978") # 1st option sp::CRS() not working/ needed
hrr_sf2 = st_transform(hrr_sf, 26978) # 2nd option - EPSG code as an integer
plot(hrr_sf2)
# don't think about doing this:
hrr_sf3 = st_read('HRR_Bdry.shp', stringsAsFactors = FALSE,
crs = 26978)
# Output layer
st_write(hrr_sf2, dsn = getwd(), layer = "HRR_Bdry_NAD83", driver = "ESRI Shapefile")
sf reemplazará a sp en el futuro y, debido a su simplicidad y velocidad, en mi humilde opinión, tiene varias ventajas en comparación con sp.
valoraciones y comentarios
Acuérdate de que puedes optar por la opción de agregar una reseña .