Two ways a lift shows up in a recording
Some devices stop counting distance on a lift, so the distance stands still while the elevation and the GPS position move. Others keep counting, and then a lift is a climb that looks like no ride: steep, steady, fast and in a straight line. The code looks for both, joins pieces that belong together, and runs the search again where the altimeter froze.
- Distance standing still while you climb or drop and travel.
- Follow every climb and find where it starts and ends.
- Check that it's a straight, steep, steady climb, with special care across gaps in the recording.
- Split climbs at stations where you change lifts.
- Join pieces broken up by the altimeter or GPS jittering.
- Search again on the corrected elevation where the altimeter froze.
Distance standing still
LIFT_MINIMUM_CLIMB_M 100 mLIFT_MINIMUM_TRAVEL_M 200 mLIFT_MINIMUM_DURATION_S 60 sWherever the distance doesn't change from one sample to the next, the code looks at the whole stretch where it stands still. That stretch is a lift when all three hold: the elevation ends at least 100 m higher or lower, the GPS position ends at least 200 m away in a straight line, and it lasts at least a minute.
Each rule rules something out. Without travel, it's the altimeter settling after the start or drifting during a pause. With less climb, it's a gap in the recording while you rode on. Shorter than a minute, it's an altimeter glitch. Standing still at the very start of the recording never counts, since that's GPS and the altimeter settling.
This rule found lifts on 19 of the 54 rides that have lifts.
Following each climb
CLIMB_DIP_TOLERANCE_M 5 mLIFT_FLAT_START_M 10 mLIFT_LONG_LENGTH_M 1'000 mWhere the device keeps counting distance, the code walks the ride from sample to sample. From each sample it follows the climb while the elevation keeps rising. Dips of up to 5 m don't end it, since a lift's altimeter jitters too. The climb's top is its highest sample, and its bottom is where it was last lowest before that.
A climb is first tested from that bottom. If that fails, it's tried again from where it first gets 10 m higher, but only when at least 1 km of climb is left. This drops a flat approach to the lift (riding to the valley station) that would make the climb look too winding or too gentle. A shorter steep climb after riding on the flat is ridden, so it doesn't get this second try.
The straight-climb test
A climb from bottom to top is a lift only if it passes every one of these checks, in this order. Lengths and straightness go by the GPS track, with each position replaced by the median of the 9 around it, so a stray fix doesn't bend the line.
| Check | Rule | Rules out | 2 crevaisons, lift 1 | a wee bit of ascending |
|---|---|---|---|---|
| Climb | ≥ 100 m | small climbs | 706 m | 188 m |
| Length | ≥ 500 m | short steep pushes (unless the ride starts on the lift, see below) | 2'216 m | 2'963 m |
| Grade | 20 to 50 % 15 % if ≥ 1 km | ridden climbs (gentler), altimeter jumps (steeper) | 32 % | 6 % ✕ |
| Speed up | ≤ 300 m/min | altimeter jumps | 61 m/min | · |
| Speed while recording | ≥ 15 m/min | pushing or slow riding (pauses don't count) | 61 m/min | · |
| Duration | ≥ 60 s | glitches | 11 min 34 | · |
| Gaps | see below | pushing while the recording paused | none | · |
| Straightness | ≥ 75 % | roads and trails that wind | 95 % | · |
| Legs | ≤ 3 | climbs that zigzag (a mid-station is fine) | 1 | · |
| Terrain model | ≥ 100 m and the minimum grade | the altimeter climbing over flat ground | 698 m | · |
Straightness is the straight-line distance from bottom to top divided by the distance along the track. Legs are the straight lines left when the track is simplified with a tolerance of 30 m, or 5 % of the bottom-to-top distance when that's more.
Rides that start on a lift
When the climb starts within 100 m of the ride's start, there's no minimum length. You may have started recording on the lift, so only its last part is in the ride.
Climbs across gaps in the recording
PAUSE_AFTER_S 30 sLIFT_GAP_MINIMUM_CLIMB_RATE 8.5 m/minLIFT_RECORDED_LENGTH_M 250 mLIFT_RECORDED_SHARE 40 %Devices often stop recording on a lift, or pause while you push the bike, so a climb can be a straight line between two samples many minutes apart. Seen from the track alone, both look the same. Two rules tell them apart:
- The gap must climb fast enough. When the longest gap (over 30 s) holds at least half of the climb, it must rise at least 8.5 m per minute. Pushing a bike up climbs at most about 500 m an hour.
- What was recorded must be steep too. When at least 250 m and 40 % of the climb were recorded closely, that part alone must meet the minimum grade, not only the straight line across the gap.
Stations between lifts
LIFT_STOP_CLIMB_M 30 mLIFT_STOP_TURN_DEGREES 15°TURN_STRETCH_M 300 mTaking two lifts in a row makes one long climb. The code splits it at stops: pauses of more than 30 s, inside a closely recorded stretch, that rise less than 30 m. A stop splits the climb only if the way turns there by at least 15°, comparing the 300 m before with the 300 m after. Going on in the same direction, it's one lift standing still for a while.
Each piece is then tested on its own, and the result depends on how many pieces are lifts:
- Two or more: those pieces are the lifts.
- One: it counts only if the whole climb is a lift too. Otherwise the rest is riding, and a short steep piece after a stop is ridden as well.
- None: the whole climb is tested, in case it's one lift that stopped on the way.
Joining lift pieces
LIFT_GLITCH_GAP_S 15 sLIFT_JOIN_GAP_S 30 sThe altimeter or GPS jittering on a chairlift can end a climb early (a dip of more than 5 m), and the rest is found as a second piece. Lift pieces at most 15 s apart are always joined. Up to 30 s apart, they're joined when the second goes on in the same direction (it turns less than 15°). Otherwise it's the next lift, right after the first.
Lifts where the altimeter froze
A frozen altimeter doesn't climb on a lift, so the straight-climb test can't see it. When the elevation correction had the terrain model stand in anywhere on the ride (see the Elevation corrections page), the build runs steps 2 to 5 again on the corrected elevation, keeps the lifts it already had, and joins everything once more.