그것에 대해 많은 질문이 있었지만 아무도 내 문제를 해결하지 못했습니다.
나는 다음과 같은 기계를 가지고있다 :
- 윈도우 7 x64
- 파이썬 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 installed :
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 컴파일 라이브러리가 없기 때문에.
Esri 다운로드 페이지FileGDB_API_VS2012_1_3.zip
에서 다운로드하여 압축 을 풀었습니다 . 내가 이해했듯이 .dll이 이미 있으므로 아무것도 컴파일 할 필요가 없습니다.
내 환경에서 fiona에서 사용할 수 있도록 Esri File GDB API의 dll을 등록하는 올바른 절차는 무엇입니까?
업데이트 : (누가의 답변에 따라)
Esri 다운로드 페이지File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
에서를 다운로드했습니다 . 나는 복사 받는 . 지금은 여기에 두 개의 파일을 가지고 와 .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
변수 I는 제외하고 아무것도 파이썬 관련이 없습니다 C:\Python34\Lib\site-packages\osgeo
.
실행중인 경우 지금 ogrinfo --formats
I get 및을 -> "FileGDB" (read/write)
하고 FileGDB 드라이버 작업을위한 파이썬 코드를 사용할 수있게되었습니다.
답변
Gohlke GDAL / OGR 휠은 플러그인으로 컴파일 FileGDB의 드라이버가 포함되어 있습니다.
FileGDB 드라이버를 작동 시키려면 :
- Esri bin64 \ FileGDB.dll을
[python install/virtualenv dir]\Lib\site-packages\osgeo
(32 비트 파이썬을 사용하는 경우 bin \ FileGDB.dll 사용)에 복사하십시오 . FileGDB.dll을 gdalplugins 디렉토리로 복사하지 마십시오. - GDAL_DRIVER_PATH 환경 변수를 설정하십시오.
- 수동; 또는
[python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py
10 행 편집 및 주석 해제.
# uncomment the next line to enable plugins
os.environ['GDAL_DRIVER_PATH'] = os.path.join(os.path.dirname(__file__), 'gdalplugins')
FileGDB 드라이버로 GDB를 열면 작동합니다.
>>> import fiona
>>> with fiona.drivers():
... with fiona.open(path=r'C:\Temp\Default.gdb', driver='FileGDB') as source:
... print(source.meta)
...
{'crs': {'init': u'epsg:4326'}, 'driver': 'FileGDB', 'crs_wkt': u'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01
74532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]', 'schema': {'geometry': 'MultiPolygon', 'properties': OrderedDict([(u'SHAPE_Length', 'float'), (u'SHAPE_Area', 'float')])}}
>>>
노트 :
Python 2.7을 사용하면 FileGDB 플러그인을 FileGDB API v1.3 (MSVC 2008)에서만 사용할 수 있습니다. v.1.4 segfaults 파이썬으로. Gohlke가 제공하는 python과 GDAL 및 Fiona 라이브러리는 MSVC 2008로 컴파일되고 v. 1.4는 MSVC 2010 이상으로 컴파일되기 때문입니다.
FileGDB API v1.4는 Python 3.4 및 Gohlke에서 제공하는 GDAL 및 Fiona 라이브러리 (MSVC 2010으로 컴파일 됨)에서 잘 작동합니다.
답변
주요 정보는 다음과 같습니다.
또한 OGR 형식을 얻을 수 있습니다. ogrinfo –formats는 Windows cmd에서 파일 형식을 인쇄합니다 (FileGDB는 없음).
이것은 GDAL_DRIVER_PATH
환경 변수가 설정되어 있지 않다는 것을 알려줍니다 . https://trac.osgeo.org/gdal/wiki/FileGDB#Testingthedriver 의 지침을 참조하십시오 . “FileGDB”가 ogrinfo --formats
(또는 fio env --formats
)에 표시되면 계속 진행하십시오.
답변
FileGDBAPI.dll 파일을 C : \ Program Files \ QGIS 2.18 \ bin 폴더에 복사 하고 ogr_FileGDB.dll 을 C : \ Program Files \ QGIS 2.18 \ bin \ gdalplugins 폴더에 복사하면 나에게 속임수가 있습니다. 다음은 사용법을 설명하는 문서입니다 .