Calculating Topographic Ruggedness Index in ArcGIS Desktop – A Detailed Guide

arcgis-desktopelevationtopography

Does anyone know how to calculate Topographic Ruggedness Index (a.k.a Terrain R.I.) in ArcGIS Desktop without access to command line ArcInfo Workstation?

"The topographic ruggedness index (TRI) is a measurement developed by Riley, et al. (1999) to express the amount of elevation difference between adjacent cells of a digital elevation grid. The process essentially calculates the difference in elevation values from a center cell and the eight cells immediately surrounding it. Then it squares each of the eight elevation difference values to make them all positive and averages the squares. The topographic ruggedness index is then derived by taking the square root of this average, and corresponds to average elevation change between any point on a grid and it’s surrounding area." — from an aml arcscript by Jeffrey Evans

Best Answer

Let's do a little (just a little) algebra.

Let x be the value in the central square; let x_i, i = 1, .., 8 index the values in the neighboring squares; and let r be the topographic ruggedness index. This recipe says r^2 equals the sum of (x_i - x)^2. Two things we can compute easily are (i) the sum of the values in the neighborhood, equal to s = Sum{ x_i } + x; and (ii) the sum of squares of the values, equal to t = Sum{ x_i^2 } + x^2. (These are focal statistics for the original grid and for its square.)

Expanding the squares gives

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.

For example, consider a neighborhood

1 2 3
4 5 6
7 8 9

Here, x = 5, s = 1+2+...+9 = 45, and t = 1+4+9+...+81 = 285. Then

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

and the algebraic equivalence says

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

The workflow therefore is:

Given a DEM.

  • Compute s = Focal sum (over 3 x 3 square neighborhoods) of [DEM].

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

  • Compute t = Focal sum (over 3 x 3 square neighborhoods) of [DEM2].

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

Return r = Sqrt([r2]).

This consists of 9 grid operations in toto, all of which are fast. They are readily carried out in the raster calculator (ArcGIS 9.3 and earlier), the command line (all versions), and Model Builder (all versions).

BTW, this is not an "average elevation change" (because elevation changes can be positive and negative): it is a root mean square elevation change. It is not equal to the "topographic position index" described at http://arcscripts.esri.com/details.asp?dbid=14156 , which (according to the documentation) equals x - (s - x)/8. In the example above, the TPI equals 5 - (45-5)/8 = 0 whereas the TRI, as we saw, is Sqrt(60).