Usa el shapefile directamente. Puede hacer esto fácilmente con los paquetes rgdal
o sf
, y leer la forma en un objeto. Para ambos paquetes, debe proporcionar dsn
- la fuente de datos, que en el caso de un shapefile es el directorio , y layer
- que es el nombre del shapefile, menos extensión:
# Read SHAPEFILE.shp from the current working directory (".")
require(rgdal)
shape <- readOGR(dsn = ".", layer = "SHAPEFILE")
require(sf)
shape <- read_sf(dsn = ".", layer = "SHAPEFILE")
(Para rgdal, en OSX o Linux no puede usar la abreviatura '~' para el directorio de inicio como el directorio de origen de datos ( dsn
); de lo contrario, aparecerá el mensaje "No se puede abrir el origen de datos"). El paquete sf
no tiene esta limitación, entre otras ventajas.)
Esto le dará un objeto que es un marco de datos espacial * (puntos, líneas o polígonos) - los campos de la tabla de atributos son accesibles para usted de la misma manera que un marco de datos ordinario, es decir, shape$ID
para el ID columna.
Si desea usar el archivo ASCII que importó, simplemente debe convertir los campos de texto (carácter) x e y en números, por ejemplo:
shape$x <- as.numeric(as.character(shape$x))
shape$y <- as.numeric(as.character(shape$y))
coordinates(shape) <- ~x + y
Editar 2015-01-18 : tenga en cuenta que rgdal es un poco mejor que maptools (que inicialmente sugerí aquí), principalmente porque lee y escribe información de proyección automáticamente.
Notas:
- las funciones
as.numeric(as.character())
anidadas: si su texto ASCII se leyó como un factor (probablemente), esto garantiza que obtenga los valores numéricos en lugar de los niveles de los factores.
-
rgdal
y sf
tienen formas confusas de acceder a diferentes tipos de archivos y bases de datos (por ejemplo, para un archivo GPX, el dsn es el nombre del archivo y las capas de los componentes individuales, como puntos de referencia, puntos de seguimiento, etc.) y lectura cuidadosa de ejemplos en línea es necesario