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