Lectura de la clase de entidad en la geodatabase de archivos usando R?


27

Tengo una característica contenida en una geodatabase que es más grande que 2GB como un archivo de forma exportado. Necesito ejecutar una función de extracción en R para atribuir los polígonos con datos de un archivo ráster. Exportar la función como una tabla no es una solución. ¿Cómo puedo leer las clases de entidad contenidas en una geodatabase de archivos Esri?

Respuestas:


38

Puede usar rgdal para acceder a clases de entidad en geodatabases de archivos Esri.

require(rgdal)

# The input file geodatabase
fgdb <- "C:/path/to/your/filegeodatabase.gdb"

# List all feature classes in a file geodatabase
subset(ogrDrivers(), grepl("GDB", name))
fc_list <- ogrListLayers(fgdb)
print(fc_list)

# Read the feature class
fc <- readOGR(dsn=fgdb,layer="some_featureclass")

# Determine the FC extent, projection, and attribute information
summary(fc)

# View the feature class
plot(fc)

2
Anteriormente, solo podía hacer esto si descargaba la API de base de datos de archivos ESRI y compilaba GDAL en su contra. Si usa OSGeo4W para instalar GDAL, hay una opción para hacerlo automáticamente. Sin embargo, esto puede haber cambiado en versiones posteriores de GDAL y ahora podría ser nativo, así que, si soy incorrecto, me disculpo.
Jeffrey Evans

3
@JeffreyEvans Esto es nativo ahora.
Aaron

44
Si bien es nativo para Windows, no parece estar incluido actualmente para otras plataformas (al menos Debian Jessie).
Cotton.Rockwood

1
+1 funciona bien. Es útil saber que el layerargumento puede omitirse cuando solo hay una clase de entidad en el GDB.
Whuber

2
Para aquellos que no saben nada sobre gdbarchivos, fgdben esta respuesta aquí hay un directorio y ogrListLayers()funciona en este directorio ...
MichaelChirico

2

Como ya se publicó en esta respuesta , esto ahora también funciona muy bien con sf:

require(sf)
fc <- sf::st_read("C:/path/to/your/filegeodatabase.gdb", layer = "some_featureclass")

Pero escribir en un fgdb no está implementado ( ¿todavía? ), Tendría que tener una licencia ArcGIS / ArcMap, así como la biblioteca R arcgisbinding(consulte https://github.com/R-ArcGIS/r-bridge )

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.