มีคำถามมากมายเกี่ยวกับเรื่องนั้น แต่ไม่มีใครแก้ปัญหาของฉันได้
ฉันมีเครื่องด้วย:
- 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
แล้ว ในตัวแปรผมไม่ได้มีอะไรที่เฉพาะเจาะจงหลามยกเว้นPATH
C:\Python34\Lib\site-packages\osgeo
ตอนนี้เมื่อใช้งานogrinfo --formats
ฉันจะได้รับ-> "FileGDB" (read/write)
และสามารถใช้รหัส Python สำหรับทำงานกับไดรเวอร์ FileGDB
[python install dir]\Lib\site-packages\osgeo
dir ตามที่ฉันระบุไว้ในคำตอบไม่ใช่ gdalplugins ที่คุณพูดถึงในการแก้ไขของคุณ เฉพาะปลั๊กอินไดรเวอร์เท่านั้นที่อยู่ในไดเรกทอรีนั้นไม่ใช่ของบุคคลที่สาม