Tell me more ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Does anyone know how to calculate Topographic Ruggedness Index in Arcgis 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

share|improve this question
depends upon the version of ArcGIS arcscripts.esri.com/details.asp?dbid=12646 some discussion from previous forums forums.esri.com/Thread.asp?c=93&f=982&t=145448 unchecked but search contained the term jennessent.com/arcgis/surface_area.htm – Dan Patterson Feb 11 '11 at 1:38

3 Answers

up vote 9 down vote accepted

I would recommend to look outside ArcGIS) Very easy using the free gdal software: http://www.gdal.org/gdaldem.html

gdaldem TRI input_dem output_TRI_map

Or if you'd prefer it in saga gis: http://www.saga-gis.org/saga_modules_doc/ta_morphometry/ta_morphometry_16.html

share|improve this answer
4  
+1 I always appreciate seeing non-ArcGIS solutions to ArcGIS problems :-). This is a matter of principle, not antagonism towards ArcGIS in particular. One should avoid being locked in to a single software solution: not only is it professionally risky, it's intellectually stifling. – whuber Feb 11 '11 at 15:03
I know I asked for an arcgis specific solution, but I'm accepting this one because of it's directness. GDAL Utilities are easy to acquire and install, universally acknowledged as best in class, and the command to generate this particular product is the definition of simplicity. – matt wilkie Feb 14 '11 at 17:45

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).

share|improve this answer
1  
Thank you Bill. I appreciate seeing the specifics of how a tool or operation works. From this anyone with a suitable investment of time and intellectual energy can build a new apparatus to carry this job out using the tools they have at hand. It's information like this which will make GIS.se a useful service in the long haul. – matt wilkie Feb 14 '11 at 17:50
1  
+1 Great explanation. I guess this means a steep but smooth surface could have a higher TRI than a flat but bumpy surface. – Kirk Kuykendall Feb 14 '11 at 21:39
@Kirk That is correct. There are ways to remove the effect of the local slope in order to obtain an index of "relative" ruggedness if you like. Although I haven't worked out the details, I believe that subtracting some universal multiple of (c*a)^2 from r2--where c is the cellsize and a is the slope (as rise/run, not as an angle or percent)--ought to do the trick. – whuber Feb 20 at 17:09

This sounds very much like the Topographic Position Index, a process I used recently for one of my projects. There's an ArcScript on the ESRI support page, a Topography toolbox on the ESRI Resource Center page, and some more info on the process on the Jenness Enterprises page.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.