Necesito abrir un archivo shape desde ArcMap en R para usarlo para un análisis geoestadístico adicional. Lo he convertido en un archivo de texto ASCII, pero en R se reconoce como data.frame. La función de coordenadas no funciona tan pronto como x e y se reconocen como no numéricos.
¿Podrías ayudar a lidiar con eso?
Respuestas:
Use el archivo de forma directamente. Puede hacerlo fácilmente con los paquetes
rgdal
osf
, y leer la forma en un objeto. Para ambos paquetes debe proporcionardsn
: la fuente de datos, que en el caso de un shapefile es el directorio , ylayer
- cuál es el nombre del shapefile, menos la extensión:(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, recibirá un mensaje inútil "No se puede abrir el origen de datos". Elsf
paquete no tener 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 la columna ID.Si desea utilizar el archivo ASCII que importó, simplemente debe convertir los campos de texto (caracteres) xey en números, por ejemplo:
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:
as.numeric(as.character())
funciones 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
ysf
tiene 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 pone en capas los componentes individuales como waypoints, trackpoints, etc.), y se necesita una lectura cuidadosa de ejemplos en línea.fuente
as.character
para solucionar el problema.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
argumento no debe contener barras diagonales finales, por ejemplo,dsn = "C:/Users/Downloads/"
debe serdsn = "C:/Users/Downloads"
. Espero que esto resuelva la frustración de alguien ...Estoy de acuerdo con el Simbamangu y estoy resuelto en términos de conservar el archivo de forma, pero quiero dirigir su atención específicamente a la biblioteca rgdal. Siga el enlace sugerido por gissolved para NCEAS y siga las instrucciones para rgdal. Puede ser un desafío instalarlo en algunas máquinas, pero puede mejorar sustancialmente los resultados cuando se trata de proyecciones.
La biblioteca maptools es excelente y le permite definir la proyección para el archivo de forma en el que está leyendo, pero para hacerlo necesita saber cómo especificar esa proyección en el formato proj4. un ejemplo podría parecerse a algo como:
Si desea seguir esta ruta, le recomiendo http://spatialreference.org como el lugar a donde ir para descubrir cómo se ve su proyección en el formato proj4. Si eso le parece una molestia, rgdal facilitará la lectura del archivo .prj del archivo de forma ESRI (el archivo que contiene la definición de proyección de ESRI para el archivo de forma. Para usar rgdal en el mismo archivo, simplemente escriba:
Es probable que pueda patinar sin hacer esto si solo está trabajando con un solo archivo de forma, pero tan pronto como comience a buscar múltiples fuentes de datos o superponer con Google Maps, mantener sus proyecciones en buena forma se vuelve esencial.
Para algunos tutoriales útiles sobre datos espaciales en R, que incluyen un montón de cosas sobre importación y trabajo con patrones de puntos, tengo algunos materiales de cursos antiguos en línea en https://csde.washington.edu/workshop/point-patterns-and-raster -superficies / (se pueden encontrar más talleres aquí ) que podrían ayudarlo a ver cómo se comparan estos métodos en la práctica.
fuente
Creo que no debería convertir el archivo de forma a un ASCII, sino utilizar el archivo de forma directamente con una de las extensiones espaciales. Aquí puede encontrar tres formas de leer (y escribir) un archivo de forma http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles . El proyecto espacial R probablemente también le interesará http://cran.r-project.org/web/packages/sp/index.html .
fuente
Puede usar la
sf
biblioteca para abrir Shapefiles directamente enR
. Es más rápido que largdal
biblioteca, verifique aquí: Características simples para R - Benchmarks . Para obtener más información sobre elsf
paquete, consulte la página de inicio del proyecto r-spaceial .fuente
Una solución fácil en 2017 es la
shapefile()
función en laraster
biblioteca.ACTUALIZACIÓN: Esta sigue siendo una buena opción en 2019.
fuente
Una alternativa más es usar la biblioteca fastshp que ofrece ::
Aquí está mi pregunta sobre SE sobre cómo usarlo con ggplot2:
¿Cómo puedo trazar el shapefile cargado a través de fastshp en ggplot2?
fuente