2009년 12월 7일 월요일

[ArcGIS]Raster Calculator 활용

ArcGIS Spatial Analyst Extension 도구 중 Raster Calculator를 사용하면 Spatial Analyst의 거의 모든 기능을 Command 기반(Raster Map Algebra)에서 활용할 수 있다.

Raster Calculator 도구는 기존 ArcInfo Workstation 제품의 GRID Extension에서 Command 형식으로 사용하던 분석 명령어를 활용하며 아래 URL을 따라가면 Raster Calculator에서 사용할 수 있는 function들을 확인할 수 있다.

▣ ESRI Technical Articles :  What GRID functions can be used in the Raster Calculator?

※ ArcObjects에서는 IRasterModel 인터페이스를 활용한다.

① GRID Con Function
Syntax : Con(<condition>, <true_expression>, {<condition>, <true_expression>}, ... {<condition>, <true_expression>}, {false_expression})

Ex)
Con([DEM] >= 0, [DEM], 0)
- DEM 레이어의 Value가 0보다 크거나 같으면 원래값, 아니면 0값 계산

Con([DEM] >= 0, [DEM])
- DEM 레이어의 Value가 0보다 크거나 같으면
원래값, 아니면 NoData 값 계산

Ex2)

Con([DEM] > 30, FocalSum([DEM]), 500)
- DEM 레이어의 Value가 30보다 크면 주변 3x3 셀의 합, 아니면 500값을 계산
- FocalSum Function의 기본 neighborhood = 3 x 3 rectangle

② 래스터 NoData 값을 다른 값으로 변경하고자 할 때
Syntax :  Con[IsNULL[<input_raster>], <costant>, <input_raster>]

Ex1) DEM 레이어의 NoData값을 0값으로 변경
 - Con[IsNULL[DEM], 0, [DEM]]

Ex2) DEM 레이어의 NoData값을 주변 4 * 4셀 반경의 FocalMean값으로 변경
 - Con(IsNull([DEM]), FocalMean([DEM], RECTANGLE, 4, 4), [DEM])

③ 배치작업이 필요할 때
시나리오 :
- DEM 레이어가 준비되어 있고 다음과 같은 지역을 추출하라
- DEM으로부터 SLOPE(경사도)를 추출한 후 표고가 150 이하이면서 경사도가 20도 이하인 지역을 추출하라.
- Raster Calculator 수식 입력창에 다음과 같이 일련의 식을 입력하면 된다. 주석은 제외할 것

[SLOPE] = SLOPE([DEM], DEGREE)      //DEM으로부터 도 단위의 경사도 생성
[DEM150] = CON([DEM] <= 150, 1, 0)     //DEM의 값이 150 이하이면 1, 아니면 0
[SLOPE20] = CON([SLOPE] <= 20, 1, 0) // 경사도가 20 이하이면 1, 아니면 0
[FINAL] = [DEM150] * [SLOPE20]         //2개의 교집합 = 곱하기로 해결가능

▣ GRID Function 도움말 보는 법은 수식 입력창에서 Function명에 커서를 위치시키고 Ctrl-G 또는 오른쪽 마우스 눌러 Usage 메뉴를 선택하면 된다.