Ada banyak pertanyaan tentang itu tetapi tidak satupun dari mereka menyelesaikan masalah saya.
Saya punya mesin dengan:
- Windows 7 x64
- Python 3.4.3 x64
- gdal diinstal:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal dipasang dari rodaGDAL-1.11.4-cp34-none-win_amd64.whl
dari sini
GDAL diinstal ke C:\Python34\Lib\site-packages\osgeo
. Di sana saya memiliki banyak file .exe untuk file gdal dan ogr dan .pyd.
- fiona diinstal: diinstal dari roda
Fiona-1.6.3-cp34-none-win_amd64.whl
, dari situs web yang sama.
Saya dapat menjalankan kode ini dan dijalankan dengan sukses:
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()
Saya juga bisa mendapatkan format OGR: ogrinfo --formats
mencetak banyak di Windows cmd (tanpa FileGDB di sana).
Saya dapat menjalankan kode ini dan dijalankan dengan sukses:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Namun, kode ini tidak akan berjalan:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Karena saya tidak memiliki pustaka terkompilasi Esri File GDB yang diperlukan.
Saya telah mengunduh dan membongkar FileGDB_API_VS2012_1_3.zip
dari halaman unduhan Esri . Seperti yang saya mengerti, tidak perlu mengkompilasi apapun karena file .dll sudah ada di sana.
Apa prosedur yang benar untuk mendaftarkan dll dari Esri File GDB API untuk dapat menggunakannya di fiona di lingkungan saya?
UPDATE: (berdasarkan jawaban Luke)
Saya telah mengunduh File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
dari halaman unduhan Esri . Saya menyalin FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
ke C:\Python34\Lib\site-packages\osgeo
. Sekarang saya punya dua file di sini, ogr_FileGDB.dll
dan FileGDBAPI.dll
.
Saya telah membuat variabel Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. Dalam PATH
variabel, saya tidak punya sesuatu yang spesifik kecuali Python C:\Python34\Lib\site-packages\osgeo
.
Sekarang ketika menjalankan ogrinfo --formats
I get -> "FileGDB" (read/write)
dan saya dapat menggunakan kode Python untuk bekerja dengan driver FileGDB.
[python install dir]\Lib\site-packages\osgeo
dir seperti yang saya tentukan dalam jawaban saya, bukan dir gdalplugins yang Anda sebutkan di edit. Hanya plugin driver yang masuk direktori itu, bukan dll pihak ke-3.Jawaban:
The Gohlke GDAL / OGR roda termasuk pengemudi FileGDB disusun sebagai plugin.
Untuk mengaktifkan driver FileGDB:
[python install/virtualenv dir]\Lib\site-packages\osgeo
(gunakan bin \ FileGDB.dll jika menggunakan python 32bit). Jangan menyalin FileGDB.dll ke direktori gdalplugins.[python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py
dan batalkan komentar pada baris 10.# uncomment the next line to enable plugins
os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')
Membuka GDB dengan driver FileGDB sekarang akan berfungsi.
catatan:
Menggunakan Python 2.7 Saya hanya bisa mendapatkan plugin FileGDB untuk bekerja dengan FileGDB API v1.3 (MSVC 2008). sebagai v.1.4 segfaults python. Saya berasumsi ini karena python dan pustaka GDAL dan Fiona yang disediakan oleh Gohlke dikompilasi dengan MSVC 2008 dan v. 1.4 dikompilasi dengan MSVC 2010 (dan kemudian).
FileGDB API v1.4 berfungsi dengan baik dengan Python 3.4 dan pustaka GDAL dan Fiona yang disediakan oleh Gohlke yang dikompilasi dengan MSVC 2010.
sumber
bin64\FileGDBAPI.dll
dari yangFileGDB_API_1_5_1-VS2010.zip
terdapat di github.com/Esri/file-geodatabase-api/tree/master/... atstep 1
untuk membuatnya berfungsi (dengan Python 3.5 64bit)geopandas
menggunakan baris perintah minicondaconda install geopandas
. Di__init__.py
baris 10 sudah dihapus, jadi saya tidak berpikir itu adalah garis yang Anda maksud. Juga tidak adagdalplugins
fileInformasi kuncinya ada di sini:
Ini memberitahu saya bahwa
GDAL_DRIVER_PATH
variabel lingkungan Anda tidak disetel. Lihat instruksi di https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver . Setelah "FileGDB" muncul diogrinfo --formats
(ataufio env --formats
), Anda akan siap untuk menggunakannya.sumber
Compile GDAL with the FGDB section commented
. Saya tidak memiliki sumber GDAL; Saya baru saja menginstalnya dari roda, jadi saya kira langkah-langkah itu tidak berlaku dalam kasus saya. Kemana saya harus pergi dari sini?GDAL_DRIVER_PATH
variabel kunci. Baca trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_DRIVER_PATH dan jika itu tidak membuat Anda berada di jalur yang benar, lihat utas di lists.osgeo.org/pipermail/gdal-dev/2014-May/039066.html .Menyalin file FileGDBAPI.dll ke folder C: \ Program Files \ QGIS 2.18 \ bin dan ogr_FileGDB.dll ke folder C: \ Program Files \ QGIS 2.18 \ bin \ gdalplugins melakukan trik untuk saya. Inilah dokumen yang menjelaskan penggunaannya .
sumber