Find saddle points

This tool locates saddle points along ridges within a digital elevation model (DEM). A saddle point, or mountain pass, or col, is a low point in a topographic ridge. The algorithm works by identifying the lowest ridge cell that drains to the channel head cell associated with each branch in a valley network. As such, one saddle point will be identified for each branch of the valley network. The best way to map the ridge network is to use the Branch Length tool. The branch length grid derived from the DEM, can then be thresholded to identify grid cells with a high value of branch length, assumed to be ridges. This technique generally works well in fluvial landscapes. The valley bottom network can similarly be mapped by thresholding the D8 contributing area image, also derived from the DEM. Note that the DEM should be hydrologically corrected before either network are derived in order to remove topographic depressions and flat areas. In addition to the ridge and valley network rasters and the DEM raster, the user must also specify the name of the flow pointer raster. This flow pointer must be derived using the D8 flow algorithm. The output file can optionally be a raster grid or a shapefile of points. Given the option output file type, be sure to type the file extension in the output parameter box.

See Also:

Scripting:

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

wd = pluginHost.getWorkingDirectory()
ridgesFile = wd + "ridges.shp"
valleysFile = wd + "valleys.shp"
pointerFile = wd + "D8 pointer.shp"
demFile = wd + "dem.shp"
outputFile = wd + "output.shp"
args = [ridgesFile, valleysFile, pointerFile, demFile, outputFile]
pluginHost.runPlugin("FindSaddlePoints", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def ridgesFile = wd + "ridges.shp"
def valleysFile = wd + "valleys.shp"
def pointerFile = wd + "D8 pointer.shp"
def demFile = wd + "dem.shp"
def outputFile = wd + "output.shp"
String[] args = [ridgesFile, valleysFile, pointerFile, demFile, outputFile]
pluginHost.runPlugin("FindSaddlePoints", args, false)

Credits: