diff options
Diffstat (limited to 'rideanalysis/analysis.go')
| -rw-r--r-- | rideanalysis/analysis.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/rideanalysis/analysis.go b/rideanalysis/analysis.go index bf3c2bb..81c9a98 100644 --- a/rideanalysis/analysis.go +++ b/rideanalysis/analysis.go @@ -17,6 +17,9 @@ const ( passCrossingElevationToleranceM = 25 ) +// PassMarginM is how far around a ride's track mountain passes are loaded for matching and display. +const PassMarginM = 10_000 + type Result struct { Climbs []AnalyzedClimb Crossings []mountain_pass.Crossing @@ -27,6 +30,7 @@ type AnalyzedClimb struct { Name string Category string DistanceM float64 + ElevationGainM float64 SlopePercent float64 Cotacol float64 OfficialClimbID int64 @@ -42,7 +46,7 @@ func Analyze(parsed ride.Ride, passes []mountain_pass.MountainPass, officialClim claimedClimbs := make([]AnalyzedClimb, 0) claimedRanges := make([]geo.Interval, 0) for _, official := range officialClimbs { - for _, matched := range official_climb.MatchClimbs(parsed.Coords, official, matchPolicy.EndpointRadiusM) { + for _, matched := range official_climb.MatchClimbs(parsed.Route, official, matchPolicy.EndpointRadiusM) { interval := geo.NewInterval(matched.StartIndex, matched.EndIndex) claimedRanges = append(claimedRanges, interval) claimedClimbs = append(claimedClimbs, analyzedClimb(routeClimb(parsed.Route, interval), interval, official.Name, official.ID)) @@ -81,11 +85,13 @@ func routeClimb(route climb.Route, interval geo.Interval) climb.Climb { func analyzedClimb(segment climb.Climb, interval geo.Interval, name string, officialID int64) AnalyzedClimb { cotacol := segment.DifficultyScore() + sample := segment.Sample(0, len(segment.Distances)-1) return AnalyzedClimb{ Segment: segment, Name: name, Category: climb.CategoryOf(cotacol).String(), - DistanceM: segment.Distances[len(segment.Distances)-1] - segment.Distances[0], + DistanceM: sample.DistanceM, + ElevationGainM: sample.ElevationGainM, SlopePercent: climb.Slope(segment.Distances, segment.Elevations) * 100, Cotacol: cotacol, OfficialClimbID: officialID, |
