Rho8 flow pointer (direction)

This tool is used to generate a flow pointer grid (i.e. flow direction) using the stochastic Rho8 (J. Fairfield and P. Leymarie, 1991) algorithm. Like the D8 flow algorithm, Rho8 is a single-flow-direction (SFD) method because the flow entering each grid cell is routed to only one downslope neighbour, i.e. flow divergence is not permitted. The user must specify the name of a digital elevation model (DEM) that has been hydrologically corrected to remove all spurious depressions and flat areas. DEM pre-processing is usually achived using the Fill Depressions tool.

In Whitebox GAT, Rho8 flow pointers use the following clockwise, base-2 numeric naming convention:

Flow directions

Thus, a grid cell that flows to the northwest will be assigned a '64' in the Rho8 flow pointer raster. Notice that grid cells that have no lower neighbours are assigned a flow direction of zero. In a DEM that has been pre-precessed to remove all depressions and flat areas, this condition will only occur along the edges of the grid.

The Rho8 flow algorithm was developed to compensate for a directional bias in the simpler D8 flow algorithm that leads to an abundance of unnatural-looking areas of parallel flow on certain hillslopes. The Rho8 method is however stochastic, meaning that each time the tool is run, a slightly different flow-pointer grid will be produced. This can be a highly undesirable characteristic, which has led to the unpopularity of this flow-routing method for widespread applications.

Grid cells possessing the NoData value in the input DEM are assigned the NoData value in the output image. The output raster is of the integer data type and categorical data scale.

See Also:


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

wd = pluginHost.getWorkingDirectory()
demFile = wd + "DEM.dep"
outputFile = wd + "pointer.dep"
args = [demFile, outputFile]
pluginHost.runPlugin("FlowPointerRho8", args, False)

This is a Groovy script also using this tool:

def wd = pluginHost.getWorkingDirectory()
def demFile = wd + "DEM.dep"
def outputFile = wd + "pointer.dep"
String[] args = [demFile, outputFile]
pluginHost.runPlugin("FlowPointerRho8", args, false)