Calcolo dell'indice di resistenza topografica in ArcGIS Desktop?


15

Qualcuno sa come calcolare l' indice di robustezza topografica in ArcGIS Desktop senza accesso alla riga di comando ArcInfo Workstation?

"L'indice di robustezza topografica (TRI) è una misura sviluppata da Riley, et al. (1999) per esprimere la quantità di differenza di elevazione tra celle adiacenti di una griglia di elevazione digitale. Il processo essenzialmente calcola la differenza di valori di elevazione da una cella centrale e le otto celle che la circondano immediatamente. Quindi piazza ciascuno degli otto valori della differenza di elevazione per renderli tutti positivi e fa una media dei quadrati. L'indice di robustezza topografica viene quindi derivato prendendo la radice quadrata di questa media e corrisponde al cambiamento di elevazione medio tra qualsiasi punto di una griglia e l'area circostante ". - da un manoscritto aml di Jeffrey Evans


dipende dalla versione di ArcGIS arcscripts.esri.com/details.asp?dbid=12646 alcune discussioni dai forum precedenti forums.esri.com/Thread.asp?c=93&f=982&t=145448 deselezionate ma la ricerca conteneva il termine jennessent.com /arcgis/surface_area.htm

Risposte:


18

Consiglierei di guardare fuori da ArcGIS) Molto facile usando il software gratuito gdal: http://www.gdal.org/gdaldem.html

gdaldem TRI input_dem output_TRI_map

O se lo preferisci in saga gis: http://www.saga-gis.org/saga_modules_doc/ta_morphometry/ta_morphometry_16.html


11
+1 Apprezzo sempre vedere soluzioni non ArcGIS ai problemi di ArcGIS :-). Si tratta di una questione di principio, non dell'antagonismo nei confronti di ArcGIS in particolare. Bisogna evitare di essere bloccati in un'unica soluzione software: non solo è professionalmente rischioso, ma è intellettualmente soffocante.
whuber

So di aver chiesto una soluzione specifica per arcgis, ma sto accettando questa per la sua immediatezza. Le utility GDAL sono facili da acquisire e installare, universalmente riconosciute come le migliori della categoria, e il comando per generare questo particolare prodotto è la definizione di semplicità.
Matt Wilkie,

18

Facciamo un po '(solo un po') di algebra.

Sia x il valore nel quadrato centrale; lascia che x_i, i = 1, .., 8 indicizzi i valori nei quadrati vicini; e sia r l'indice di robustezza topografica. Questa ricetta dice che r ^ 2 è uguale alla somma di (x_i - x) ^ 2. Due cose che possiamo calcolare facilmente sono (i) la somma dei valori nel vicinato, uguale a s = Sum {x_i} + x; e (ii) la somma dei quadrati dei valori, uguale a t = Somma {x_i ^ 2} + x ^ 2. (Queste sono statistiche focali per la griglia originale e per il suo quadrato.)

L'espansione dei quadrati dà

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

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

= Somma {x_i ^ 2} + 8 * x ^ 2 - 2 * x * Somma {x_i}

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

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

= t + 9 * x ^ 2 - 2 * x * s .

Ad esempio, considera un quartiere

1 2 3
4 5 6
7 8 9

Qui, x = 5, s = 1 + 2 + ... + 9 = 45 e t = 1 + 4 + 9 + ... + 81 = 285. Quindi

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

e dice l'equivalenza algebrica

60 = r ^ 2 = 285 + 9 * 5 ^ 2 -2 * 5 * 45 = 285 + 225 - 450 = 60, che controlla.

Il flusso di lavoro quindi è:

Dato un DEM.

  • Calcola s = somma focale (oltre 3 x 3 quartieri quadrati) di [DEM].

  • Calcola DEM2 = [DEM] * [DEM].

  • Calcola t = somma focale (oltre 3 x 3 quartieri quadrati) di [DEM2].

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

Restituisce r = Sqrt ([r2]).

Si tratta di 9 operazioni di griglia in toto , tutte veloci. Vengono eseguiti facilmente nel calcolatore raster (ArcGIS 9.3 e precedenti), nella riga di comando (tutte le versioni) e Model Builder (tutte le versioni).

A proposito, questa non è una "variazione media di elevazione" (perché le variazioni di elevazione possono essere positive e negative): è una variazione di elevazione quadrata media della radice. È non uguale alla "indice di posizione topografica" descritto in http://arcscripts.esri.com/details.asp?dbid=14156 , che (secondo la documentazione) equivale x - (s) - x / 8. Nell'esempio sopra, il TPI è uguale a 5 - (45-5) / 8 = 0 mentre il TRI, come abbiamo visto, è Sqrt (60).


1
Grazie Bill. Apprezzo vedere le specifiche di come funziona uno strumento o un'operazione. Da ciò chiunque abbia un adeguato investimento di tempo ed energia intellettuale può costruire un nuovo apparato per svolgere questo lavoro usando gli strumenti che ha a portata di mano. Sono informazioni come questa che renderanno GIS.se un servizio utile a lungo termine.
Matt Wilkie,

