Ci sono state un sacco di domande su questo, ma nessuno di loro ha risolto il mio problema.
Ho una macchina con:
- Windows 7 x64
- Python 3.4.3 x64
- GDAL installata:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal è stato installato da una ruotaGDAL-1.11.4-cp34-none-win_amd64.whl
da qui
Il GDAL è installato in C:\Python34\Lib\site-packages\osgeo
. Lì ho un sacco di file .exe per i file gdal e ogr e .pyd.
- Fiona installato: è stato installato da una ruota
Fiona-1.6.3-cp34-none-win_amd64.whl
, dallo stesso sito Web.
Sono in grado di eseguire questo codice e viene eseguito correttamente:
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()
Sono anche in grado di ottenere formati OGR: ne ogrinfo --formats
stampa un sacco nel cmd di Windows (senza FileGDB lì).
Sono in grado di eseguire questo codice e viene eseguito correttamente:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Tuttavia, questo codice non verrà eseguito:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Perché non ho librerie compilate con Esri File GDB che sono richieste.
Ho scaricato e decompresso FileGDB_API_VS2012_1_3.zip
dalla pagina dei download di Esri . Come ho capito, non è necessario compilare nulla poiché il .dll è già lì.
Qual è la procedura corretta per registrare la dll dell'API GDB di Esri File per poterli usare in fiona nel mio ambiente?
AGGIORNAMENTO: (basato sulla risposta di Luke)
Ho scaricato il File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
dalla pagina dei download di Esri . Ho copiato FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
il file C:\Python34\Lib\site-packages\osgeo
. Ora ho due file qui ogr_FileGDB.dll
e FileGDBAPI.dll
.
Ho creato una variabile di Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. Nella PATH
variabile, non ho nulla di specifico in Python tranne il C:\Python34\Lib\site-packages\osgeo
.
Ora quando eseguo ogrinfo --formats
ottengo -> "FileGDB" (read/write)
e sono in grado di utilizzare il codice Python per lavorare con il driver FileGDB.
[python install dir]\Lib\site-packages\osgeo
come ho specificato nella mia risposta, non nella directory gdalplugins che menzioni nella tua modifica. Solo i plugin dei driver vanno in quella directory, non le dll di terze parti.