Python 및 GDAL을 사용하여 파일 지오 데이터베이스의 기능 클래스에 액세스하는 방법은 무엇입니까?


21

Python + GDAL을 사용하여 ESRI 파일 지오 데이터베이스의 벡터 데이터 세트에 액세스하려고합니다. geodatabase API 파일을 사용하여 GDAL을 성공적으로 컴파일했습니다. 입력 한 후 FileGDB 드라이버가 올바르게 작동합니다

ogrinfo --formats

FileGDB 드라이버를 보여주고 입력

ogrinfo myfilegdb.gdb 

데이터베이스의 내용에 대한 올바른 정보를 제공합니다.

그러나 파이썬에서 콘텐츠 자체에 액세스하는 방법을 찾을 수 없습니다. shapefile에 액세스하려면 다음과 같이 작성하십시오.

driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)

FileGDB 기능 클래스에 액세스 할 때 다음 명령을 사용한다고 가정합니다.

driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)

그러나 데이터 세트를 식별 / 찾을 수 없으므로 작동하지 않는 것 같습니다. 누구든지 ESRI FileGDB에서 개별 기능 클래스를 호출하는 방법을 알고 있습니다.

우분투 12.04 x64에서 Python 2.7, GDAL 1.9.1, filegdb api 1.2를 사용하고 있습니다. 제안 해 주셔서 감사합니다!


FileGDB 드라이버 용 OGR을 설치하는 방법을 알려주시겠습니까?
giser

답변:


18

거의 다 왔습니다. 이것은 Windows 7, Python 2.6.5 32bit 및 GDAL 1.9.0에 있습니다.

>>> from osgeo import ogr
>>> driver = ogr.GetDriverByName("FileGDB")
>>> ds = driver.Open(r"C:\temp\buildings.gdb", 0)
>>> ds
<osgeo.ogr.DataSource; proxy of <Swig Object of type 'OGRDataSourceShadow *' at 0x02BB7038> >
>>> ds.GetLayer("buildings")
<osgeo.ogr.Layer; proxy of <Swig Object of type 'OGRLayerShadow *' at 0x02BB7050> >
>>> b = ds.GetLayer("buildings")
>>> sr = b.GetSpatialRef()
>>> sr
<osgeo.osr.SpatialReference; proxy of <Swig Object of type 'OSRSpatialReferenceShadow *' at 0x02BB7080> >
>>> sr.ExportToProj4()
'+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '
>>>

FGDB를 열면 기능 클래스에 액세스하는 GetLayer데 사용 하십시오.


당신이 그것을 알게되면 너무 논리적 인 것 같습니다 :-) 감사합니다. 솔루션이 트릭을 수행합니다.
Niels


3

fiona와 geopandas를 사용하면 훨씬 간단하고 직관적입니다.

import fiona 
import geopandas as gpd

# Get all the layers from the .gdb file 
layers = fiona.listlayers(gdb_file)

for layer in layers:
    gdf = gpd.read_file(gdb_file,layer=layer)
    # Do stuff with the gdf

참고 : fiona는 gdal을 사용하고 geopandas는 fiona를 사용합니다

참조 파이썬에서 지오 데이터베이스 파일 레이어의 이름을 읽기


전제 조건 : pip install "GDAL-3.0.2-cp36-cp36m-win_amd64.whl"# 여기를 참조 하십시오 lfd.uci.edu/~gohlke/pythonlibs , pip install wheels, pip install pipwin, pipwin install numpy, pipwin install pandas , pipwin install shapely, pipwin install gdal, pipwin install fiona, pipwin install pyproj, pipwin install six, pipwin install rtree, pipwin install geopandas, python이 환경 경로에 있는지 확인하십시오 .GDAL CPx.y에서 Python의 버전을 보여줍니다 32 비트 시스템 사용 32 비트, 쉼표는 새로운 라인을 의미합니다
mohsen hs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.