По этому вопросу было множество вопросов, но ни один из них не решил мою проблему.
У меня есть машина с:
- Windows 7 x64
- Python 3.4.3 x64
- GDAL установлено:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; GDAL была установлена с колесомGDAL-1.11.4-cp34-none-win_amd64.whl
от сюда
GDAL установлен в C:\Python34\Lib\site-packages\osgeo
. Там у меня есть куча файлов .exe для файлов gdal, ogr и .pyd.
- Фиона установлена: была установлена с руля
Fiona-1.6.3-cp34-none-win_amd64.whl
, с того же сайта.
Я могу запустить этот код, и он успешно выполняется:
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()
Я также могу получать форматы OGR: ogrinfo --formats
печатает их несколько в Windows cmd (хотя там и нет FileGDB).
Я могу запустить этот код, и он успешно выполняется:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Однако этот код не будет работать:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Потому что у меня нет скомпилированных библиотек Esri File GDB, которые необходимы.
Я скачал и распаковал FileGDB_API_VS2012_1_3.zip
со страницы загрузки Esri . Как я понял, не нужно ничего компилировать, так как .dll уже есть.
Как правильно зарегистрировать dll API Esri File GDB, чтобы использовать их в fiona в моей среде?
ОБНОВЛЕНИЕ: (основываясь на ответе Люка)
Я скачал File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
со страницы загрузки Esri . Я скопировал FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
в C:\Python34\Lib\site-packages\osgeo
. Теперь у меня есть два файла здесь, ogr_FileGDB.dll
и FileGDBAPI.dll
.
Я создал переменную Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. В PATH
переменной у меня нет ничего специфичного для Python, кроме C:\Python34\Lib\site-packages\osgeo
.
Теперь при запуске ogrinfo --formats
я получаю -> "FileGDB" (read/write)
и могу использовать код Python для работы с драйвером FileGDB.
[python install dir]\Lib\site-packages\osgeo
как я указал в своем ответе, а не в каталог gdalplugins, который вы упомянули при редактировании. В этот каталог попадают только плагины драйверов, а не сторонние библиотеки.