Split Catchment

Overview of the split catchment algorithm used in NLDI pygeoapi processing services.

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:

  1. Identifies the local catchment polygon associated with the flowline.
  2. Splits this polygon into two parts:
    • The upstream portion draining to the linear‑reference point
    • The downstream portion below the point
  3. 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.