Storm Overflow (CSO) Layer
This release adds a fourth marker type to the Floodwatch map covering ~75 Combined Sewer Overflow sites in the Taw catchment, sourced live from South West Water's contribution to Water UK's National Storm Overflow Hub.
What you'll see on the map
- Purple circle markers at every CSO site, sized by importance:
- 22px for major facilities (wastewater treatment works)
- 14px for minor sites (pumping stations, sewer-network overflows)
- Shaded by status: discharging now (saturated purple) → spilled within 48h (medium) → quiet (pale) → monitor offline (hollow)
- Hover any marker for the expanded site name (e.g. "Chulmleigh Wastewater Treatment Works Settled Storm Overflow") — works on EA station markers too
- Click for a full popup: current state, asset type, permit ID, EDM last-ping, monthly + 30-day spill totals, daily-totals histogram (or event list when sparse), and a multi-year annual hours bar chart
Under the hood
- Hourly polling of the SWW live FeatureServer accumulates a per-site event log in
data/cso_<permit_id>.csv. The "Last 30 days" chart fills out over time as polling proceeds — popup shows "(monitoring started 3rd Jun 2026)" to set expectations. - One-off historical backfill (
fetch_cso_history.py) pulls 2021–2025 annual spill totals from Water UK's All-Years FeatureServer. The annual hours chart is populated from day one. - Filtered to Taw catchment via river-name allowlist on the SWW
receivingWaterCoursefield (TAW, MOLE, YEO, LITTLE DART, DALCH, BRAY, etc.) — Torridge and other adjacent catchments excluded.
Test coverage
- 181 tests (91 Python + 90 JavaScript), up from 104
- 27 new Python tests for the CSO event-log state machine
- 50 new JS tests for marker rendering, visual-state mapping, stats computation, and overlap detection
Other improvements
- Legend reorganised into two columns on desktop — no more overlap with Leaflet's zoom controls
- README hero image updated to show the CSO layer in action
- Documentation sweep across README, CHANGELOG, TESTING, CONTRIBUTING, INSTALL
Compatibility
No breaking changes — purely additive. Existing data files, configuration, and API behaviour unchanged.
Full diff: v1.4.1...v1.5.0