River Corridor Health Assessment

Purpose

River Corridor Health Assessment evaluates riparian buffer integrity, stream channel stability, vegetation composition, and hydrologic connectivity along river segments. Outputs health scores and recommendations for restoration priority.

Typical Questions This Tool Helps Answer

  • Which river reaches have the lowest riparian integrity and should be prioritized for restoration investment this planning cycle?
  • Where is DEM-derived erosion pressure highest along the stream network, and which segments are classified as At-Risk or Critical based on the health score?
  • How does corridor health score vary across the watershed, and which tributary catchments drive the aggregate condition index?

Background

Environmental risk workflows are built around source-pathway-receptor logic: identify stressors, model transport or exposure pathways, and estimate consequence to assets or ecosystems. Inputs and model assumptions define the validity envelope, so uncertainty documentation is as important as the final risk score.

In practice, these tools are most defensible when used comparatively across scenarios, with explicit thresholds and confidence narratives. Interpretation should focus on rank ordering and mitigation prioritization, not absolute certainty.

River corridor health assessment integrates channel condition, riparian structure, and disturbance indicators into a multi-metric condition narrative. Trend consistency and local calibration are critical for fair reach-to-reach comparison.

Methodological Considerations

  • Calibrate thresholds and class boundaries against local context whenever possible; transferred defaults should be treated as provisional.
  • Evaluate scenario sensitivity explicitly so mitigation priorities are robust to uncertainty in assumptions.
  • Keep lineage between assumptions, intermediate metrics, and summary outputs for audit-ready interpretation.

Practical Interpretation Pitfalls

A frequent mistake is interpreting risk classes as deterministic outcomes. These products are comparative planning aids and should be paired with field validation and expert review.

Inputs

ArgumentTypeRequiredGeometry / Type ConstraintsDescription
demRasterYesMust be a readable DEM raster.Terrain source used to derive erosion pressure and corridor confidence.
streamsVectorYesMust be a readable line network. LineString and MultiLineString geometries are supported.Stream network to classify and rank.

Parameters

ArgumentTypeRequiredDefaultDescription
profileStringNobalancedErosion-sensitivity preset: fast, balanced, or conservative.
restoration_priority_modeStringNohealth_score_onlyRanking mode: health_score_only, cost_weighted, or ecological_gradient.
output_prefixStringNoriver_corridor_healthOutput prefix for generated artifacts.

The runtime also accepts output as an alias for output_prefix.

Outputs

Output artifact keys below are runtime outputs, not input parameters.

ArtifactRuntime Output KeyTypeWhat It Contains
Erosion pressure raster (${prefix}_erosion_pressure.tif)erosion_pressureGeoTIFF rasterDEM-derived erosion pressure in [0, 1].
Corridor confidence raster (${prefix}_corridor_confidence.tif)corridor_confidenceGeoTIFF rasterConfidence raster in [0, 1].
Stream health score vector (${prefix}_stream_health_score.gpkg)stream_health_scoreGeoPackage line layerFields: STREAM_ID, HEALTH, EROS_P90, CLASS.
Restoration zones vector (${prefix}_restoration_zones.gpkg)restoration_zonesGeoPackage line layerFields: STREAM_ID, HEALTH, ACTION, PRIORITY_IDX.
Summary contract (${prefix}_summary.json)summaryJSONSummary contract with inputs, parameters, counts, interpretation blocks, and output paths.
Optional report (${prefix}_report.html)html_reportHTMLHTML rendering of the summary JSON.

Health classes and actions

RuleResult
HEALTH < 0.35CLASS=Critical, ACTION=Immediate stabilization
0.35 <= HEALTH < 0.6CLASS=At-Risk, ACTION=Revegetate and monitor
HEALTH >= 0.6CLASS=Stable, no restoration feature written

Important summary fields

KeyMeaning
summary.streams_scoredNumber of streams successfully scored.
summary.restoration_streamsNumber of non-stable streams written to restoration outputs.
summary.mean_stream_healthMean health score across scored streams.
interpretation.crs_harmonizationReports DEM EPSG, source stream EPSG, and whether reprojection occurred.
interpretation.restoration_priority_indexReports the ranking mode and aggregate priority statistics.
interpretation.budget_scenariosReports tight, moderate, and extended budget stream counts and fractions.
interpretation.watershed_rollup_summaryReports critical, at-risk, stable counts and urgency classification.
output_semanticsDeclares machine-readable output intent and certification scope for each output key.
confidence_contractDeclares confidence metric semantics, threshold, and low-confidence fraction for governance QA.
interpretation_warningsLists plain-language warnings on proxy limits and cross-run comparison constraints.
outputsReports paths to rasters, vectors, and the summary file.

