По этому вопросу было множество вопросов, но ни один из них не решил мою проблему.
У меня есть машина с:
- 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, который вы упомянули при редактировании. В этот каталог попадают только плагины драйверов, а не сторонние библиотеки.Ответы:
Колеса Gohlke GDAL / OGR включает в себя драйвер FileGDB скомпилированный как плагин.
Чтобы заставить работать драйвер FileGDB:
[python install/virtualenv dir]\Lib\site-packages\osgeo
(используйте bin \ FileGDB.dll при использовании 32-битного Python). Не копируйте FileGDB.dll в каталог gdalplugins.[python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py
и раскомментируйте строку 10.# uncomment the next line to enable plugins
os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')
Открытие GDB с драйвером FileGDB теперь должно работать.
Замечания:
Используя Python 2.7, я мог получить только плагин FileGDB для работы с FileGDB API v1.3 (MSVC 2008). как v.1.4 segfaults python. Я предполагаю, что это потому, что библиотеки Python и GDAL и Fiona, предоставляемые Gohlke, скомпилированы с MSVC 2008, а версия 1.4 скомпилирована с MSVC 2010 (и более поздними версиями).
FileGDB API v1.4 прекрасно работает с Python 3.4 и библиотеками GDAL и Fiona, предоставленными Gohlke, которые скомпилированы с MSVC 2010.
источник
bin64\FileGDBAPI.dll
сFileGDB_API_1_5_1-VS2010.zip
расположенного на github.com/Esri/file-geodatabase-api/tree/master/… at,step 1
чтобы заставить его работать (в Python 3.5 64bit)geopandas
помощью командной строки minicondaconda install geopandas
. В__init__.py
строке 10 уже нет комментариев, поэтому я не думаю, что это строка, на которую вы ссылаетесь. Тоже нетgdalplugins
файлаКлючевая информация здесь:
Это говорит мне, что ваша
GDAL_DRIVER_PATH
переменная окружения не установлена. См. Инструкции по адресу https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver . Как только "FileGDB" появится вogrinfo --formats
(илиfio env --formats
), вам будет хорошо.источник
Compile GDAL with the FGDB section commented
. У меня нет источника GDAL; Я только что установил его с руля, поэтому я думаю, что эти шаги не применимы в моем случае. Куда мне идти отсюда?GDAL_DRIVER_PATH
Переменная является ключевым. Прочитайте trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_DRIVER_PATH, и если это не поможет вам выбрать правильный путь, просмотрите ветку по адресу lists.osgeo.org/pipermail/gdal-dev/2014-May/039066.html. ,Копирование файлов FileGDBAPI.dll в папку C: \ Program Files \ QGIS 2.18 \ bin и ogr_FileGDB.dll в папку C: \ Program Files \ QGIS 2.18 \ bin \ gdalplugins помогает мне. Вот документ, который объясняет их использование .
источник