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
| Argument | Type | Required | Geometry / Type Constraints | Description |
|---|---|---|---|---|
| dem | Raster | Yes | Must be a readable DEM raster. | Terrain source used to derive erosion pressure and corridor confidence. |
| streams | Vector | Yes | Must be a readable line network. LineString and MultiLineString geometries are supported. | Stream network to classify and rank. |
Parameters
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| profile | String | No | balanced | Erosion-sensitivity preset: fast, balanced, or conservative. |
| restoration_priority_mode | String | No | health_score_only | Ranking mode: health_score_only, cost_weighted, or ecological_gradient. |
| output_prefix | String | No | river_corridor_health | Output 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.
| Artifact | Runtime Output Key | Type | What It Contains |
|---|---|---|---|
Erosion pressure raster (${prefix}_erosion_pressure.tif) | erosion_pressure | GeoTIFF raster | DEM-derived erosion pressure in [0, 1]. |
Corridor confidence raster (${prefix}_corridor_confidence.tif) | corridor_confidence | GeoTIFF raster | Confidence raster in [0, 1]. |
Stream health score vector (${prefix}_stream_health_score.gpkg) | stream_health_score | GeoPackage line layer | Fields: STREAM_ID, HEALTH, EROS_P90, CLASS. |
Restoration zones vector (${prefix}_restoration_zones.gpkg) | restoration_zones | GeoPackage line layer | Fields: STREAM_ID, HEALTH, ACTION, PRIORITY_IDX. |
Summary contract (${prefix}_summary.json) | summary | JSON | Summary contract with inputs, parameters, counts, interpretation blocks, and output paths. |
Optional report (${prefix}_report.html) | html_report | HTML | HTML rendering of the summary JSON. |
Health classes and actions
| Rule | Result |
|---|---|
HEALTH < 0.35 | CLASS=Critical, ACTION=Immediate stabilization |
0.35 <= HEALTH < 0.6 | CLASS=At-Risk, ACTION=Revegetate and monitor |
HEALTH >= 0.6 | CLASS=Stable, no restoration feature written |
Important summary fields
| Key | Meaning |
|---|---|
summary.streams_scored | Number of streams successfully scored. |
summary.restoration_streams | Number of non-stable streams written to restoration outputs. |
summary.mean_stream_health | Mean health score across scored streams. |
interpretation.crs_harmonization | Reports DEM EPSG, source stream EPSG, and whether reprojection occurred. |
interpretation.restoration_priority_index | Reports the ranking mode and aggregate priority statistics. |
interpretation.budget_scenarios | Reports tight, moderate, and extended budget stream counts and fractions. |
interpretation.watershed_rollup_summary | Reports critical, at-risk, stable counts and urgency classification. |
output_semantics | Declares machine-readable output intent and certification scope for each output key. |
confidence_contract | Declares confidence metric semantics, threshold, and low-confidence fraction for governance QA. |
interpretation_warnings | Lists plain-language warnings on proxy limits and cross-run comparison constraints. |
outputs | Reports paths to rasters, vectors, and the summary file. |
Returned payload keys
The workflow returns these output keys:
erosion_pressurecorridor_confidencestream_health_scorerestoration_zonessummaryhtml_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
profilechanges the erosion-pressure raster and therefore can shift stream classes.restoration_priority_modechanges the ordering of restoration candidates, not whether a stream is stable or unstable.output_prefixcontrols one tightly linked delivery package of rasters, vectors, JSON, and HTML.
QA and Acceptance Criteria
- Verify only
demandstreamsare documented as required inputs. - Verify the example uses the real runtime argument names.
- Verify the GeoPackage field names match the documented schema.
- Verify the summary JSON contains
inputs,parameters,summary,interpretation,output_semantics,confidence_contract,interpretation_warnings, andoutputs. - Verify the returned payload contains the documented output keys.
- 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.gpkgas the primary classification layer andrestoration_zones.gpkgas the intervention shortlist. - Review
EROS_P90together withHEALTHto 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.
Related Tools
terrain_constraint_and_conflict_analysisutility_corridor_encroachment_intelligencewetland_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
- Deliver both rasters, both GeoPackages, the summary JSON, and the HTML report together.
- Record the selected
profileandrestoration_priority_mode. - Review the CRS harmonization block before downstream use.
- Confirm class counts and urgency classification in the summary.
- 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.