diff options
Diffstat (limited to 'rideanalysis/analysis.go')
| -rw-r--r-- | rideanalysis/analysis.go | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/rideanalysis/analysis.go b/rideanalysis/analysis.go index fae64b8..90be629 100644 --- a/rideanalysis/analysis.go +++ b/rideanalysis/analysis.go @@ -39,13 +39,12 @@ func Analyze(parsed ride.Ride, passes []mountain_pass.MountainPass, officialClim claimedClimbs := make([]AnalyzedClimb, 0) claimedRanges := make([]ride.Range, 0) for _, official := range officialClimbs { - matched, found := official_climb.MatchClimb(parsed.Coords, official, matchPolicy.EndpointRadiusM) - if !found { - continue + for _, matched := range official_climb.MatchClimbs(parsed.Coords, official, matchPolicy.EndpointRadiusM) { + claimedRanges = append(claimedRanges, ride.Range{Start: matched.StartIndex, End: matched.EndIndex}) + claimedClimbs = append(claimedClimbs, analyzedClimb(parsed, parsed.ClimbFromIndexes(matched.StartIndex, matched.EndIndex), official.Name, official.ID)) } - claimedRanges = append(claimedRanges, ride.Range{Start: matched.StartIndex, End: matched.EndIndex}) - claimedClimbs = append(claimedClimbs, analyzedClimb(parsed, parsed.ClimbFromIndexes(matched.StartIndex, matched.EndIndex), official.Name, official.ID)) } + slices.SortFunc(claimedRanges, func(a, b ride.Range) int { return a.Start - b.Start }) for _, detectedClimb := range parsed.DetectClimbs(claimedRanges, ride.ClimbSlopeMinimum) { displayClimb := detectedClimb if matchedPass, ok := mountain_pass.MatchClimb(displayClimb, passes, passMatchRadiusM, passMatchElevationToleranceM); ok { |
