Pennock's landform classification

Tool can be used to perform a simple landform classification based on measures of slope gradient and curvature derived from a user-specified digital elevation model (DEM). The classification scheme is based on the method proposed by Pennock, Zebarth, and DeJong (1987). The scheme divides a landscape into seven element types, including: convergent footslopes (CFS), divergent footslopes (DFS), convergent shoulders (CSH), divergent shoulders (DSH), convergent backslopes (CBS), divergent backslopes (DBS), and level terrain (L). The output raster image will record each of these base element types as:

Element TypeCode
CFS1
DFS2
CSH3
DSH4
CBS5
DBS6
L7

The definition of each of the elements, based on the original Pennock et al. (1987) paper, is as follows:

PROFILEGRADIENTPLANElement
Concave (< -0.10)High >3.0Concave <0.0CFS
Concave (< -0.10)High >3.0Convex >0.0DFS
Convex (>0.10)High >3.0Concave <0.0CSH
Convex (>0.10)High >3.0Convex >0.0DSH
Linear (> -0.10, <0.10)High >3.0Concave <0.0CBS
Linear (> -0.10, <0.10)High >3.0Convex >0.0DBS
--Low <3.0--L

Where PROFILE is profile curvature, GRADIENT is the slope gradient, and PLAN is the plan curvature. Note that these values are likely landscape and data specific and can be adjusted by the user. Landscape classification schemes that are based on terrain attributes are highly sensitive to short-range topographic variability (i.e. roughness) and can benefit from pre-processing the DEM with a smoothing filter to reduce the effect of surface roughness and emphasize the longer-range topographic signal.

See Also:

Scripting:

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

wd = pluginHost.getWorkingDirectory()
demFile = wd + "DEM.dep"
outputFile = wd + "output.dep"
zFactor = "1.0"
slopeThreshold = "3.0"
profileCurvThreshold = "0.1"
planCurvThreshold = "0.0"
args = [demFile, outputFile, zFactor, slopeThreshold, profileCurvThreshold, planCurvThreshold]
pluginHost.runPlugin("Pennocks_Landform_Classification", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def demFile = wd + "DEM.dep"
def outputFile = wd + "output.dep"
def zFactor = "1.0"
def slopeThreshold = "3.0"
def profileCurvThreshold = "0.1"
def planCurvThreshold = "0.0"
String[] args = [demFile, outputFile, zFactor, slopeThreshold, profileCurvThreshold, planCurvThreshold]
pluginHost.runPlugin("Pennocks_Landform_Classification", args, false)

Credits:

References: