Multiscale elevation residual index

The multiscale elevation residual index (MERI) characterizes the relative landscape position of a location across a range of spatial scales. The algorithm calculates the Difference From Mean Elevation (DFME) for each grid cell for each scale, defined by a the neighbourhood size of the DFME operation. Mean elevations are determined for each tested scale at each grid cell in an input digital elevation model (DEM) uing a highly efficient method based on an integral image, sometimes referred to as a summed area table. Neighbourhoods are therefore based on the square regions surrounding each cell, with the smallest tested neighbourhood having a search radius of one cell (i.e. the 3 x 3 neighbourhood) to the maximum tested search radius (rmax):

rmax = floor[logB(min{Col / 2, R / 2})]

Where B is the base value and C and R are the number of columns and rows in the DEM respectively. The base value determines the density with which the range of scales are sampled. The default base value is 1.5 and 1 < B ≤ 2. The series of neighbourhoods of dimensions s x s is given as:

s = 2 x floor(Bi) + 1

for 0 ≤ irmax. Additionally, repeated values, which can occur for small values of i and B are removed from the series.

The DFME is calculated for each neighbourhood in the series above. The index is then defined as the proportion of the tested scales for which the grid cell's elevation is higher than the mean elevation. Thus, MERI ranges from 0, indicating that a location (i.e. grid cell in a DEM) is lower than the mean elevation across the entire range of tested scales, and 1, indicating that the location is consitently higher than the mean elevation. The calculation of DFME requires creating two temporary images that will be deleted upon completion.

Scripting:

The following is an example of a Python script using this tool:

wd = pluginHost.getWorkingDirectory()
inputFile = wd + "DEM.dep"
outputFile = wd + "output.dep"
baseValue = "1.5"
args = [inputFile, outputFile, baseValue]
pluginHost.runPlugin("MultiscaleElevationResidualIndex", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def inputFile = wd + "DEM.dep"
def outputFile = wd + "output.dep"
def baseValue = "1.5"
String[] args = [inputFile, outputFile, baseValue]
pluginHost.runPlugin("MultiscaleElevationResidualIndex", args, false)

Credits:

• John Lindsay (2013) email: jlindsay@uoguelph.ca