(Sub-)Catchment(s) (watershed, basin) of each one or more specified cells

Result = subcatchment(ldd, points)

spatial ldd


spatial boolean, nominal, ordinal


spatial type of points


The local drain direction for each cell is defined by ldd. For each non zero value on points its catchment is determined and all cells in its catchment are assigned this non zero value. This procedure is performed for all cells with a non zero value on points, but there is one important exception: subcatchments are also identified: if the catchment of a non zero cell on points contains another non zero cell value on points, the (smaller) catchment of the latter non zero cell is identified instead of the (larger) enclosing catchment.

The operation is performed as follows: for each cell its downstream path is determined which consists of the consecutively neighbouring downstream cells on ldd. On Result each cell is assigned the non zero points cell value which is on its path and which is nearest downstream. If all cells on the downstream path of a cell have a value 0 on points a 0 is assigned to the cell on Result.


A cell with missing value on ldd is assigned a missing value on Result.


This operation belongs to the group of Neighbourhood operators; local drain directions

See Also

catchment, lddmask


  1. • pcrcalc
    Result =;
    Ldd =;
    Points =;
    report Result = subcatchment(Ldd,Points);

    • python
    Ldd = readmap(“”)
    Points = readmap(“”)
    Result = subcatchment(Ldd,Points)

    ../../_images/subcatchment_Result.png ../../_images/accu_Ldd.png ../../_images/catchment_Points.png