오픈소스를 사용하는 이유는 무엇인가요?
장점
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(
예:
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)를 참고하세요!