Było mnóstwo pytań na ten temat, ale żadne z nich nie rozwiązało mojego problemu.
Mam maszynę z:
- Windows 7 x64
- Python 3.4.3 x64
- gdal zainstalowane:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal został zainstalowany z kołemGDAL-1.11.4-cp34-none-win_amd64.whl
od tutaj
GDAL jest zainstalowany w C:\Python34\Lib\site-packages\osgeo
. Mam tam kilka plików .exe dla plików gdal i ogr i .pyd.
- Zainstalowana fiona: została zainstalowana z koła
Fiona-1.6.3-cp34-none-win_amd64.whl
, z tej samej strony.
Jestem w stanie uruchomić ten kod i wykonuje się on pomyślnie:
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()
Jestem również w stanie uzyskać formaty OGR: ogrinfo --formats
drukuje kilka z nich na cmd Windows (choć nie ma tam FileGDB).
Jestem w stanie uruchomić ten kod i wykonuje się on pomyślnie:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Jednak ten kod nie działa:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Ponieważ nie mam wymaganych bibliotek skompilowanych przez Esri File GDB.
Pobrałem i rozpakowałem FileGDB_API_VS2012_1_3.zip
ze strony pobierania Esri . Jak zrozumiałem, nie trzeba niczego kompilować, ponieważ plik .dll już tam jest.
Jaka jest prawidłowa procedura rejestracji biblioteki DLL interfejsu GDB Esri File GDB, aby móc korzystać z nich w środowisku Fiona w moim środowisku?
AKTUALIZACJA: (na podstawie odpowiedzi Luke'a)
Pobrałem File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
ze strony pobierania Esri . Skopiowałem FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
do C:\Python34\Lib\site-packages\osgeo
. Teraz mam tutaj dwa pliki ogr_FileGDB.dll
i FileGDBAPI.dll
.
Utworzyłem zmienną Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. W PATH
zmiennej nie mam nic specyficznego dla Pythona oprócz C:\Python34\Lib\site-packages\osgeo
.
Teraz podczas uruchamiania ogrinfo --formats
otrzymuję -> "FileGDB" (read/write)
i mogę używać kodu Python do pracy ze sterownikiem FileGDB.
[python install dir]\Lib\site-packages\osgeo
zgodnie z moją odpowiedzią, a nie do katalogu gdalplugins, o którym wspomniałeś w swojej edycji. Tylko wtyczki sterowników znajdują się w tym katalogu, a nie pliki DLL innych firm.