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.Odpowiedzi:
Koło Gohlke GDAL / OGR zawiera sterownik FileGDB skompilowany jako wtyczka.
Aby uruchomić sterownik FileGDB:
[python install/virtualenv dir]\Lib\site-packages\osgeo
(użyj bin \ FileGDB.dll, jeśli używasz 32-bitowego pythona). Nie kopiuj pliku FileGDB.dll do katalogu gdalplugins.[python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py
i odkomentuj wiersz 10.# uncomment the next line to enable plugins
os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')
Otwarcie GDB za pomocą sterownika FileGDB powinno teraz działać.
Uwaga:
Za pomocą Pythona 2.7 mogłem tylko uzyskać wtyczkę FileGDB do pracy z FileGDB API v1.3 (MSVC 2008). jak python segfault v.1.4. Zakładam, że dzieje się tak, ponieważ Python oraz biblioteki GDAL i Fiona dostarczone przez Gohlke są kompilowane z MSVC 2008, a wersja 1.4 jest kompilowana z MSVC 2010 (i nowszymi).
FileGDB API v1.4 działa dobrze z Pythonem 3.4 oraz bibliotekami GDAL i Fiona dostarczonymi przez Gohlke, które są kompilowane z MSVC 2010.
źródło
bin64\FileGDBAPI.dll
zFileGDB_API_1_5_1-VS2010.zip
znajdującej się na stronie github.com/Esri/file-geodatabase-api/tree/master/… at,step 1
aby działało (w Pythonie 3.5 64-bitowym)geopandas
użyciu wiersza polecenia minicondaconda install geopandas
. W__init__.py
linii 10 nie ma już komentarza, więc nie sądzę, że jest to linia, o której mówisz. Również nie magdalplugins
plikuNajważniejsze informacje są tutaj:
To mówi mi, że twoja
GDAL_DRIVER_PATH
zmienna środowiskowa nie jest ustawiona. Zobacz instrukcje na https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver . Gdy „FileGDB” pojawi się wogrinfo --formats
(lubfio env --formats
), możesz zacząć.źródło
Compile GDAL with the FGDB section commented
. Nie mam źródła GDAL; Właśnie zainstalowałem go z koła, więc chyba te kroki nie mają zastosowania w moim przypadku. Gdzie mam stąd iść?GDAL_DRIVER_PATH
Zmienna jest kluczem. Przeczytaj trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_DRIVER_PATH, a jeśli to nie poprowadzi cię właściwą ścieżką, zobacz wątek na lists.osgeo.org/pipermail/gdal-dev/2014-May/039066.html .Kopiowanie plików FileGDBAPI.dll do folderu C: \ Program Files \ QGIS 2.18 \ bin i ogr_FileGDB.dll do folderu C: \ Program Files \ QGIS 2.18 \ bin \ gdalplugins załatwia sprawę. Oto dokument wyjaśniający ich użycie .
źródło