Ты финишировал. Часы говорят: набор 2 640 метров. Загружаешь ту же запись в Strava — там 2 280. Открываешь сайт гонки — организатор обещал 2 500. Три числа, одна гонка, одни и те же горы.
Первый инстинкт — найти виноватого. Часы завысили, Strava занизила, организатор посчитал по-своему. Инстинкт понятный, но подсказывает он неправильно. Никто не наврал.
Правда неудобнее: единственно верного набора высоты не существует. Это свойство самой измерительной задачи — и его стоит понять один раз.

01Задача без правильного ответа
Есть классический вопрос из географии: какова длина береговой линии Британии? Ответ зависит от линейки. Меряешь по карте с шагом в сто километров — получаешь одно число. Берёшь шаг в километр — линия «вырастает»: появляются бухты и мысы, которых крупная линейка не видела. Шаг в метр — ещё длиннее. Предела нет: чем мельче линейка, тем длиннее берег.
Набор высоты — та же задача, поставленная вертикально. Трасса не поднимается ровной линией: она вся в мелких скачках — двухметровый взлёт на камень, метровый спуск с него и ступенька из корней. Считать ли их? Если считать всё, что видит сантиметровая линейка, набор уходит в бесконечность вместе с длиной британского берега. Если сглаживать — вопрос только в том, насколько. И каждый выбор даёт своё число.
И это не только красивая аналогия — то же самое прямо измерили на велосипеде. В работе 2010 года физик Деннис Рапапорт взял одну запись 42-километрового холмистого маршрута и обсчитал её с разной силой сглаживания. Итоговый набор высоты по одному и тому же треку — от 680 до 1 410 метров, больше чем вдвое, — менялся только от того, насколько сильно сгладить кривую. Его вывод дословно: вопрос, какая из оценок «правильная», — «как и при измерении берега Британии — не имеет единственного ответа».
У нас есть и свой такой опыт. Один и тот же GPX-файл гонки Igualeja Trail даёт в нашем движке от 1 419 до 1 658 метров набора — меняется только масштаб сглаживания, файл не меняется вовсе.

02Чем вообще меряется высота
Прежде чем сервисы начнут спорить о сглаживании, высоту надо откуда-то взять. Источников три, и по качеству они сильно различаются.

GPS. Спутники хорошо определяют, где ты, и заметно хуже — на какой ты высоте: вся спутниковая геометрия работает против вертикали, потому что спутники видны только сверху. Garmin в собственной документации оценивает точность GPS-высоты в ±120 метров — и это не про слабый сигнал, а типичная величина. Это не мелочь, которая теряется в округлении: каждая точка трека может гулять на десятки метров.

Барометр. Часы поприличнее меряют высоту по давлению воздуха — и это в десятки раз точнее: по спецификации Garmin, ±3 метра при стабильной погоде и правильной калибровке, ±15 метров при обычной жизни. Но у барометра свой характер: пришёл грозовой фронт — «высота» поплыла, хотя ты стоишь на месте; резко потеплело — калибровка уехала.
Цифровая модель рельефа (DEM). Можно вообще не верить прибору, а спросить у карты: «какая высота в этой точке Земли?» Мы в Pacevine используем Copernicus GLO-30 — модель рельефа, снятую радаром с орбиты и официально выверенную по лазерным измерениям со спутника: официально заявленная точность Copernicus GLO-30 — порядка 4 метров по вертикали (LE90), а на практике, там где её проверяли отдельно, часто 2–3 метра. Для сравнения, у старой карты SRTM, на которой до сих пор сидят многие сервисы, заявленная точность — 16 метров.
Уже здесь три источника дадут три числа. Но точность отдельной точки — только половина дела: даже идеально точный барометр завысит сумму, если складывать каждое микроколебание. Настоящий разброс создают не столько источники, сколько фильтры, о которых — дальше.
03Невидимые пороги: у каждого сервиса своя линейка
Сырой трек шумит. Любой сервис обязан этот шум как-то отфильтровать — и каждый делает это по-своему и молча.
Strava пишет прямо в своей документации: подъём засчитывается, только если он продолжается больше 2 метров подряд для треков с барометром — и больше 10 метров для треков без него. ITRA, которая сертифицирует трейловые гонки, накладывает своё сглаживание со скользящим порогом 3 метра — поверх того, что уже сделали твои часы. А организаторам гонок ITRA отдельно предписывает записывать трек с шагом «одна точка на 10 метров дистанции», потому что запись «раз в секунду» даёт разную плотность точек в зависимости от скорости.
В нашем движке тоже есть свой параметр — мы сглаживаем профиль окном и режем трассу на сегменты с гистерезисом 18 метров: изменение высоты засчитывается, только если его не «съедает» колебание меньше 18 метров вверх-вниз. Число другое, потому что задача другая: нам нужен профиль, по которому можно раскладывать темп (пейсить), а не самая подробная запись каждой кочки.
Заметь, что здесь нет злого умысла и нет «правильного» порога. Есть инженерный выбор, который каждый сделал по-своему — и который почти никто не показывает пользователю. Один и тот же файл, пропущенный через Strava, ITRA и часы, обязан дать три числа. Он и даёт.

