对此有很多问题,但没有一个解决了我的问题。
我有一台机器有:
- Windows 7 x64
- Python 3.4.3 x64
- @中安装:
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
。在那里,我有一堆用于gdal和ogr以及.pyd文件的.exe文件。
- 安装了fiona:是
Fiona-1.6.3-cp34-none-win_amd64.whl
从同一网站上的wheel安装的。
我能够运行以下代码,并且可以成功执行:
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已经存在,因此无需编译任何内容。
注册Esri File GDB API的dll以便能够在我的环境中的fiona中使用的正确程序是什么?
更新:(基于卢克的回答)
我已经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
变量中,除了,我没有任何Python特定的东西C:\Python34\Lib\site-packages\osgeo
。
现在,运行ogrinfo --formats
I时-> "FileGDB" (read/write)
,我可以使用Python代码与FileGDB驱动程序一起使用。
[python install dir]\Lib\site-packages\osgeo
我在答案中指定的目录,而不是您在编辑中提到的gdalplugins目录。只有驱动程序插件才会进入该目录,而不是第三方dll。