Saya mencoba mengakses dataset vektor dalam ESRI File Geodatabase menggunakan Python + GDAL. Saya telah berhasil mengkompilasi GDAL dengan file geodatabase API. Driver FileGDB berfungsi dengan benar sejak masuk
ogrinfo --formats
menunjukkan driver FileGDB dan masuk
ogrinfo myfilegdb.gdb
memberi saya informasi yang benar tentang isi database.
Namun, saya tidak dapat menemukan cara mengakses konten itu sendiri dengan Python. Untuk mengakses shapefile, saya akan menulis:
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)
Saat mengakses kelas fitur FileGDB saya akan berasumsi menggunakan perintah:
driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)
tetapi ini tampaknya tidak berfungsi karena tidak dapat mengidentifikasi / menemukan kumpulan data. Adakah yang tahu cara memanggil kelas fitur individual dari ESRI FileGDB.
Saya menggunakan Python 2.7, GDAL 1.9.1, filegdb api 1.2 di Ubuntu 12.04 x64. Terima kasih atas sarannya!
sumber
Jawaban:
Kamu hampir sampai. Ini pada Windows 7, Python 2.6.5 32bit, dan GDAL 1.9.0:
Setelah Anda membuka FGDB, kemudian gunakan
GetLayer
untuk mendapatkan di FeatureClass Anda.sumber
Saya ingin menambahkan bahwa "FileGDB" adalah driver berpemilik yang mungkin tidak termasuk dalam paket GDAL Anda http://www.gdal.org/drv_filegdb.html . Ini menghasilkan
GetDriverByName
kembaliNone
.Ada juga driver "OpenFileGDB" yang hanya baca dan disertakan secara default http://www.gdal.org/drv_openfilegdb.html
sumber
Jauh lebih sederhana dan intuitif jika Anda menggunakan fiona dan geopanda
Catatan: fiona menggunakan gdal dan geopanda menggunakan fiona
Lihat juga Membaca nama lapisan file geodatabase dengan Python
sumber