28 votos

Leer una tabla de una geodatabase de archivo de ESRI (.gdb) utilizando R

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.

0voto

Desert Cat Puntos 8

Pude instalar GDAL a través de Conda y ejecutar readOGR con los siguientes pasos.

Programas necesarios: Rstudio (descarga disponible aquí: https://rstudio.com/products/rstudio/download/ ) Anaconda3 (descarga disponible aquí: https://www.anaconda.com/products/individual )

Necesitarás instalar GDAL para poder ejecutar las funciones de Rstudio para abrir los archivos .gdb. Una forma de instalar GDAL es a través de Conda, que describiré aquí:

Instalación de GDAL en Conda:

  1. Instale Anaconda3 en el enlace proporcionado arriba.
  2. Busque Anaconda Navigator en el cuadro de búsqueda de Windows.
  3. Haga clic en Entornos en la parte izquierda del Navegador de Anaconda.
  4. Crea un nuevo Entorno con el botón + en la parte inferior izquierda.
  5. En la barra superior del entorno, haga clic en el desplegable y seleccione "no instalado".
  6. Busca gdal en los paquetes "no instalados".
  7. Instala r-gdalutils, r-rgdal, gdal y libgdal. (No estoy seguro de si todos estos son realmente necesarios, sólo instalé todo lo que tenía el nombre gdal). La instalación puede llevar unos minutos.

La función readGDBlayer funcionó para los archivos .gdb de 2014 en Marine Cadastre (donde se originaron los datos de muestra), pero no pudo abrir los archivos .gdb de 2009 a 2013. No estoy seguro de a qué se debe esto. La función readOGR fue capaz de abrir los archivos .gdb de 2009 - 2013

Aquí hay un enlace a los datos de AIS de 2009 que puede descargar https://coast.noaa.gov/htdata/CMSP/AISDataHandler/2009/index.html . ¿Alguien sabe por qué la función readGDBlayer no funciona con estos datos?

2 votos

Por favor, no haga preguntas en las respuestas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X