You run flow direction, then flow accumulation, then set a threshold, and the stream network that comes out runs across a floodplain the river demonstrably does not occupy. The channel jumps a divide. A tributary terminates in the middle of a field. The catchment boundary clips half of a neighbouring basin.
The tools did exactly what they were told. The problem is upstream — in the elevation surface itself.
1. Understand what the algorithm assumes
Standard D8 flow routing assumes that water leaves every cell into exactly one of its eight neighbours, that the surface is hydrologically continuous, and that there is a monotonic descent to the outlet. A real DEM violates all three. It contains spurious pits from interpolation and sensor noise, genuine closed depressions, flat surfaces where the vertical resolution cannot resolve a gradient, and — most disruptively — anthropogenic barriers such as road embankments and dams that block a flow path the water actually passes under through a culvert.
2. Separate real depressions from artefacts
Blanket depression filling is the default, and in a landscape with genuine internal drainage — karst, glacial terrain, arid endorheic basins — it is wrong. It will silently connect a closed basin to the river network and inflate downstream accumulation.
Before filling, map the depressions and inspect them by size and depth. A cluster of single-cell, sub-metre pits is noise. A 40-hectare depression that appears in the topographic map as a lake is not. Fill the first; preserve the second, or handle it as a separate sink with its own outlet rules.
3. Deal with flats explicitly
After filling, you inherit flat areas — regions where every neighbour has the same elevation and the algorithm has no gradient to follow. Naive resolution produces the characteristic parallel-line artefact across floodplains and filled depressions. Use a flat-resolution method that routes both away from higher terrain and toward lower terrain, which yields a far more plausible drainage pattern across low-relief ground.
4. Handle barriers before you blame the delineation
Road and rail embankments are the single most common cause of a stream network that "goes the wrong way" in populated catchments. The DEM records the embankment; it does not record the culvert beneath it. Flow accumulates behind the embankment and eventually spills at whatever low point the surface happens to offer — which is rarely where the culvert is.
Two practical remedies:
- Stream burning. Lower the DEM along a known hydrography layer so the modelled network follows the mapped one. Effective, but it imposes the reference network's errors and generalisation onto your result.
- Targeted breaching. Cut a narrow channel through the specific barrier at the culvert or bridge location. More work, far less collateral damage to the surface, and defensible in a report.
Prefer breaching where you can identify the crossings, and reserve full burning for cases where a reliable hydrography layer exists and channel position matters more than terrain fidelity.
5. Choose the accumulation threshold on evidence, not habit
The threshold that converts flow accumulation into a stream network is a modelling decision, not a default. It controls drainage density, and drainage density controls sub-basin count, which controls every per-catchment statistic you subsequently report.
Set it by comparing candidate thresholds against a reference network — a topographic map, a national hydrography dataset, or high-resolution imagery — over a representative sample of the study area, and record the value and its justification in the methodology. If the study compares sub-watersheds, hold the threshold constant across all of them.
6. Verify before you build on it
Four checks that catch most of the damage:
- Overlay the derived network on imagery and on any independent hydrography layer. Look at confluences and at the crossings you breached.
- Compare the delineated catchment area against a published or gauged area for the same outlet. A large discrepancy usually means a divide has been crossed.
- Check that the outlet cell actually sits on the accumulated channel — snapping a pour point to a nearby high-accumulation cell is a routine, and routinely forgotten, step.
- Difference the conditioned DEM against the original. The map of that difference is your record of exactly how much surface you altered, and where.
A delineation you cannot defend at the culvert scale is not a delineation you should be reporting at the catchment scale.
Keep the conditioning reproducible
Every step above involves a parameter or an edit. Run them as a script rather than as a sequence of interactive tool dialogs, so that the same conditioning can be re-applied when the DEM is updated, audited by a reviewer, or re-used across sub-basins without drift. Save the difference raster and the breach locations alongside the outputs — they are part of the result, not scratch data.