diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-21 22:09:21 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-21 22:09:21 +0200 |
| commit | 765ea1fffcc1bd1af2e6e9645d6f138dfd4ae0eb (patch) | |
| tree | 391c294b47ba703acdd8ac687634b881cb31d90d /README.md | |
| parent | ed9516cbcb3c5254980a9e1dba7d8fa5ea230b35 (diff) | |
Require a 3.5% minimum slope on detected climbs, re-segmenting gentler stretches
A detected climb must now average at least 3.5% slope with re-segmentation:
gentle drags are split into their qualifying steeper parts instead of being
reported wholesale or dropped. Qualifying climbs keep their previous
boundaries exactly; only regions whose classic best climb averages below the
threshold get re-segmented (full-scan for the best qualifying sub-segment,
found=false when none exists).
QA: A/B across data/rides (362 rides) went from 137 to 133 climbs, 23 rides
changed; the 7 fully-dropped rides were audited to contain zero qualifying
sub-segments. Example-ride tests updated for the new behavior; the resolved
"minimum slope" TODO was removed.
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -5,7 +5,7 @@ A Go toolkit for analyzing cycling rides from GPX exports: parse rides, detect c ## Features - **GPX parsing** — reads elevation-tracked rides from Garmin/Strava GPX exports into a `Ride` model -- **Climb detection** — automatically finds climbs within a ride, each scored and categorized (Cat 4 … HC) +- **Climb detection** — automatically finds climbs within a ride, each scored and categorized (Cat 4 … HC), requiring at least a 3.5% average slope (gentler stretches are re-segmented into their qualifying parts) - **Difficulty score (Cotacol)** — scores any ride or climb by splitting it into 100 m segments and summing `0.1 km × slope²` per segment. This fixed step is a deliberate compromise: smaller steps increase sensitivity to elevation noise, while unconstrained variable steps maximize noise rather than meaningful difficulty. - **Similar-climb matching** — finds the same climb across rides by matching start/end coordinates, so times can be compared - **Mountain pass extraction** — extracts French mountain passes from an OpenStreetMap PBF export (nodes tagged `mountain_pass=yes` / `natural=mountain_pass`) into a SQLite database @@ -108,7 +108,8 @@ TypeScript checks can also be run directly with `npm run check`, covering format ## TODO -- minimum slope of 3% or 4% help long slow climb to venelle +- http://localhost:8080/rides/368: does not contain Pont Rout +- http://localhost:8080/rides/6: Cat 4 inside Chemin des Lauriers (embrassé) - Compute estimated power, speed - Plot speed and slope per segment, colored by heart rate - http://localhost:8080/rides/378: Repentance partial climb |
