Es gab eine Menge Fragen dazu, aber keine davon hat mein Problem gelöst.
Ich habe eine Maschine mit:
- Windows 7 x64
- Python 3.4.3 x64
- gdal installiert :
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal wurdeGDAL-1.11.4-cp34-none-win_amd64.whl
von hier aus von einem rad aus eingebaut
Die GDAL ist installiert in C:\Python34\Lib\site-packages\osgeo
. Dort habe ich eine Reihe von .exe-Dateien für gdal und ogr und .pyd-Dateien.
- fiona installiert: wurde von einem Rad
Fiona-1.6.3-cp34-none-win_amd64.whl
aus von derselben Website installiert .
Ich kann diesen Code ausführen und er wird erfolgreich ausgeführt:
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()
Ich bin auch in der Lage, OGR-Formate zu erhalten: ogrinfo --formats
Druckt eine Reihe von Formaten im Windows-Cmd (ohne FileGDB).
Ich kann diesen Code ausführen und er wird erfolgreich ausgeführt:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Dieser Code wird jedoch nicht ausgeführt:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Weil ich keine Esri File GDB kompilierten Bibliotheken habe, die benötigt werden.
Ich habe FileGDB_API_VS2012_1_3.zip
von der Esri-Downloadseite heruntergeladen und entpackt . Wie ich verstanden habe, muss nichts kompiliert werden, da die DLL bereits vorhanden ist.
Was ist das richtige Verfahren, um die DLL der Esri File GDB-API zu registrieren, um sie in meiner Umgebung in fiona verwenden zu können?
UPDATE: (basierend auf Lukes Antwort)
Ich habe das File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
von der Esri-Downloadseite heruntergeladen . Ich habe das FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
auf die kopiert C:\Python34\Lib\site-packages\osgeo
. Jetzt habe ich zwei Dateien hier ogr_FileGDB.dll
und FileGDBAPI.dll
.
Ich habe eine Windows-Variable erstellt GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. In der PATH
Variablen habe ich nichts Python-spezifisches außer dem C:\Python34\Lib\site-packages\osgeo
.
Jetzt beim Ausführen des ogrinfo --formats
bekomme ich -> "FileGDB" (read/write)
und kann den Python-Code für die Arbeit mit dem FileGDB-Treiber verwenden.
[python install dir]\Lib\site-packages\osgeo
ich in meiner Antwort angegeben habe, nicht in das Verzeichnis gdalplugins, das Sie in Ihrer Bearbeitung erwähnt haben. In diesem Verzeichnis befinden sich nur Treiber-Plugins, keine DLLs von Drittanbietern.