> 백엔드 개발 > 파이썬 튜토리얼 > python gdal 튜토리얼: 필터, 간단한 공간 분석, 함수 및 모듈

python gdal 튜토리얼: 필터, 간단한 공간 분석, 함수 및 모듈

黄舟
풀어 주다: 2016-12-24 17:05:28
원래의
2602명이 탐색했습니다.

Layer 객체에는 특정 조건을 충족하는 레이어의 지형지물을 필터링할 수 있는 SetAttributeFilter()라는 메서드가 있습니다. Filter를 설정한 후 GetNextFeature() 메서드를 사용하여 조건에 맞는 피처를 순차적으로 검색할 수 있습니다. SetAttributeFilter(None)는 필터를 지울 수 있습니다. 예를 들어

>>> layer.GetFeatureCount()

42

>>> layer.SetAttributeFilter("cover = 'shrubs'")

>>> layer.GetFeatureCount()

6

>>> layer.SetAttributeFilter(None)

> > ;> layer.GetFeatureCount()

42

공간 필터 공간 필터에는 두 가지 유형이 있습니다

. 하나는 특정 유형의 지형지물을 필터링하는 SetSpatialFilter()입니다. 예를 들어 매개변수에 Polygon을 채우면 레이어의 모든 Polygon

이 선택됩니다. < miny>, , ), 4개의 좌표를 매개변수로 입력하고 상자에서 Feature

SetSpatialFilter(None)를 선택하여 공간 속성 필터를 지울 수 있습니다.

예를 들어 다음 코드에서 layerAreas는 폴리곤이고 layerSites는 포인트입니다

>>> featAreas = layerAreas.GetNextFeature()

>> > 폴리 = featAreas.GetGeometryRef()

>>> layerSites.GetFeatureCount()

42

>>> )

>>> layerSites.GetFeatureCount()

4

>>> ; (없음)

>>> layerSites.GetFeatureCount()

42

SQL 쿼리 문 실행과 같은 더 복잡한 필터도 있습니다( ), SQL의 강력한 기능을 사용하면 더 복잡한 작업을 수행할 수 있습니다. 예를 들어 다음 코드는 표지 유형이 잔디인 지형지물을 선택하고 ID 번호별로 내림차순으로 정렬합니다.

result = dsSites.ExecuteSQL("select * from sites where Cover = 'grass' order by id desc")

resultFeat = result.GetNextFeature()

while resultFeat :

print resultFeat.GetField('id')print resultFeat.GetField('id')

resultFeat = result.GetNextFeature()

dsSites.ReleaseResultSet(result)

42

40

:

4

마지막 문장 ReleaseResultSet()은 쿼리 결과를 공개하는 것입니다. . 다음 SQL 문을 실행하기 전에 해제해야 합니다.

다음 예에서는 표지가 잔디인 모든 지형지물의 수를 계산합니다

>>> result = dsSites.ExecuteSQL("select count(*) from sites where Cover = ' grass '")

>>> result.GetFeatureCount()

11

>>> result.GetFeature(0).GetField(0 )

11

>>> dsSites.ReleaseResultSet(result)

다른 표지 유형 모두 나열

결과 = ds.ExecuteSQL("select 사이트와 다른 표지")

resultFeat = result.GetNextFeature()

while resultFeat:

print resultFeat.GetField(0)

resultFeat = result .GetNextFeature()

ds.ReleaseResultSet(result)

관목

나무

바위

bare

각 표지 유형에 대해 몇 개의 기능이 있는지 계산

coverLayer = ds.ExecuteSQL('사이트에서 개별 표지 선택')

CoverFeat = CoverLayer.GetNextFeature()

while CoverFeat:

cntLayer = ds.ExecuteSQL("cover = ' " + CoverFeat.GetField(0 ) + "인 사이트에서 count(*) 선택 ' ")

print CoverFeat.GetField(0) + ' ' +print CoverFeat.GetField(0) + ' ' + cntLayer.GetFeature(0).GetFieldAsString(0)

Ds. releaseResultSet(cntlayer)

Coverfeat = Coverlayer.GetNextfeature()

Ds.releaseResultSet(Coverlayer) Rees 11

바위 6

잔디 11

베어 6

물 2

Intersect는 두 요소가 교차하는지 여부를 결정합니다

1을 반환하면 분리됨을 의미하고, 0을 반환하면 교차를 의미하며 Intersect와 정반대입니다

터치는 인접(가장자리)을 의미

poly2.Touches(poly1)


0을 반환하면 아니요를 의미 가장자리, 반환 1은 가장자리 문지름을 의미

십자가 교차, 일반적으로 선이 다각형을 통과함

poly2.Crosses(line)

0을 반환하면 통과하지 않음을 의미하고 1을 반환 통과한다는 의미

내부에서 한 요소가 다른 요소로 완전히 둘러싸여 있습니다

ptB.Within(poly1)

0을 반환하면 점이 다각형 외부에 있고 1은

Contains contain, 이는 Within의 반대입니다.

poly1.Contains(ptB)

는 기본 요소를 결합하는 것입니다. 개체 및 매개변수를 호출합니다.

겹침, 두 개의 다각형만 겹칠 수 있는 것 같습니다

poly2.Overlaps(poly3)

0을 반환하면 겹치지 않음을 의미하고 1을 반환합니다. 겹침을 의미

간단한 지리적 데이터 처리 지오프로세싱을 살펴보겠습니다

다각형:

교차점: 폴리3.교점(poly2)

합집합: 폴리3. 합집합(poly2 )

차이: 폴리3.Difference(poly2)

보조: 폴리3.SymmetricDifference(poly2)

기하학:

.Buffer () 도형에 버퍼를 추가한다는 것은 점선을 다각형으로 바꾸고 더 두껍게 만드는 것을 의미합니다.

.Equal() 두 도형이 동일합니까?

.Distance() 두 도형 사이의 최단 거리를 반환합니다.

.GetEnvelope() Envelope는 흥미롭습니다. 실제로 이 기하학을 프레임하는 메소드를 사용합니다. 네 모서리의 좌표를 형성하고 반환합니다(minx, maxx, miny, maxy)

Python의 함수 함수, 예외 예외 및 모듈 모듈은 모든 Python 교과서에서 찾을 수 있으므로 여기서는 더 이상 언급하지 않습니다. 자세히

위는 Python gdal 튜토리얼입니다. 필터, 간단한 공간 분석, 함수 및 모듈에 대한 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