ArcGIS Desktop에서 지형 강도 지수를 계산합니까?


15

누구든지 명령 행 ArcInfo Workstation에 액세스하지 않고 ArcGIS Desktop에서 Topographic Ruggedness Index 를 계산하는 방법을 알고 있습니까?

"TRIP (topographic ruggedness index)는 Riley 등 (1999)이 디지털 표고 그리드의 인접 셀 사이의 표고 차이를 표현하기 위해 개발 한 측정입니다.이 프로세스는 기본적으로 중앙 셀로부터 표고 값의 차이를 계산합니다. 그런 다음 8 개의 셀을 즉시 둘러싸고 있습니다. 각 8 개의 고도 차이 값을 제곱하여 모두 양수로 만들고 평균을 제곱합니다. 토포 견고성 지수는이 평균의 제곱근을 취하여 도출되며 평균 고도 변화에 해당합니다. 그리드의 어느 지점과 그 주변 영역 사이에 있습니다. " -Jeffrey Evansaml arcscript 에서


ArcGIS arcscripts.esri.com/details.asp?dbid=12646 의 버전에 따라 다릅니다. 포럼 이전 토론 포럼 forums.esri.com/Thread.asp?c=93&f=982&t=145448 선택하지 않았지만 검색에는 jennessent.com

답변:


18

무료 gdal 소프트웨어를 사용하는 것이 매우 쉽습니다 : http://www.gdal.org/gdaldem.html

gdaldem TRI input_dem output_TRI_map

또는 saga gis에서 선호하는 경우 : http://www.saga-gis.org/saga_modules_doc/ta_morphometry/ta_morphometry_16.html


11
+1 ArcGIS 문제에 대한 비 ArcGIS 솔루션을 보는 것은 언제나 감사합니다 :-). 이것은 특히 ArcGIS에 대한 적대감이 아니라 원칙의 문제입니다. 하나의 소프트웨어 솔루션에 갇히지 않아야합니다. 전문적으로 위험 할뿐만 아니라 지적 낭비입니다.
whuber

나는 arcgis 특정 솔루션을 요청했지만 알고 있기 때문에 직접 받아들입니다. GDAL 유틸리티는 쉽게 구할 수 있고 설치가 가능하며 동급 최고로 인정 받고 있으며,이 특정 제품을 생성하는 명령은 단순성의 정의입니다.
matt wilkie

18

약간의 대수를하자.

x를 중앙 제곱의 값이라고합시다. x_i, i = 1, .., 8이 인접 제곱의 값을 인덱싱하도록합니다. r을 지형 견고성 지수라고합시다. 이 레시피는 r ^ 2가 (x_i-x) ^ 2의 합과 같다고 말합니다. 우리가 쉽게 계산할 수있는 두 가지 것은 (i) 이웃에있는 값의 합으로 s = Sum {x_i} + x; 및 (ii) t = Sum {x_i ^ 2} + x ^ 2와 같은 값의 제곱의 합. (이것은 원래 그리드와 사각형에 대한 초점 통계입니다.)

사각형을 확장하면

r ^ 2 = 합 {(x_i-x) ^ 2}

= 합 {x_i ^ 2 + x ^ 2-2 * x * x_i}

= 합 {x_i ^ 2} + 8 * x ^ 2-2 * x * Sum {x_i}

= [Sum {x_i ^ 2} + x ^ 2] + 7 * x ^ 2-2 * x * [Sum {x_i} + x-x]

= t + 7 * x ^ 2-2 * x * [Sum {x_i} + x] + 2 * x ^ 2

= t + 9 * x ^ 2-2 * x * s 입니다.

예를 들어, 이웃을 고려하십시오

1 2 3
4 5 6
7 8 9

여기서 x = 5, s = 1 + 2 + ... + 9 = 45, t = 1 + 4 + 9 + ... + 81 = 285입니다.

(1-5) ^ 2 + (2-5) ^ 2 + ... + (9-5) ^ 2 = 16 + 9 + 4 + 1 + 1 + 4 + 9 + 16 = 60 = r ^ 2

대수적 동등성은

60 = r ^ 2 = 285 + 9 * 5 ^ 2 -2 * 5 * 45 = 285 + 225-450 = 60, 확인합니다.

