Estoy tratando de leer una tabla directamente desde una geodatabase de archivos ESRI en R. Se puede descargar un archivo de datos de ejemplo aquí . La base de datos contiene una clase de característica de punto (Zone9_2014_01_Broadcast) y dos tablas vinculadas (Zone9_2014_01_Vessel y Zone9_2014_01_Voyage). Puede leer el shapefile en R utilizando readOGR
de la 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 cuando se utiliza 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 características NULL
Y si tratas de usar readOGR
en las tablas se obtiene 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 han encontrado características Además: Mensaje de advertencia: En ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, : ogrInfo: todas las características NULL
Por lo tanto, parece que sólo los accidentes geográficos pueden ser leídos por elOGR. ¿Hay alguna forma de importar las tablas directamente a R o la única solución es exportarlas primero desde ArcGIS como archivos *.dbf (o *.txt) como en este ¿Respuesta?
Además, si alguien puede proporcionar llamadas desde R a un python script que automatice la exportación de archivos *csv (preferiblemente) o *.dbf, sería una solución aceptable. La solución sólo tiene que ser escalable y automatizada.
2 votos
¿Has visto la nueva integración de R y ArcGIS? r-arcgis.github.io tal vez algo útil para su trabajo.
0 votos
Gracias por la sugerencia... Había visto que se mencionaba en algún momento, pero nunca lo había investigado más a fondo. Quizás ahora sea un buen momento para hacerlo.
0 votos
@AlexTereshenkov, si quieres escribir una respuesta corta para esta solución, la aceptaré ya que es lo que estaba buscando.
1 votos
Parece que el puente R-ArcGIS que mencionó @AlexTereshenkov sí tiene la funcionalidad de leer tablas directamente en R. La integración requiere ArcGIS Desktop >10.3.1 (o ArcGIS Pro) y R >3.2. R de 64 bits sólo puede utilizarse con el geoprocesamiento de fondo de 64 bits (y sólo permite su uso desde ArcGIS, no desde R) o ArcGIS Pro. Una vez instalados los bindings, se puede utilizar el paquete
arcgisbbinding
en R. La funciónarc.open()
abrirá la tabla como unarc.dataset-class object
. Para abrir directamente comodata.table
, utilice la funciónarc.select
.0 votos
Es bueno saberlo. He añadido una respuesta sólo para cerrar el hilo, pero lo has averiguado todo por tu cuenta, así que acepta pero no upvote :D
0 votos
Cotton.Rockwood, ¿has encontrado finalmente una solución directa para leer una tabla muy grande desde gdb en R? Tengo exactamente el mismo problema, pero como mis tablas de atributos contienen cerca de 300.000.000 de filas, convertirlas primero a shapefile como se sugiere arriba lleva demasiado tiempo. ¡Cualquier luz será más que bienvenida!
0 votos
@Pasciflora ¿Tienes acceso a ArcGIS Desktop >10.3.1? Si es así, utiliza el paquete 'arcgisbinding' como se menciona arriba y en la respuesta de Alex. Esa es la solución que he acabado utilizando.