[Перевод] В погоне за самим собой, или отличный способ начать свой день

c9ce32ff4e7a4febb167b26ed80534a8.png


Перевод поста Mariusz Jankowski «A Rat Race, or a Great Way to Start the Day».
Код, приведенный в статье, можно скачать здесь.
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе.
Не так давно, когда бушевала зима, расчищая подъезд к дому от завалов снега, я решил вспомнить о хорошей погоде, рассмотрев с использованием Wolfram Language свой велосипедный маршрут на работу.

В прошлом году я решил заняться такой весьма распространённой деятельностью, как запись данных своей активности. Я отметил, что за последние несколько лет мои поездки становились все быстрее и давались мне проще по мере того, как сезон приближался к концу, так что мне стало интересно удостовериться в наличии подобных улучшений своей физической формы. Используя лишь смартфон и соответствующее приложение, я записал 27 поездок между домом и работой, а затем использовал Wolfram Language для чтения, анализа и визуализации результатов.

Вот изображение с Google Earth, показывающее мой утренний велосипедный маршрут, имеющий расстояние чуть меньше 18 км, пролегающий с востока на запад.

4ea8818352da21148bea5c343a6abd17.png
Для передачи данных из смартфона я использовал GPX (GPS Exchange Format) — формат файла, поддерживаемый крупнейшими производителями GPS-устройств и доступный в большинстве приложений. Обычный файл GPX включает в себя данные о местоположении и высоте с отметками времени, и Wolfram Language возвращает эти данные в виде списка правил с говорящими названиями Geometry, PointElevation и PointTimestamp.

Вот фрагмент одного из файлов формата GPX:

dab3ef224c76391d6d797783bf636780.png

Воспользовавшись новыми функциями в сфере работы с геоданными в Wolfram Language и доступными данными о времени и положении, я смог легко и быстро создать анимацию дневной поездки (больше деталей доступно в разделе Initialization в прилагаемом CDF).

176fc2a30d2f4a2587ae1516431b45ef.jpg
ae4bc610bfc54f9b97eac7666ce0e664.gif

Ещё немного усилий, и вот кое-что интересное: я совместил все утренние поездки за сезон в рамках одной анимированной гонки — вот такие вот получились «крысиные бега» на работу! Лидер сезона показан жёлтым, конечно же!

63514a4bdea54ab38f3b082f4f9d8862.jpg
d1264969fc85467cb25a52023232b1d4.gif

Вот результаты этого «забега»:

b2c46320995d58dd9f32147008ec3179.png

Рассмотрим теперь поездки в хронологическом порядке. Получается, что моё предположение об улучшении времени поездки ближе к концу сезона и по мере увеличения пройденного километража оказалось верным.

b540705be399fbfe47e9aa0d026a7e07.png

И пусть предыдущие расчеты и визуализации достаточно хороши, но мы можем сделать нечто большее. Файлы GPX содержат данные о высоте с привязкой ко времени, однако не только это позволит легко визуализировать общий профиль дороги, но и кое-что ещё: обнаружение участков подъёма и спуска посредством нового функционала из сферы обработки сигналов — обнаружение пиков.

Начнём со стандартного профиля дороги:

e14251170e920d3972fe573f48a2dd7b.png

Чтобы определить подъёмы и спады, я сгладил данные по подъёмам чтобы фиксировать в сигнале только наиболее крупные локальные максимумы и минимумы. Для этого я сначала построил линейную интерполяцию всей функции чтобы избавиться от слишком нестабильных интервалов в записанных данных, а затем сгладил её посредством GaussianFilter.

fb72a74e02cbf684d6f9cf9970a560b1.png

Операция сглаживания убирает «паразитные» пики и спады в данных по высотам. Я определил оставшиеся крупные пики с помощью FindPeaks и разделил маршрут на восходящие и нисходящие участки.

6c62d1f0f3ea6cba741ffa493dbacf80.png

Визуализируем участки подъёмов и спусков утренней поездки на графике высот:

dfe46fb1ad3d36a7661a94be0037ab47.png

А вот несколько более полезная визуализация — участки подъёмов и спусков маршрута на карте:

318e3e7f357f4470800267418c2b7e08.jpg
650109c14fe24f64ba0e0c9f121df020.jpg

Примерные расстояния участков подъёма и спуска доступны из списков подъёмов и спусков, вычисленных ранее. Следующий результат подтверждает простую истину о том, что отправляться на работу всегда тяжелее (т. е. в гору), и, следовательно, менее приятно, чем возвращаться с неё.

6c1c9048e0a633afa286ebe3cfb266ec.png

Я уже с нетерпением жду следующего сезона и всяких интересных фактов в анализе своих данных с помощью Wolfram Language.

© Habrahabr.ru