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.Réponses:
La roue Gohlke GDAL / OGR inclut le pilote FileGDB compilé comme un plugin.
Pour faire fonctionner le pilote FileGDB:
[python install/virtualenv dir]\Lib\site-packages\osgeo
(utilisez bin \ FileGDB.dll si vous utilisez du python 32 bits). Ne copiez pas FileGDB.dll dans le répertoire gdalplugins.[python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py
et décommenter la ligne 10.# uncomment the next line to enable plugins
os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')
L'ouverture d'un GDB avec le pilote FileGDB devrait maintenant fonctionner.
Remarque:
En utilisant Python 2.7, je ne pouvais que faire fonctionner le plugin FileGDB avec l'API FileGDB v1.3 (MSVC 2008). comme v.1.4 segfaults python. Je suppose que c'est parce que python et les bibliothèques GDAL et Fiona fournies par Gohlke sont compilés avec MSVC 2008 et v. 1.4 est compilé avec MSVC 2010 (et versions ultérieures).
L'API FileGDB v1.4 fonctionne correctement avec Python 3.4 et les bibliothèques GDAL et Fiona fournies par Gohlke qui sont compilées avec MSVC 2010.
la source
bin64\FileGDBAPI.dll
partirFileGDB_API_1_5_1-VS2010.zip
de github.com/Esri/file-geodatabase-api/tree/master/… atstep 1
pour le faire fonctionner (en Python 3.5 64 bits)geopandas
à l'aide de la ligne de commande minicondaconda install geopandas
. À la__init__.py
ligne 10, c'est déjà sans commentaire, donc je ne pense pas que ce soit la ligne à laquelle vous faites référence. Il n'y a pas non plus degdalplugins
fichierLes informations clés sont ici:
Cela me dit que votre
GDAL_DRIVER_PATH
variable d'environnement n'est pas définie. Voir les instructions sur https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver . Une fois que "FileGDB" apparaîtra dansogrinfo --formats
(oufio env --formats
), vous serez prêt à partir.la source
Compile GDAL with the FGDB section commented
. Je n'ai pas la source GDAL; Je viens de l'installer à partir de la roue, donc je suppose que ces étapes ne sont pas applicables dans mon cas. Où dois-je aller d'ici?GDAL_DRIVER_PATH
variable est la clé. Lisez trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_DRIVER_PATH et si cela ne vous met pas sur la bonne voie, consultez le fil à lists.osgeo.org/pipermail/gdal-dev/2014-May/039066.html .La copie des fichiers FileGDBAPI.dll dans le dossier C: \ Program Files \ QGIS 2.18 \ bin et ogr_FileGDB.dll dans le dossier C: \ Program Files \ QGIS 2.18 \ bin \ gdalplugins fait l'affaire pour moi. Voici un document qui explique leur utilisation .
la source