따라서 워크 플로우 는 다음과 같습니다.

DEM이 주어졌습니다.

  • 계산 s = [DEM]의 초점 합계 (3 x 3 평방 이상).

  • 계산 DEM2 = [DEM] * [DEM].

  • 계산 t = [DEM2]의 초점 합계 (3 x 3 평방 이상).

  • 계산 r2 = [t] + 9 * [DEM2]-2 * [DEM] * [s].

r = Sqrt ([r2])를 반환합니다 .

이것은 toto 의 9 개의 그리드 작업 으로 구성되며 모두 빠릅니다. 래스터 계산기 (ArcGIS 9.3 이하), 명령 줄 (모든 버전) 및 모델 빌더 (모든 버전)에서 쉽게 수행됩니다.

BTW, 이것은 "평균 고도 변화"가 아닙니다 (고도 변화가 양수와 음수 일 수 있기 때문에) : 그것은 평균 제곱 고도 변화입니다. 이되어 있지 에 기재된 "토포 위치 인덱스"동일 http://arcscripts.esri.com/details.asp?dbid=14156 (S - - X) / X 8과 동일 (설명서를 따름). 위의 예에서 TPI는 5-(45-5) / 8 = 0 인 반면 TRI는 Sqrt (60)입니다.


1
빌 고마워 도구 또는 작업의 작동 방식에 대한 구체적인 내용을 볼 수 있습니다. 이를 통해 적절한 시간과 지적 에너지를 투자 한 사람은 자신이 보유한 도구를 사용하여이 작업을 수행 할 수있는 새로운 장치를 구축 할 수 있습니다. 이와 같은 정보는 GIS.se를 장기적으로 유용한 서비스로 만들 것입니다.
matt wilkie

1
+1 대단한 설명. 이것은 가파르지만 매끄러운 표면이 평평하지만 울퉁불퉁 한 표면보다 높은 TRI를 가질 수 있음을 의미한다고 생각합니다.
Kirk Kuykendall

1
@Kirk 맞습니다. 원하는 경우 "상대적"강도 지수를 얻기 위해 로컬 경사의 영향을 제거하는 방법이 있습니다. 세부 사항을 해결하지는 못했지만 r2- 에서 (c * a) ^ 2의 범용 배수를 빼면 c 는 셀화되고 a 는 기울기입니다 ( 각도 또는 상승이 아닌 상승 / 달리기) 트릭을 수행해야합니다.
whuber

@ whuber는 항상 답변에 놀라운 지식이 포함되어 있습니다! 단 한 가지 질문 만하십시오. 이것은 래스터의 가장 자리에있는 셀의 TRI를 계산할 수 없다는 것을 의미합니까? 주변의 세포들로 둘러싸여 있지 않기 때문에?
marco

1
@marco 경계 셀에서도 TRI를 추정 할 수 있습니다. 질문에 표시된 것처럼 여기에 주어진 값을 9로 나누어 합계가 아닌 평균으로 표현해야합니다. 경계 셀에서 수식 및 분모의 값 "9"는 3X3 근처에있는 null이 아닌 값의 수 : 모서리 셀의 경우 6, 모서리 셀의 경우 4 이러한 값의 그리드는 원래 값의 표시기 그리드의 초점 합계에서 얻을 수 있습니다 (모든 비 NoData 셀에는 1, 다른 곳에는 0이 있음). 수식에서 상수 "9"대신 해당 그리드를 사용하십시오.
whuber

3

Riley et al. (1999) TRI는 합한 제곱 편차의 제곱근입니다. 이것은 스케일되지 않은 분산에 매우 가깝습니다. Riley 's TRI를 구현하려면 @whuber가 설명한 방법론을 따르십시오 (@ user3338736에서 제공 한 방법론은 창에서 메트릭을 최대 값으로 일반화하고 셀 변형으로 셀을 나타내지 않음).

Geomorphometry & Gradient Metrics ArcGIS Toolbox 에서 지정된 창의 분산 인 TRI의 변형이 있습니다. 나는 이것이 더 유연하고 정당하다고 생각한다. 또한 거칠기와 해부를 포함한 다른 표면 구성 메트릭이 있습니다.


