Estoy tratando de leer una tabla directamente desde una geodatabase de archivos ESRI en R. Aquí se puede descargar un archivo de datos de ejemplo . La base de datos contiene una clase de entidad de puntos (Zone9_2014_01_Broadcast) y dos tablas vinculadas (Zone9_2014_01_Vessel y Zone9_2014_01_Voyage). Puede leer el archivo de forma en R usando readOGR
el rgeos
paquete:
library(rgeos)
library(downloader)
download("https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2014/01/Zone9_2014_01.zip", dest="Zone9_2014_01.zip", mode="wb")
unzip("Zone9_2014_01.zip", exdir = ".")
# Not Run (loads large point file)
# broadcast <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Broadcast")
Las dos tablas vinculadas también muestran cuándo usa ogrListLayers
o ogrInfo
. Sin embargo, ogrInfo
da una advertencia:
Mensaje de advertencia: En ogrInfo ("Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): ogrInfo: todas las funciones NULL
Y si intentas usarlo readOGR
en las tablas, obtienes un error:
vessel <- readOGR(dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel")
Error en readOGR (dsn = "Zone9_2014_01.gdb", layer = "Zone9_2014_01_Vessel"): no se encontraron características Además: Mensaje de advertencia: En ogrInfo (dsn = dsn, layer = layer, codificación = codificación, use_iconv = use_iconv,: ogrInfo: todas las características NULL
Por lo tanto, parece que solo readOGR puede leer las características geográficas. ¿Hay alguna forma de importar las tablas directamente en R o es la única solución para exportarlas primero desde ArcGIS como archivos * .dbf (o * .txt) como en esta respuesta?
Además, si alguien puede proporcionar llamadas de R a un script de Python que automatice la exportación de archivos * csv (preferiblemente) o * .dbf, sería una solución aceptable. La solución solo necesita ser escalable y automatizada.
fuente
arcgisbbinding
en R. La funciónarc.open()
abrirá la tabla como unarc.dataset-class object
. Para abrir directamente como adata.table
, use la funciónarc.select
.Respuestas:
Llego un poco tarde a la fiesta, pero ahora puedo leer esto
sf
, conDevuelve una advertencia (no hay geometrías de entidades presentes) sino también un data.frame con la tabla. Vea el hilo que comenzó aquí: https://stat.ethz.ch/pipermail/r-sig-geo/2018-February/026344.html
fuente
sf
solución y Google felizmente me trajo de vuelta a esta misma fiesta con una solución muy útil (así que felizmente agregué mi voto a esta pregunta).Utilizo GDAL 2.0.2 que se "envía" con soporte FDGB y sin un tercero un controlador FGDB para investigar esas cosas. El entorno de prueba es Debian Jessie de 64 bits.
En resumen, parece que la "capa"
Zone9_2014_01_Vessel
contiene datos de atributos puros y la capaZone9_2014_01_Broadcast
contiene datos de posición. Puede usar una solución alternativa dentro de R a través de una llamada al sistema y la conversación del GDB a un contenedor de archivos de forma (último script al final de la respuesta).Aquí están los pasos de investigación:
Como puede ver, el campo
Geometry
está establecido enNone
. Puede convertir los datos a un archivo de forma usandoogr2ogr
y obtener también solo un archivo de atributo dbase:Las geometrías (posiciones) se pueden encontrar en la capa
Zone9_2014_01_Broadcast
.Buque y viaje que no contienen datos de posición según el protocolo de mensajes AIS .
Aquí, la solución completa en R usando una llamada al sistema para que el GDB modele la conversación y el paquete
foreign
lea los dbf:fuente
No estoy seguro si puede hacer esto con readOGR pero intente
Si eso no funciona, intente
ogr2ogr
directamente, que puede exportar no geometrías a la tabla. (Tal vez intente con el paquete RgdalUtils
para ejecutar eso, una vez que haya finalizado su proceso).fuente
readOGR
no tiene la capacidad de leer tablas gdb.Existe una integración lanzada recientemente entre R y ArcGIS de Esri, llamada R ArcGIS Tools . Proporciona integración entre R y ArcGIS, lo que permite acceder indistintamente a las herramientas R y a los recursos de ArcGIS. Debería poder acceder a las clases / tablas de entidades de geodatabase con esta integración.
Las herramientas de muestra R están disponibles aquí y las herramientas de muestra que ilustran el uso de R en scripts de geoprocesamiento están aquí .
fuente
Esta función personalizada básicamente sigue la ruta descrita por @huckfinn pero usa la
gdalUtils
biblioteca sugerida por @mdsumner.Ejecútelo así:
Si aún no lo ha
gdal
instalado, deberá instalarlo para poder accedergdalUtils
. Puede encontrar binarios e instrucciones para la instalación de 'gdal' aquí .fuente