Estoy tratando de acceder a un conjunto de datos vectoriales en una geodatabase de archivos ESRI usando Python + GDAL. He compilado con éxito GDAL con la API de geodatabase de archivos. El controlador FileGDB funciona correctamente desde que ingresó
ogrinfo --formats
muestra el controlador FileGDB y al ingresar
ogrinfo myfilegdb.gdb
me da la información correcta sobre el contenido de la base de datos.
Sin embargo, no puedo descubrir cómo acceder al contenido en Python. Para acceder a un shapefile, escribiría:
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)
Al acceder a una clase de entidad FileGDB, supongo que usa los comandos:
driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)
pero esto no parece funcionar ya que no puede identificar / localizar el conjunto de datos. ¿Alguien sabe cómo llamar a clases de entidad individuales desde un ESRI FileGDB.
Estoy usando Python 2.7, GDAL 1.9.1, filegdb api 1.2 en Ubuntu 12.04 x64. Gracias por cualquier sugerencia!
fuente
Respuestas:
Ya casi estás ahí. Esto está en Windows 7, Python 2.6.5 32bit y GDAL 1.9.0:
Una vez que abra el FGDB, úselo
GetLayer
para acceder a su clase de características.fuente
Me gustaría agregar que "FileGDB" es un controlador propio que podría no estar incluido en su paquete GDAL http://www.gdal.org/drv_filegdb.html . Esto da como resultado el
GetDriverByName
regresoNone
.También está el controlador "OpenFileGDB" que es de solo lectura y se incluye por defecto http://www.gdal.org/drv_openfilegdb.html
fuente
Mucho más simple e intuitivo si usas fiona y geopandas
Nota: fiona usa gdal y geopandas usa fiona
Consulte también Leer los nombres de las capas de archivos de geodatabase en Python
fuente