제프리 감사합니다. Firefox의 제목을 제외하고 페이지가 비어있는 이유는 Chrome에서는 괜찮다고 생각했습니다. 내 확장 중 하나 일 수 있습니다. 적어도 스크립트가 10.2.2 (어쨌든 테스트 한 것)에서 변경되지 않은 것으로 작동한다는 것을 기쁘게 생각합니다.
matt wilkie

1

-편집 : 아래 정보가 잘못되었습니다. 올바른 프로세스를 설명하는 whuber의 게시물을 참조하십시오 .....

TRI (Riley 1999)와 TPI (Jenness 2002)는 비슷하지만 다릅니다.

ArcGIS 10.x를 사용하여 TRI 및 TPI를 계산하려면 ...

1 단계 : Focal Statistics 도구를 사용하여 DEM에서 2 개의 새로운 래스터 데이터 세트를 만듭니다.

래스터 1 "MAX") 이웃 : 사각형, 높이 : 3, 너비 : 3, 단위 : 셀, 통계 유형 : 최대

래스터 2 "MIN") 이웃 : 사각형, 높이 : 3, 너비 : 3, 단위 : 셀, 통계 유형 : 최소

2 단계 : 래스터 계산기를 사용하여 방금 생성 한 2 개의 래스터 데이터 세트에서 다음 기능을 수행합니다.

TRI의 경우 : SquareRoot (Abs ((Square ( "% MAX %")-Square ( "% MIN %"))))

TPI의 경우 : ( "% Input DEM %"- "% MIN %") / ( "% MAX %"- "% MIN %")

다음은 TRI 용으로 빌드 한 모델에서 내 보낸 샘플 Python 코드입니다 ....

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# script.py
# Created on: 2014-03-06 08:56:13.00000
#   (generated by ArcGIS/ModelBuilder)
# Usage: script <Input_raster> <TRI_Raster> 
# Description: 
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy

# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")

# Script arguments
Input_raster = arcpy.GetParameterAsText(0)

TRI_Raster = arcpy.GetParameterAsText(1)
if TRI_Raster == '#' or not TRI_Raster:
    TRI_Raster = "C:\\Users\\Documents\\ArcGIS\\Default.gdb\\rastercalc1" # provide a default value if unspecified

# Local variables:
MIN = Input_raster
MAX = Input_raster

# Process: 3x3Max
arcpy.gp.FocalStatistics_sa(Input_raster, MAX, "Rectangle 3 3 CELL", "MAXIMUM", "DATA")

# Process: 3x3Min
arcpy.gp.FocalStatistics_sa(Input_raster, MIN, "Rectangle 3 3 CELL", "MINIMUM", "DATA")

# Process: Raster Calculator
arcpy.gp.RasterCalculator_sa("SquareRoot(Abs((Square(\"%MAX%\") - Square(\"%MIN%\"))))", TRI_Raster)

이것은 질문에 설명 된 TRI가 아닙니다. 실제로 "거칠기"를 측정하는 것으로 생각할 수는 없습니다. 수직 데이텀 만 이동하면 변경되기 때문입니다. 예를 들어 값이 (1,2, ..., 9) 인 3x3 이웃의 TRI는 sqrt (9 ^ 2-1 ^ 2) = 8.9가되지만 값에 100을 더하면 값이없는 데이텀 만 변경됩니다. 표면의 모양을 전혀 바꾸지 않으면 sqrt (109 ^ 2-101 ^ 2) = 41이됩니다.
whuber

0

이것은 최근에 프로젝트 중 하나에 사용한 프로세스 인 Topographic Position Index와 매우 흡사합니다. ESRI 지원 페이지 에는 ArcScript 가 있고 ESRI 리소스 센터 페이지 에는 지형 도구 상자 가 있으며 Jenness Enterprises 페이지 에는 프로세스에 대한 자세한 정보가 있습니다.


2
TPI는 거칠기와 매우 다른 메트릭입니다. 그것들을 서로 바꿔서 사용하는 길을 가지 마십시오. Topographic Position Index는 전통적으로 [dem-focalmean (dem)]으로 계산됩니다.
제프리 에반스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.