>  기사  >  백엔드 개발  >  python gdal 튜토리얼: ogr을 사용하여 벡터 데이터 읽기 및 쓰기

python gdal 튜토리얼: ogr을 사용하여 벡터 데이터 읽기 및 쓰기

黄舟
黄舟원래의
2016-12-24 15:59:553559검색

오픈소스를 사용하는 이유는 무엇인가요?

장점

1. 무료, 개인 및 소규모 기업에 적합

2. 강력한 개발 도구, 더 쉬운 버그 찾기

3. , 윈도우, 리눅스 모두 사용 가능

4 멋지네요!

단점

1. 지오프로세서가 내장되어 있지 않습니다

2. 사용하는 사람이 적습니다

오픈소스 RS/GIS 모듈

1. OGR 벡터 라이브러리: 간단한 벡터 데이터 읽기 및 쓰기, GDAL

의 일부입니다. 2. GDAL 지리공간 데이터 추상화 라이브러리:

a) 래스터 데이터 읽기 및 쓰기

b) ArcGIS도 GDAL

c) C++ 라이브러리를 기반으로 개발되었지만 Python을 사용하여

관련 모듈

을 호출할 수 있습니다. 1. , 래스터 데이터의 경우 특히 중요합니다

2. NumPy: 차세대 Numeric

3. 더욱 강력한 gis 라이브러리 http://www.gispython.org/

라이브러리 가져오기:

import ogr

또는

from osgeo import ogr

일반적인 방법은 다음과 같습니다.

시도해 보세요.

from osgeo import ogr

제외:

import ogr

특정 유형의 데이터를 읽으려면 먼저 데이터 드라이버를 로드해야 합니다. 즉, 객체를 초기화하고 특정 데이터 구조를 "알게" 하십시오.

import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')

데이터 드라이버 드라이버의 open() 메소드는 데이터 소스 객체를 반환합니다

open(, )

여기서 업데이트는 읽기 전용의 경우 0이고 쓰기 가능한 경우 1입니다

예:

from osgeo import ogr

driver = ogr.GetDriverByName('ESRI Shapefile')

filename = 'C:/Users/gongwei/Documents/My eBooks/python_and_sage/GDAL python/test/ospy_data1/sites. shp'

dataSource = drivers.Open(filename,0)

dataSource가 None인 경우:

print 'could not open'

sys.exit (1 )

'done!' 인쇄

파일 이름은 절대 경로여야 합니다!

절대 경로를 사용해야 하기 때문에 코드를 단순화하기 위해 os.chdir()을 자주 사용합니다

데이터 레이어 읽기

layer = dataSource.GetLayer( 0)

일반적으로 ESRI 쉐이프파일은 0으로 채워져 있습니다. 채워지지 않은 경우 기본값은 0입니다.

이 데이터 레이어에 포인트가 몇 개 있는지 보세요.

n = layer.GetFeatureCount()

'기능 개수:', n 인쇄

상단, 하단, 왼쪽 및 오른쪽 경계 읽기

범위 = 레이어.GetExtent( )

'extent:', 범위 인쇄

'ul:', 범위[0], 범위[3]

인쇄 'lr :', Extent[1 ], Extent[2]

특정 요소 기능 읽기(마침내 요점에 도달), 여기서 읽은 내용은 포인트

feat = layer.GetFeature( 41)

fid = feat.GetField('id')

fid 인쇄

feat = layer.GetFeature(0)

fid = feat. GetField('id') #는 다른 ID여야 합니다

인쇄 ID

또한 기능을 순서대로 읽고 모든 기능을 반복할 수 있습니다

feat = 레이어. GetNextFeature() #다음 읽기

while feat:

feat = layer.GetNextFeature()

later.ResetReading() #Reset

지오메트리 추출 기능

geom = feat.GetGeometryRef()

geom.GetX()

geom.GetY()

기하학을 인쇄합니다.

메모리 해제

feature.Destroy()

데이터 소스를 닫습니다. 이는 파일 시스템 작업에서 파일을 닫는 것과 같습니다.

dataSource.Destroy()

읽고 얘기하자 작성 방법

새 파일 만들기

driver.CreateDataSource()

그러나 이 파일은 이미 존재할 수 없습니다. 그렇지 않으면 오류가 발생합니다

새 레이어 만들기

dataSource.CreateLayer(,CreateLayer(, geom_type=, [srs])

예:

ds2 = drivers.CreateDataSource('test.shp')

layer2 = ds2.CreateLayer('test', geom_type=ogr.wkbPoint)

shp 파일을 삭제하려면

driver.DeleteDataSource('test.shp')

새 필드를 추가하려면 레이어에만 추가할 수 있으며 데이터가 있을 수 없습니다.

추가된 필드가 문자열인 경우 너비도 설정하세요.

fieldDefn = ogr.FieldDefn('id', ogr.OFTString)

fieldDefn.SetWidth(4)

layer.CreateField(fieldDefn)

새 기능을 추가하려면 먼저 이전 단계를 완료하고 모든 필드를 추가해야 합니다.

그런 다음 레이어를 만들고 기능

featureDefn = layer.GetLayerDefn()

feature = ogr.Feature(featureDefn)

기하학 설정

feature.SetGeometry( point)

필드 값 설정

feature.SetField('id', 23)

레이어에 지형지물 쓰기

layer.CreateFeature (특집)

위 내용은 python gdal 튜토리얼입니다. ogr을 사용하여 벡터 데이터를 읽고 쓰는 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.