มีคำถามมากมายเกี่ยวกับเรื่องนั้น แต่ไม่มีใครแก้ปัญหาของฉันได้
ฉันมีเครื่องด้วย:
- Windows 7 x64
- Python 3.4.3 x 64
- GDAL ติดตั้ง
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25; gdal ถูกติดตั้งจากล้อGDAL-1.11.4-cp34-none-win_amd64.whlจากที่นี่
ติดตั้ง GDAL ไว้C:\Python34\Lib\site-packages\osgeoแล้ว ที่นั่นฉันมีไฟล์. exe หลายไฟล์สำหรับไฟล์ gdal และ ogr และ. pyd
- ฟิโอน่าติดตั้ง: ถูกติดตั้งจากล้อ
Fiona-1.6.3-cp34-none-win_amd64.whlจากเว็บไซต์เดียวกัน
ฉันสามารถเรียกใช้รหัสนี้และทำงานได้สำเร็จ:
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()
ฉันยังสามารถรับรูปแบบ OGR ได้ด้วย: ogrinfo --formatsพิมพ์พวงของพวกเขาใน Windows cmd (โดยไม่มี FileGDB อยู่ที่นั่น)
ฉันสามารถเรียกใช้รหัสนี้และทำงานได้สำเร็จ:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
อย่างไรก็ตามรหัสนี้จะไม่ทำงาน:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
เพราะฉันไม่มี Esri File GDB ซึ่งรวบรวมไลบรารีที่จำเป็น
ผมได้ดาวน์โหลดและแตกFileGDB_API_VS2012_1_3.zipจากEsri หน้าดาวน์โหลด ดังที่ฉันเข้าใจแล้วไม่จำเป็นต้องรวบรวมสิ่งใด ๆ เนื่องจาก. dll มีอยู่แล้ว
ขั้นตอนที่ถูกต้องในการลงทะเบียน dll ของ Esri File GDB API เพื่อให้สามารถใช้งานได้ใน fiona ในสภาพแวดล้อมของฉันคืออะไร?
UPDATE: (ขึ้นอยู่กับคำตอบของลุค)
ผมได้ดาวน์โหลดFile Geodatabase API 1.4 version for Windows (Visual Studio 2010)จากหน้า Esri ดาวน์โหลด ผมคัดลอกไปFileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll C:\Python34\Lib\site-packages\osgeoตอนนี้ฉันมีสองไฟล์อยู่ที่นี่ogr_FileGDB.dllและFileGDBAPI.dll.
ฉันสร้างตัวแปร Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalpluginsแล้ว ในตัวแปรผมไม่ได้มีอะไรที่เฉพาะเจาะจงหลามยกเว้นPATHC:\Python34\Lib\site-packages\osgeo
ตอนนี้เมื่อใช้งานogrinfo --formatsฉันจะได้รับ-> "FileGDB" (read/write)และสามารถใช้รหัส Python สำหรับทำงานกับไดรเวอร์ FileGDB
[python install dir]\Lib\site-packages\osgeodir ตามที่ฉันระบุไว้ในคำตอบไม่ใช่ gdalplugins ที่คุณพูดถึงในการแก้ไขของคุณ เฉพาะปลั๊กอินไดรเวอร์เท่านั้นที่อยู่ในไดเรกทอรีนั้นไม่ใช่ของบุคคลที่สาม