Đã có hàng tấn câu hỏi về điều đó nhưng không ai trong số họ giải quyết vấn đề của tôi.
Tôi có một máy với:
- Windows 7 x64
- Python 3,4.3 x64
- gdal cài đặt :
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal đã được cài đặt từ một bánh xeGDAL-1.11.4-cp34-none-win_amd64.whl
từ đây
GDAL được cài đặt vào C:\Python34\Lib\site-packages\osgeo
. Ở đó tôi có một loạt các tập tin .exe cho các tập tin gdal và ogr và .pyd.
- fiona đã cài đặt: được cài đặt từ một bánh xe
Fiona-1.6.3-cp34-none-win_amd64.whl
, từ cùng một trang web.
Tôi có thể chạy mã này và nó thực thi thành công:
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()
Tôi cũng có thể nhận được các định dạng OGR: ogrinfo --formats
in một loạt chúng trong cmd Windows (mặc dù không có FileGDB ở đó).
Tôi có thể chạy mã này và nó thực thi thành công:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Tuy nhiên, mã này sẽ không chạy:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Bởi vì tôi không có thư viện biên dịch Esri File GDB được yêu cầu.
Tôi đã tải xuống và giải nén FileGDB_API_VS2012_1_3.zip
từ trang tải xuống Esri . Theo tôi hiểu, không cần phải biên dịch bất cứ thứ gì vì đã có sẵn.
Quy trình chính xác để đăng ký dll API EsB File Esri để có thể sử dụng chúng trong fiona trong môi trường của tôi là gì?
CẬP NHẬT: (dựa trên câu trả lời của Luke)
Tôi đã tải xuống File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
từ trang tải xuống Esri . Tôi đã sao chép FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
vào C:\Python34\Lib\site-packages\osgeo
. Bây giờ tôi có hai tập tin ở đây, ogr_FileGDB.dll
và FileGDBAPI.dll
.
Tôi đã tạo một biến Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. Trong PATH
biến, tôi không có gì cụ thể về Python ngoại trừ C:\Python34\Lib\site-packages\osgeo
.
Bây giờ khi chạy, ogrinfo --formats
tôi nhận -> "FileGDB" (read/write)
và có thể sử dụng mã Python để làm việc với trình điều khiển FileGDB.
[python install dir]\Lib\site-packages\osgeo
thư mục như tôi đã chỉ định trong câu trả lời của tôi, không phải là thư mục gdalplugins mà bạn đề cập trong chỉnh sửa của mình. Chỉ các plugin trình điều khiển đi trong thư mục đó, không phải dlls của bên thứ 3.