1
+1 Ottima spiegazione. Immagino che ciò significhi che una superficie ripida ma liscia potrebbe avere un TRI più elevato di una superficie piana ma irregolare.
Kirk Kuykendall,

1
@Kirk Questo è corretto. Esistono modi per rimuovere l'effetto della pendenza locale al fine di ottenere un indice di robustezza "relativa", se lo si desidera. Anche se non ho elaborato i dettagli, credo che sottraendo un multiplo universale di (c * a) ^ 2 da r2 - dove c è la dimensione della cella e a è la pendenza (come salita / discesa, non come angolo o percento) - dovrebbe fare il trucco.
whuber

@whuber come sempre le tue risposte contengono una quantità incredibile di conoscenza !! Solo una domanda, per favore: significa che non è possibile calcolare il TRI delle celle che si trovano ai bordi del raster? Perché non sono circondati da celle vicine tutto intorno?
marco,

1
@marco Il TRI può essere stimato anche alle celle di confine. Come indicato nella domanda, dovrebbe essere espresso come media, anziché come somma, dividendo i valori che do qui per 9. Nelle celle al contorno il valore "9" nella formula e nel denominatore deve essere sostituito dal numero di valori non nulli all'interno dei rispettivi quartieri 3X3: 6 per le celle dei bordi, 4 per le celle degli angoli. Una griglia di tali valori può essere ottenuta dalla somma focale della griglia dell'indicatore dei valori originali (ha 1 in tutte le celle non NoData e 0 in altre parti). Usa quella griglia al posto della costante "9" nelle formule.
whuber

3

The Riley et al., (1999) TRI è la radice quadrata delle deviazioni quadrate sommate. Questo è molto vicino alla varianza non graduata. Se si desidera un'implementazione della TRI di Riley, seguire la metodologia descritta da @whuber (la metodologia fornita da @ user3338736 ha generalizzato la metrica al massimo nella finestra e non rappresenta la cella per variazione di cella).

Ho una variazione di TRI nella nostra Geomorphometry & Gradient Metrics ArcGIS Toolbox che è la varianza di una finestra specifica. Lo trovo più flessibile e giustificabile. Esistono anche altre metriche di configurazione della superficie tra cui rugosità e dissezione.


grazie Jeffrey. Per qualche motivo quella pagina è vuota, tranne per il titolo in Firefox, pensato che sia ok in Chrome; potrebbe essere una delle mie estensioni. Sono felice di riportare almeno che gli script funzionano invariati in 10.2.2 (quelli che ho provato comunque).
matt wilkie,

1

-Modifica: le informazioni di seguito non sono corrette. Si prega di vedere il post di whuber che spiega il processo corretto .....

TRI (Riley 1999) e TPI (Jenness 2002) sono simili, ma diversi.

Per calcolare TRI e TPI utilizzando ArcGIS 10.x ...

Passaggio 1: utilizzare lo strumento Statistiche focali per creare 2 nuovi set di dati raster da un DEM.

Raster 1 "MAX") vicinato: rettangolo, altezza: 3, larghezza: 3, unità: cella, tipo di statistica: massimo

Raster 2 "MIN") vicinato: rettangolo, altezza: 3, larghezza: 3, unità: cella, tipo di statistica: minimo

Passaggio 2: utilizzare il calcolatore raster per eseguire le seguenti funzioni sui 2 set di dati raster appena creati.

Per TRI: SquareRoot (Abs ((Square ("% MAX%") - Square ("% MIN%"))))

Per TPI: ("% Input DEM%" - "% MIN%") / ("% MAX%" - "% MIN%")

Ecco un esempio di codice Python esportato da un modello creato per TRI ....

# -*- 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)

Questo non è il TRI descritto nella domanda. In realtà, non si può pensare che si tratti di misurare la "robustezza", perché cambia quando si sposta semplicemente il dato verticale. Ad esempio, il tuo TRI di un vicinato 3x3 con valori (1,2, ..., 9) sarebbe sqrt (9 ^ 2-1 ^ 2) = 8.9, ma aggiungendo 100 ai valori (che cambia solo il dato senza cambiando la forma della superficie) dà sqrt (109 ^ 2-101 ^ 2) = 41.
whuber

0

Sembra molto simile all'indice di posizione topografica, un processo che ho usato di recente per uno dei miei progetti. C'è un ArcScript nella pagina di supporto ESRI, una casella degli strumenti Topografia nella pagina Centro risorse ESRI e alcune altre informazioni sul processo nella pagina Jenness Enterprises .


2
Il TPI è una metrica molto diversa dalla rugosità. Per favore, non andiamo giù per la strada di usarli in modo intercambiabile. Credo che l'indice di posizione topografica sia tradizionale calcolato come [dem - focalmean (dem)].
Jeffrey Evans,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.