태그 보관물: python

python

fiona에서 FileGDB (Esri 파일 gdb API) 드라이버에 대한 지원을 추가하는 방법은 무엇입니까? fiona with fiona.drivers():

그것에 대해 많은 질문이 있었지만 아무도 내 문제를 해결하지 못했습니다.

나는 다음과 같은 기계를 가지고있다 :

  • 윈도우 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 --formatsWindows 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.dllC:\Python34\Lib\site-packages\osgeoogr_FileGDB.dllFileGDBAPI.dll

Windows 변수를 만들었습니다 GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins. 에서 PATH변수 I는 제외하고 아무것도 파이썬 관련이 없습니다 C:\Python34\Lib\site-packages\osgeo.

실행중인 경우 지금 ogrinfo --formatsI get 및을 -> "FileGDB" (read/write)하고 FileGDB 드라이버 작업을위한 파이썬 코드를 사용할 수있게되었습니다.



답변

Gohlke GDAL / OGR 휠은 플러그인으로 컴파일 FileGDB의 드라이버가 포함되어 있습니다.

FileGDB 드라이버를 작동 시키려면 :

  1. Esri bin64 \ FileGDB.dll을 [python install/virtualenv dir]\Lib\site-packages\osgeo(32 비트 파이썬을 사용하는 경우 bin \ FileGDB.dll 사용)에 복사하십시오 . FileGDB.dll을 gdalplugins 디렉토리로 복사하지 마십시오.
  2. GDAL_DRIVER_PATH 환경 변수를 설정하십시오.
    • 수동; 또는
    • [python install/virtualenv dir]\Lib\site-packages\osgeo\__init__.py10 행 편집 및 주석 해제.
      # 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 폴더에 복사하면 나에게 속임수가 있습니다. 다음은 사용법을 설명하는 문서입니다 .


답변