З цього питання було багато питань, але жодне з них не вирішило моєї проблеми.
У мене машина з:
- 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 встановлена: була встановлена з колеса
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друкує купу їх у cmd Windows (але 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 файлу GDB файлів Esri, щоб мати можливість використовувати їх у 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\osgeodir, як я вказав у своїй відповіді, а не gdalplugins dir, який ви згадуєте у своїй редакції. У цьому каталозі йдуть лише плагіни драйверів, а не сторонні dll.