Il y a eu des tonnes de questions à ce sujet, mais aucune n'a résolu mon problème.
J'ai une machine avec:
- Windows 7 x64
- Python 3.4.3 x64
- gdal installé:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal a été installé à partir d'une roueGDAL-1.11.4-cp34-none-win_amd64.whl
d' ici
Le GDAL est installé dans C:\Python34\Lib\site-packages\osgeo
. Là, j'ai un tas de fichiers .exe pour les fichiers gdal et ogr et .pyd.
- fiona installé: a été installé à partir d'une roue
Fiona-1.6.3-cp34-none-win_amd64.whl
, à partir du même site Web.
Je peux exécuter ce code et il s'exécute avec succès:
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()
Je peux également obtenir des formats OGR: en ogrinfo --formats
imprime un tas dans le cmd Windows (sans FileGDB cependant).
Je peux exécuter ce code et il s'exécute avec succès:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Cependant, ce code ne s'exécutera pas:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Parce que je n'ai pas les bibliothèques compilées Esri File GDB qui sont nécessaires.
J'ai téléchargé et décompressé à FileGDB_API_VS2012_1_3.zip
partir de la page de téléchargement d'Esri . Si j'ai bien compris, il n'est pas nécessaire de compiler quoi que ce soit car le fichier .dll est déjà là.
Quelle est la procédure correcte pour enregistrer la DLL de l'API Esri File GDB pour pouvoir les utiliser dans fiona dans mon environnement?
MISE À JOUR: (basé sur la réponse de Luke)
J'ai téléchargé le File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
depuis la page de téléchargement d'Esri . J'ai copié le fichier FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
dans le C:\Python34\Lib\site-packages\osgeo
. Maintenant, j'ai deux fichiers ici, ogr_FileGDB.dll
et FileGDBAPI.dll
.
J'ai créé une variable Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. Dans la PATH
variable, je n'ai rien de spécifique à Python sauf le C:\Python34\Lib\site-packages\osgeo
.
Maintenant, lorsque j'exécute, ogrinfo --formats
j'obtiens -> "FileGDB" (read/write)
et je peux utiliser le code Python pour travailler avec le pilote FileGDB.
[python install dir]\Lib\site-packages\osgeo
comme je l'ai spécifié dans ma réponse, pas le répertoire gdalplugins que vous mentionnez dans votre édition. Seuls les plugins de pilotes vont dans ce répertoire, pas les DLL tierces.