Problem
Waterbodies passed to fl_valley_confine() are stamped onto the output AFTER the VCA runs (line 218: ifel(wb_r == 1L, 1L, valleys)). They bypass all VCA criteria — flood_factor, slope_threshold, cost_threshold have no effect on waterbody pixels. This means:
-
Dilution of LULC change analysis: Lakes are always classified as "Water" in satellite imagery. When stamped as floodplain, they inflate the total floodplain area denominator without contributing to tree loss signal. Tree loss percentages are suppressed.
-
Waterbodies wider than VCA extent: A large lake on a small stream may be 500m wide while VCA at ff=4 only extends 50m from the channel. The entire lake gets stamped as floodplain — adding stable "Water" area that wouldn't be identified as valley floor by the algorithm.
-
Treed wetlands are different: FWA wetland polygons can contain treed land cover that shows real change over time. Excluding wetlands entirely would miss legitimate tree loss in riparian wetlands.
Proposed Solution
Add a waterbodies_report option or output that enables users to understand waterbody contribution:
- Report total floodplain area with and without waterbodies
- Report waterbody area as percentage of total floodplain
- Or: run VCA twice (with/without) and expose both as layers
This doesn't change the algorithm — it gives users the information to interpret their results correctly. When reporting LULC change within the floodplain, users can choose to exclude stable water pixels or adjust denominators.
Context
Discovered during restoration_wedzin_kwa_2024#123 when LULC tree loss percentages appeared diluted. The flooded docs already note: "Pre-filter to valley-bottom features before calling if headwater waterbodies are not wanted." The network filtering (limiting waterbodies to fish-accessible streams) addresses the headwater problem. This issue addresses the dilution problem for correctly-included waterbodies.
Relates to #28
Relates to NewGraphEnvironment/restoration_wedzin_kwa_2024#123
Relates to NewGraphEnvironment/restoration_wedzin_kwa_2024#138
Problem
Waterbodies passed to
fl_valley_confine()are stamped onto the output AFTER the VCA runs (line 218:ifel(wb_r == 1L, 1L, valleys)). They bypass all VCA criteria — flood_factor, slope_threshold, cost_threshold have no effect on waterbody pixels. This means:Dilution of LULC change analysis: Lakes are always classified as "Water" in satellite imagery. When stamped as floodplain, they inflate the total floodplain area denominator without contributing to tree loss signal. Tree loss percentages are suppressed.
Waterbodies wider than VCA extent: A large lake on a small stream may be 500m wide while VCA at ff=4 only extends 50m from the channel. The entire lake gets stamped as floodplain — adding stable "Water" area that wouldn't be identified as valley floor by the algorithm.
Treed wetlands are different: FWA wetland polygons can contain treed land cover that shows real change over time. Excluding wetlands entirely would miss legitimate tree loss in riparian wetlands.
Proposed Solution
Add a
waterbodies_reportoption or output that enables users to understand waterbody contribution:This doesn't change the algorithm — it gives users the information to interpret their results correctly. When reporting LULC change within the floodplain, users can choose to exclude stable water pixels or adjust denominators.
Context
Discovered during restoration_wedzin_kwa_2024#123 when LULC tree loss percentages appeared diluted. The flooded docs already note: "Pre-filter to valley-bottom features before calling if headwater waterbodies are not wanted." The network filtering (limiting waterbodies to fish-accessible streams) addresses the headwater problem. This issue addresses the dilution problem for correctly-included waterbodies.
Relates to #28
Relates to NewGraphEnvironment/restoration_wedzin_kwa_2024#123
Relates to NewGraphEnvironment/restoration_wedzin_kwa_2024#138