Ich versuche, mit Python + GDAL auf einen Vektordatensatz in einer ESRI-File-Geodatabase zuzugreifen. Ich habe GDAL erfolgreich mit der File-Geodatabase-API kompiliert. Der FileGDB-Treiber funktioniert seit der Eingabe ordnungsgemäß
ogrinfo --formats
Zeigt den FileGDB-Treiber an und gibt ihn ein
ogrinfo myfilegdb.gdb
gibt mir die richtigen Informationen zum Inhalt der Datenbank.
Ich kann jedoch nicht herausfinden, wie ich in Python auf den Inhalt selbst zugreifen kann. Für den Zugriff auf ein Shapefile würde ich schreiben:
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)
Beim Zugriff auf eine FileGDB-Feature-Class würde ich davon ausgehen, die folgenden Befehle zu verwenden:
driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)
Dies scheint jedoch nicht zu funktionieren, da der Datensatz nicht identifiziert / lokalisiert werden kann. Weiß jemand, wie man einzelne Feature-Classes aus einer ESRI FileGDB aufruft?
Ich verwende Python 2.7, GDAL 1.9.1, filegdb api 1.2 auf Ubuntu 12.04 x64. Vielen Dank für alle Vorschläge!
quelle
Antworten:
Du bist fast da. Dies ist unter Windows 7, Python 2.6.5 32bit und GDAL 1.9.0 der Fall:
Sobald Sie die FGDB geöffnet haben, rufen
GetLayer
Sie mit Ihre Feature-Class auf.quelle
Ich möchte hinzufügen, dass "FileGDB" ein proprietärer Treiber ist, der möglicherweise nicht in Ihrem GDAL-Paket enthalten ist. Http://www.gdal.org/drv_filegdb.html . Dies führt zur
GetDriverByName
RückkehrNone
.Es gibt auch den Treiber "OpenFileGDB", der schreibgeschützt ist und standardmäßig in http://www.gdal.org/drv_openfilegdb.html enthalten ist
quelle
Viel einfacher und intuitiver, wenn Sie Fiona und Geopandas verwenden
Hinweis: fiona verwendet gdal und geopandas verwendet fiona
Siehe auch Lesen der Namen von Geodatabase-Dateischichten in Python
quelle