aboutsummaryrefslogtreecommitdiff
path: root/web/climbs.go
diff options
context:
space:
mode:
Diffstat (limited to 'web/climbs.go')
-rw-r--r--web/climbs.go10
1 files changed, 3 insertions, 7 deletions
diff --git a/web/climbs.go b/web/climbs.go
index 6859545..6416509 100644
--- a/web/climbs.go
+++ b/web/climbs.go
@@ -101,9 +101,7 @@ func (s *Server) handleClimb(w http.ResponseWriter, r *http.Request) {
}), w)
}
-// buildClimbProfile computes the median normalized elevation profile from the
-// linked rides: each ride is parsed, its climb occurrences matched, and every
-// occurrence resampled onto the shared normalized axis.
+// buildClimbProfile computes the median normalized elevation profile from the linked rides, resampling every occurrence onto a shared axis.
func (s *Server) buildClimbProfile(officialClimb official_climb.OfficialClimb, aggregate official_climb.Aggregate, attempts []official_climb.Attempt) ClimbProfileData {
profile := ClimbProfileData{DistanceKm: aggregate.DistanceM / 1000}
if len(attempts) == 0 {
@@ -127,7 +125,7 @@ func (s *Server) buildClimbProfile(officialClimb official_climb.OfficialClimb, a
slog.Warn("Failed to parse ride for climb profile", "climb_id", officialClimb.ID, "ride_id", attempt.RideID, "error", err)
continue
}
- for _, matched := range official_climb.MatchClimbs(parsed.Coords, officialClimb, matchPolicy.EndpointRadiusM) {
+ for _, matched := range official_climb.MatchClimbs(parsed.Route, officialClimb, matchPolicy.EndpointRadiusM) {
segment := climb.Climb{Route: climb.Route{
Distances: parsed.Distances[matched.StartIndex : matched.EndIndex+1],
Elevations: parsed.Elevations[matched.StartIndex : matched.EndIndex+1],
@@ -152,9 +150,7 @@ func (s *Server) buildClimbProfile(officialClimb official_climb.OfficialClimb, a
return profile
}
-// medianRoute picks the recorded route of the attempt whose distance is the
-// median across occurrences: full recorded precision, no resampling, and
-// robust to one GPS-drifted ride.
+// medianRoute picks the recorded route of the attempt whose distance is the median: full precision, no resampling, robust to one drifted ride.
func medianRoute(candidates []routeCandidate) []geodist.Coord {
if len(candidates) == 0 {
return nil