04Откуда число у организатора
Похоже, что число на сайте гонки чаще всего родом из совсем другого конвейера: его посчитали один раз при проектировании маршрута — в картографической программе, по другой карте высот, иногда годы назад — и с тех пор не сверяли ни с чьими часами. Если гонка сертифицирована ITRA, её D+ пересчитан по описанной выше методике из GPX организатора; если нет — это может быть что угодно, вплоть до числа из головы дизайнера трассы.
Поэтому ожидать, что твои часы совпадут с сайтом гонки, просто не из чего: это два разных измерения, снятых разными инструментами и по разным правилам.
05Что с этим делать
Один раз принять: набор высоты — это не абсолютная величина, а результат при выбранном методе подсчёта. Спрашивать «сколько тут набора?» без уточнения метода — как спрашивать «сколько длится фильм?» не уточняя, с титрами или без.
Практические следствия простые:
Сравнивай сравнимое. Свои тренировки между собой — можно: один и тот же прибор и один и тот же метод подсчёта. Своё число с чужим — только понимая, что расхождение в 10–20% на горном рельефе — это норма, а не чей-то обман.
Для планирования важнее профиль, чем итог. Итоговое D+ — одна строчка для афиши. Пейсинг строится на форме профиля: где подъёмы, какой крутизны, в каком порядке. Форма профиля устойчивее к выбору метода, чем сумма.
Требуй метода, а не числа. Сервис, который показывает набор высоты и не говорит, как посчитал, — показывает число, которое не с чем сравнить и нельзя перепроверить.
Мы в Pacevine из-за этого устроены так: заглавное D+ курса считается от цифровой модели рельефа (Copernicus, те самые 2–3 метра точности на практике), а не от трека твоих часов, где мелкий шум складывается в завышенную сумму; пейсинг считается по сглаженному профилю — тому, по которому реально бежится; и метод описан открыто, вот прямо в этой статье. Совпадать с цифрой организатора наше число не обязано. Оно обязано быть воспроизводимым — и объяснимым.
Три числа на финише — это не три версии правды. Это три линейки. На деле разных чисел может быть даже больше трёх — ровно по числу использованных методов. Теперь ты знаешь, чем они отличаются.

Построй план своей гонки
Загрузи GPX — сегменты, темп по каждому и время на пунктах за полминуты
Источники
- Rapaport D.C. Evaluating cumulative ascent: Mountain biking meets Mandelbrot. arXiv:1011.4778, 2010.
- Garmin Support. Elevation Accuracy of Devices With Barometric Altimeters.
- Strava Help Center. Elevation on Strava FAQs.
- ITRA. Provide a high-quality GPS track.
- ESA/DLR. Copernicus DEM Product Handbook, v5.0, 2022.
- USGS EROS. SRTM Mission Summary.