Split Catchment
Overview
The split catchment algorithm divides an NHDPlusV2 catchment polygon into
an upstream and a downstream portion using a precise location along a flowline.
This operation is implemented in Python (nldi-flowtools) and is exposed
through the NLDI pygeoapi server.
It is a foundational component of:
- Custom basin delineation
- Hydrolocation-supported watershed analysis
- Point-specific drainage area derivation
How the Algorithm Works
The process requires a linear reference point along a flowline. This point is
typically produced by the raindrop trace algorithm, which identifies the
hydrologically correct location along the network.
Given this flowline position, the algorithm:
- Identifies the local catchment polygon associated with the flowline.
- Splits this polygon into two parts:
- The upstream portion draining to the linear‑reference point
- The downstream portion below the point
- Returns both polygons as separate geometries.
The two outputs represent a hydrologically accurate division of the original
catchment, enabling finer-grained basin computation.
Role in Basin Delineation
The split catchment output is used together with the NLDI upstream accumulation
(basin retrieval) to create a precise drainage basin for any point along
a flowline.
This workflow:
- Ensures that the downstream limit is placed exactly at the user-defined location
- Produces a basin geometry that is more accurate than catchment-based indexing alone
- Supports use cases such as custom watershed boundaries or flowpath-specific studies
Referenced Figures
The blog post includes a figure (basin.png) illustrating:
- The catchment polygon
- The split between upstream and downstream components
- The final delineated basin geometry when combined with upstream catchments
Images must be added separately to the Hugo static directory.
Notes & TODOs
- TODO: Discuss algorithm limitations (e.g., requiring a valid flowline intersection).
- TODO: Provide the expected output schema (polygon sets, identifiers).
- TODO: Add a code example once Python process endpoints are finalized.