ArcGIS Desktopで地形の堅牢性インデックスを計算しますか?


15

コマンドラインArcInfo Workstationにアクセスせずに、ArcGIS Desktopで地形の耐久性指数を計算する方法を知っている人はいますか?

「地形的耐久性指数(TRI)は、デジタル標高グリッドの隣接セル間の標高差の量を表すために、Riley、et al。(1999)によって開発された測定です。このプロセスは、基本的に中央セルからの標高値の差を計算します。そして、8つの標高差値のそれぞれを2乗してすべて正の値にし、平方を平均します。次に、この平均の平方根を取得することにより、地形的耐久性指数が導出され、平均標高変化に対応します。グリッド上の任意の点とその周囲の領域との間。」- ジェフリー・エヴァンスによるamlアークスクリプトから


ArcGIS arcscripts.esri.com/details.asp?dbid=12646のバージョンに依存します以前のフォーラムからの議論forums.esri.com/Thread.asp?c=93&f=982&t=145448未チェックですが、検索にはjennessent.com

回答:


18

ArcGISの外を見ることをお勧めします)無料の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ユーティリティは簡単に入手してインストールでき、クラス最高の製品として広く認められており、この特定の製品を生成するコマンドはシンプルさの定義です。
マットウィルキー

18

少し(ほんの少し)代数をしましょう。

xを中央の正方形の値とします。x_i、i = 1、..、8で、隣接する正方形の値にインデックスを付けます。rを地形の耐久性指数とします。このレシピでは、r ^ 2は(x_i-x)^ 2の合計に等しいと言います。簡単に計算できる2つのことは、(i)s = Sum {x_i} + xに等しい近傍の値の合計です。(ii)t = Sum {x_i ^ 2} + x ^ 2に等しい値の二乗和。(これらは元のグリッドとその正方形の焦点統計です。)

正方形を展開すると

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

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

= Sum {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以前)、コマンドライン(すべてのバージョン)、およびモデルビルダー(すべてのバージョン)で簡単に実行できます。

ところで、これは「平均標高変化」ではありません(標高の変化は正と負になる可能性があるためです)。これは二乗平均平方根の標高の変化です。それはしないで説明した「地形位置インデックス」に等しいhttp://arcscripts.esri.com/details.asp?dbid=14156(S - - X)/ 8×に等しい(マニュアルに従って)。上記の例では、TPIは5-(45-5)/ 8 = 0ですが、TRIはSqrt(60)です。


1
ビルありがとう。ツールまたは操作がどのように機能するかの詳細を確認していただき、ありがとうございます。このことから、適切な時間と知的エネルギーの投資があれば、手元にあるツールを使用してこの仕事を実行するための新しい装置を構築できます。このような情報が、GIS.seを長期的に有用なサービスにします。
マットウィルキー

1
+1すばらしい説明。これは、平坦ではあるが凹凸のある表面よりも、急で滑らかな表面の方が高いTRIを持つ可能性があることを意味すると思います。
カーククイケンダル

1
@Kirkそれは正しいです。必要に応じて、「相対的な」堅牢性のインデックスを取得するために、ローカルスロープの影響を除去する方法があります。私は詳細を働いていませんが、私は(C *)のいくつかの普遍的な複数を差し引くことを信じ^ 2 R2から- cはセルサイズで、立ち上がり/実行など、スロープ(ではない角度として、あるいはパーセント)-トリックを行う必要があります。
whuber

@whuberいつものように、答えには驚くほどの知識が含まれています!! 質問が1つだけあります。これは、ラスターの端にあるセルのTRIを計算できないという意味ですか?それらは周囲のセルに囲まれていないためですか?
マルコ

1
@marco TRIは境界セルでも推定できます。質問で示されているように、ここで与える値を9で割って、合計ではなく平均として表現する必要があります。境界セルでは、式と分母の値「9」を3X3近傍内の非ヌル値の数:エッジセルの場合は6、コーナーセルの場合は4。このような値のグリッドは、元の値のインジケーターグリッドの焦点和から取得できます(NoData以外のすべてのセルに1があり、他の場所に0があります)。数式の定数「9」の代わりにそのグリッドを使用します。
whuber

3

Riley et al。、(1999)TRIは、合計平方偏差の平方根です。これは、スケールなしの分散に非常に近いです。RileyのTRIの実装が必要な場合は、@ whuberで概説されている方法に従ってください(@ user3338736が提供する方法は、ウィンドウ内のメトリックを最大化し、セルのバリエーションごとのセルを表しません)。

Geomorphometry&Gradient Metrics ArcGIS Toolboxには、指定されたウィンドウの分散であるTRIのバリエーションがあります。これはより柔軟で正当なものだと思います。また、しわや解離など、その他の表面構成のメトリックもあります。


ありがとうジェフリー。何らかの理由で、Firefoxのタイトルを除いてそのページが空白であると、Chromeでは問題ないと考えました。私の拡張機能の1つかもしれません。少なくとも、スクリプトが10.2.2(とにかくテストしたもの)で変更されずに機能することを報告できてうれしいです。
マットウィルキー14年

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: Raster Calculatorを使用して、作成した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

これは、最近自分のプロジェクトの1つで使用したプロセスである地形位置インデックスによく似ています。ありますArcScript ESRIのサポートページで、地形ツールボックス ESRIリソースセンターページで、そして上のプロセスにいくつかの詳細情報Jenness企業ページが。


2
TPIは粗さとは非常に異なるメトリックです。それらを同じ意味で使用する道を進んで行かないでください。地形位置指数は、伝統的に[dem -focalmean(dem)]として計算されると信じています。
ジェフリーエヴァンス14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.