Utilice el shapefile directamente. Puede hacerlo fácilmente con la función rgdal
o sf
y leer la forma en un objeto. Para ambos paquetes es necesario 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 la 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")
(En el caso de rgdal, en OSX o Linux no se puede utilizar la abreviatura '~' para el directorio personal como fuente de datos ( dsn
), de lo contrario aparecerá un mensaje poco útil: "No se puede abrir la fuente de datos". La página web sf
no tiene esta limitación, entre otras ventajas).
Esto le dará un objeto que es un Spatial*DataFrame (puntos, líneas o polígonos) - los campos de la tabla de atributos son entonces accesibles de la misma manera que un dataframe ordinario, es decir shape$ID
para la columna ID.
Si quieres utilizar el archivo ASCII que has importado, simplemente debes convertir los campos x e y de texto (caracteres) 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 Nota: rgdal es un poco mejor que maptools (que inicialmente sugerí aquí), principalmente porque lee y escribe la información de la proyección automáticamente.
Notas:
- el anidado
as.numeric(as.character())
si su texto ASCII fue leído como un factor (probablemente), esto asegura que usted obtenga los valores numéricos en lugar de los niveles del factor.
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 los componentes individuales como waypoints, trackpoints, etc), y es necesario leer cuidadosamente los ejemplos en línea.
1 votos
¿Qué tipo de shapefile? ¿Supongo que puntos, ya que tiene una columna X e Y?