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.Antworten:
Das Gohlke GDAL / OGR-Rad enthält den als Plugin kompilierten FileGDB-Treiber.
So funktioniert der FileGDB-Treiber:
[python install/virtualenv dir]\Lib\site-packages\osgeo
(verwenden Sie bin \ FileGDB.dll, wenn Sie 32-Bit-Python verwenden). Kopieren Sie die Datei FileGDB.dll nicht in das Verzeichnis gdalplugins.[python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py
Zeile 10 bearbeiten und auskommentieren.# uncomment the next line to enable plugins
os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')
Das Öffnen einer GDB mit dem FileGDB-Treiber sollte jetzt funktionieren.
Hinweis:
Mit Python 2.7 konnte ich nur das FileGDB-Plugin für die FileGDB-API v1.3 (MSVC 2008) verwenden. als v.1.4 segfaults python. Ich gehe davon aus, dass Python und die von Gohlke bereitgestellten GDAL- und Fiona-Bibliotheken mit MSVC 2008 und Version 1.4 mit MSVC 2010 (und höher) kompiliert wurden.
Die FileGDB API v1.4 funktioniert gut mit Python 3.4 und den von Gohlke bereitgestellten GDAL- und Fiona-Bibliotheken, die mit MSVC 2010 kompiliert wurden.
quelle
bin64\FileGDBAPI.dll
vonFileGDB_API_1_5_1-VS2010.zip
an sich github.com/Esri/file-geodatabase-api/tree/master/... aufstep 1
sie (in Python 3.5 64bit) arbeiten zu machengeopandas
über die Miniconda-Befehlszeile installiertconda install geopandas
. In__init__.py
Zeile 10 ist bereits unkommentiert, daher denke ich nicht, dass es sich um die Zeile handelt, auf die Sie sich beziehen. Auch gibt es keinegdalplugins
DateiDie wichtigsten Informationen finden Sie hier:
Dies sagt mir, dass Ihre
GDAL_DRIVER_PATH
Umgebungsvariable nicht festgelegt ist. Siehe die Anweisungen unter https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver . Sobald "FileGDB" inogrinfo --formats
(oderfio env --formats
) angezeigt wird , können Sie loslegen .quelle
Compile GDAL with the FGDB section commented
. Ich habe keine GDAL-Quelle. Ich habe es gerade vom Rad aus installiert, daher sind diese Schritte in meinem Fall vermutlich nicht anwendbar. Wohin soll ich von hier aus gehen?GDAL_DRIVER_PATH
Variable ist der Schlüssel. Lesen Sie trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_DRIVER_PATH. Wenn Sie dadurch nicht auf den richtigen Weg gebracht werden, lesen Sie den Thread unter lists.osgeo.org/pipermail/gdal-dev/2014-May/039066.html .Das Kopieren der Dateien FileGDBAPI.dll in den Ordner C: \ Programme \ QGIS 2.18 \ bin und ogr_FileGDB.dll in den Ordner C: \ Programme \ QGIS 2.18 \ bin \ gdalplugins erledigt den Trick für mich. Hier ist ein Dokument, das ihre Verwendung erklärt .
quelle