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 readOGRel rgeospaquete:
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 ogrListLayerso ogrInfo. Sin embargo, ogrInfoda 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 readOGRen 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

arcgisbbindingen 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
sfsolució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_Vesselcontiene datos de atributos puros y la capaZone9_2014_01_Broadcastcontiene 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
Geometryestá establecido enNone. Puede convertir los datos a un archivo de forma usandoogr2ogry 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
foreignlea los dbf:fuente
No estoy seguro si puede hacer esto con readOGR pero intente
Si eso no funciona, intente
ogr2ogrdirectamente, que puede exportar no geometrías a la tabla. (Tal vez intente con el paquete RgdalUtilspara ejecutar eso, una vez que haya finalizado su proceso).fuente
readOGRno 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
gdalUtilsbiblioteca sugerida por @mdsumner.Ejecútelo así:
Si aún no lo ha
gdalinstalado, deberá instalarlo para poder accedergdalUtils. Puede encontrar binarios e instrucciones para la instalación de 'gdal' aquí .fuente