28 votos

Cómo acceder a las clases de entidad en las geodatabases de archivos con Python y GDAL?

Estoy tratando de acceder a un vector conjunto de datos en un Archivo ESRI Geodatabase utilizando Python + GDAL. He compilado correctamente GDAL con la geodatabase de archivos de la API. El FileGDB controlador está funcionando correctamente desde la entrada en

ogrinfo --formats

muestra el FileGDB conductor y de entrar en

ogrinfo myfilegdb.gdb 

me da la información correcta sobre el contenido de la base de datos.

Sin embargo, yo no puedo saber cómo acceder al contenido de la misma en Python. Para acceder a un shapefile, que yo iba a escribir:

driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)

Cuando se accede a una FileGDB clase de entidad supongo que el uso de los comandos:

driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)

pero esto no parece funcionar, ya que no se puede identificar o localizar el conjunto de datos. ¿Alguien sabe cómo llamar a cada característica de clases a partir de 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!

23voto

Arda Xi Puntos 1099

Usted está casi allí. Esto es en Windows 7, Python 2.6.5 32 bits, y GDAL 1.9.0:

>>> from osgeo import ogr
>>> driver = ogr.GetDriverByName("FileGDB")
>>> ds = driver.Open(r"C:\temp\buildings.gdb", 0)
>>> ds
<osgeo.ogr.DataSource; proxy of <Swig Object of type 'OGRDataSourceShadow *' at 0x02BB7038> >
>>> ds.GetLayer("buildings")
<osgeo.ogr.Layer; proxy of <Swig Object of type 'OGRLayerShadow *' at 0x02BB7050> >
>>> b = ds.GetLayer("buildings")
>>> sr = b.GetSpatialRef()
>>> sr
<osgeo.osr.SpatialReference; proxy of <Swig Object of type 'OSRSpatialReferenceShadow *' at 0x02BB7080> >
>>> sr.ExportToProj4()
'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '
>>>

Una vez que se abre el FGDB, a continuación, utilice GetLayer para llegar a su featureclass.

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