Classifying Types of Climbing (Walking, Lift Access, etc.)

You could try create custom activity fields to compute these things. This one calculates “Hike ascent time” (total time doing power hike in trail run):

{
  let time = icu.streams.time
  let alt = icu.streams.fixed_altitude
  let cadence = icu.streams.cadence
  // https://forum.intervals.icu/t/elevation-gain-off/8463/16
  let threshold = 1.2
  let totSecs = 0.0
  let prev = 0
  let maxDeltaTime = activity.icu_median_time_delta ? activity.icu_median_time_delta * 2 : 0
  if (maxDeltaTime < 30) maxDeltaTime = 30
  let prevAlt = alt[0]
  let prevTime = 0
  for (let i = 1; i < alt.length - 1; i++) {
    let t = time[i]
    if (t == null) continue
    let deltaTime = t - prev
    if (deltaTime <= maxDeltaTime) {
      let v = alt[i]
      if (v != null) {
        if (prevAlt != null) {
          let delta = v - prevAlt
          if (Math.abs(delta) >= threshold) {
            if (delta > 0.0 && cadence[i] <= 69) totSecs += t - prevTime
            prevAlt = v
            prevTime = t
          }
        } else {
          prevAlt = v
        }
      }
    } else {
      prevAlt = alt[i]
      prevTime = t
    }
    prev = t
  }
  totSecs
}
1 Like