J'essaie d'accéder à un ensemble de données vectorielles dans une géodatabase fichier ESRI à l'aide de Python + GDAL. J'ai compilé avec succès GDAL avec l'API de géodatabase fichier. Le pilote FileGDB fonctionne correctement depuis la saisie
ogrinfo --formats
affiche le pilote FileGDB et saisit
ogrinfo myfilegdb.gdb
me donne les informations correctes sur le contenu de la base de données.
Cependant, je ne peux pas savoir comment accéder au contenu lui-même en Python. Pour accéder à un fichier de formes, j'écrirais:
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)
Lors de l'accès à une classe d'entités FileGDB, je suppose en utilisant les commandes:
driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)
mais cela ne semble pas fonctionner car il ne peut pas identifier / localiser l'ensemble de données. Quelqu'un sait-il comment appeler des classes d'entités individuelles à partir d'un ESRI FileGDB?
J'utilise Python 2.7, GDAL 1.9.1, filegdb api 1.2 sur Ubuntu 12.04 x64. Merci pour toutes suggestions!
la source
Réponses:
Tu y es presque. Il s'agit de Windows 7, Python 2.6.5 32 bits et GDAL 1.9.0:
Une fois que vous avez ouvert le FGDB, utilisez-le
GetLayer
pour accéder à votre classe de fonctionnalités.la source
Je voudrais ajouter que "FileGDB" est un pilote propriétaire qui pourrait ne pas être inclus avec votre package GDAL http://www.gdal.org/drv_filegdb.html . Cela se traduit par le
GetDriverByName
retourNone
.Il existe également le pilote "OpenFileGDB" qui est en lecture seule et est inclus par défaut http://www.gdal.org/drv_openfilegdb.html
la source
Beaucoup plus simple et intuitif si vous utilisez des fiona et des géopandas
Remarque: fiona utilise gdal et geopandas utilise fiona
Voir aussi Lecture des noms des couches de fichiers de géodatabase en Python
la source