Returned payload keys

The workflow returns these output keys:

  • erosion_pressure
  • corridor_confidence
  • stream_health_score
  • restoration_zones
  • summary
  • html_report

Example

import whitebox_workflows as wbw

env = wbw.WbEnvironment()
env.river_corridor_health_assessment(
        dem="dem_10m.tif",
        streams="streams.gpkg",
        profile="balanced",
        restoration_priority_mode="cost_weighted",
        output_prefix="river_health_2026",
)

References

  • Montgomery, D. R., & Buffington, J. M. (1997). Channel-reach morphology in mountain drainage basins. Geological Society of America Bulletin.
  • Wohl, E. (2017). Connectivity in rivers. Progress in Physical Geography.

Parameter Interaction Notes

  • profile changes the erosion-pressure raster and therefore can shift stream classes.
  • restoration_priority_mode changes the ordering of restoration candidates, not whether a stream is stable or unstable.
  • output_prefix controls one tightly linked delivery package of rasters, vectors, JSON, and HTML.

QA and Acceptance Criteria

  1. Verify only dem and streams are documented as required inputs.
  2. Verify the example uses the real runtime argument names.
  3. Verify the GeoPackage field names match the documented schema.
  4. Verify the summary JSON contains inputs, parameters, summary, interpretation, output_semantics, confidence_contract, interpretation_warnings, and outputs.
  5. Verify the returned payload contains the documented output keys.
  6. Verify class thresholds and restoration actions match the implementation.

The workflow fails if inputs are missing or unreadable, if profile or restoration_priority_mode is invalid, if a provided output prefix is empty, or if stream reprojection is needed but the stream layer lacks CRS EPSG metadata.

Advanced Operational Guidance

  • Treat stream_health_score.gpkg as the primary classification layer and restoration_zones.gpkg as the intervention shortlist.
  • Review EROS_P90 together with HEALTH to understand why otherwise similar streams may rank differently.
  • Check the CRS harmonization block before operational use when source data came from multiple systems.
  • If stream geometry is sparse, consider densifying it upstream of this workflow to sample erosion pressure more frequently.

Implementation Patterns

  • Baseline screening run: profile=balanced, restoration_priority_mode=health_score_only.
  • Cost-sensitive planning run: restoration_priority_mode=cost_weighted.
  • Erosion-driven triage run: restoration_priority_mode=ecological_gradient.
  • Delivery run: publish both rasters, both GeoPackages, the summary JSON, and the HTML report together.
  • terrain_constraint_and_conflict_analysis
  • utility_corridor_encroachment_intelligence
  • wetland_hydrogeomorphic_classification

When To Use This Workflow

Use this workflow when you need a reproducible stream-health triage package derived from terrain and stream geometry, rather than a broad riparian inventory.

What this workflow helps you do:

  • Classify streams into stable and restoration-needed groups.
  • Compare different restoration ranking strategies.
  • Deliver both spatial outputs and a summary that explains the ranking logic.

Results Delivery Checklist

  1. Deliver both rasters, both GeoPackages, the summary JSON, and the HTML report together.
  2. Record the selected profile and restoration_priority_mode.
  3. Review the CRS harmonization block before downstream use.
  4. Confirm class counts and urgency classification in the summary.
  5. If budget scenarios are being used for planning, note which one informed the decision.

Common Questions

Q: Why can a stream move up or down in priority without changing class?
A: Because class is based on HEALTH, while priority ranking depends on the selected restoration_priority_mode.

Q: What is the main misinterpretation risk in this workflow?
A: Assuming it uses vegetation or land-use inputs. This workflow scores streams from DEM-derived erosion pressure sampled along the stream network.

Q: Which setting matters most for planning scenarios?
A: restoration_priority_mode, because it changes how non-stable streams are ordered for intervention.

Q: When should teams choose ecological_gradient?
A: Choose it when high erosion pressure should weigh more heavily than treatment efficiency or segment length.