Houve muitas perguntas sobre isso, mas nenhuma delas resolveu meu problema.
Eu tenho uma máquina com:
- Windows 7 x64
- Python 3.4.3 x64
- gdal instalado:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal foi instalado a partir de uma rodaGDAL-1.11.4-cp34-none-win_amd64.whl
de aqui
O GDAL está instalado no C:\Python34\Lib\site-packages\osgeo
. Lá eu tenho um monte de arquivos .exe para arquivos gdal e ogr e .pyd.
- fiona instalado: foi instalado a partir de uma roda
Fiona-1.6.3-cp34-none-win_amd64.whl
, no mesmo site.
Eu sou capaz de executar este código e ele executa com sucesso:
import gdal
import ogr
from gdalconst import *
shp = r"C:\Data\GIS\PTS.shp"
driver = ogr.GetDriverByName('ESRI Shapefile')
dataset = driver.Open(shp)
layer = dataset.GetLayer()
layer.GetFeatureCount()
schema = layer.schema
fields = [field.GetName() for field in schema]
feature = layer.GetNextFeature()
Também consigo obter formatos OGR: ogrinfo --formats
imprime vários deles no cmd do Windows (sem o FileGDB lá).
Eu sou capaz de executar este código e ele executa com sucesso:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
No entanto, esse código não será executado:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Porque eu não tenho as bibliotecas compiladas do Esri File GDB que são necessárias.
Fiz o download e descompactei FileGDB_API_VS2012_1_3.zip
na página de downloads da Esri . Pelo que entendi, não há necessidade de compilar nada, pois a DLL já está lá.
Qual é o procedimento correto para registrar a DLL da API do Esri File GDB para poder usá-las no fiona no meu ambiente?
ATUALIZAÇÃO: (com base na resposta de Luke)
Fiz File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
o download na página de downloads da Esri . Eu copiei o FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
para o C:\Python34\Lib\site-packages\osgeo
. Agora eu tenho dois arquivos aqui ogr_FileGDB.dll
e FileGDBAPI.dll
.
Eu criei uma variável do Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. Na PATH
variável, não tenho nada específico em Python, exceto o C:\Python34\Lib\site-packages\osgeo
.
Agora, ao executar o que ogrinfo --formats
eu recebo -> "FileGDB" (read/write)
e posso usar o código Python para trabalhar com o driver FileGDB.
[python install dir]\Lib\site-packages\osgeo
diretório conforme especificado na minha resposta, e não o diretório gdalplugins que você mencionou na sua edição. Somente plug-ins de driver entram nesse diretório, não dlls de terceiros.