Estou tentando acessar um conjunto de dados de vetor em um geodatabase de arquivo ESRI usando Python + GDAL. Compilei com êxito o GDAL com a API de geodatabase do arquivo. O driver FileGDB está funcionando corretamente desde a entrada
ogrinfo --formats
mostra o driver FileGDB e digitando
ogrinfo myfilegdb.gdb
fornece as informações corretas sobre o conteúdo do banco de dados.
No entanto, não consigo descobrir como acessar o próprio conteúdo em Python. Para acessar um shapefile, eu escreveria:
driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)
Ao acessar uma classe de recurso FileGDB, eu assumiria o uso dos comandos:
driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)
mas isso parece não funcionar, pois não pode identificar / localizar o conjunto de dados. Alguém sabe como chamar classes de recursos individuais de um ESRI FileGDB.
Estou usando o Python 2.7, GDAL 1.9.1, filegdb api 1.2 no Ubuntu 12.04 x64. Obrigado por todas as sugestões!
fonte
Respostas:
Você está quase lá. Isso está no Windows 7, Python 2.6.5 32bit e GDAL 1.9.0:
Depois de abrir o FGDB, use
GetLayer
para obter a sua classe de recurso.fonte
Gostaria de acrescentar que "FileGDB" é um driver proprietário que pode não estar incluído no seu pacote GDAL http://www.gdal.org/drv_filegdb.html . Isso resulta em
GetDriverByName
retornoNone
.Há também o driver "OpenFileGDB", que é somente leitura e é incluído por padrão http://www.gdal.org/drv_openfilegdb.html
fonte
Muito mais simples e intuitivo se você usar fiona e geopandas
Nota: fiona usa gdal e geopandas usa fiona
Consulte também Lendo os nomes das camadas de arquivos de geodatabase no Python
fonte