Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях

в 10:07, , рубрики: Runkeeper, wolfram language, wolfram mathematica, Алгоритмы, Блог компании Wolfram Research, визуализация данных, география, геоданные, Геоинформационные сервисы, геолокация, Программирование
Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 1

Перевод поста Bernat Espigulé-Pons "A Year of Runkeeper: Analysis and Visualization".
Код, приведенный в статье, можно скачать здесь, а дополнительные файлы здесь.
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе и подготовке публикации


Почти год назад я решил записывать все свои передвижения с помощью Runkeeper, и теперь хочу представить несколько вариантов визуализации моей годовой активности. Проект получается несложным: данные по своим передвижениям я буду подгружать из Runkeeper, а анализировать/визуализировать — в Wolfram Language. В этой анимации (см.ниже) показаны мои передвижения по Барселоне, и я покажу вам, как сделать такую же.

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 2

Следуя указаниям на этой странице, я экспортирую свои данные из Runkeeper. Есть и другой способ — подключить мой аккаунт в Runkeeper к Wolfram Language с помощью функции ServiceConnect. Правда, с помощью этой функции можно проанализировать всего 25 передвижений, так что на этот раз я буду экспортировать данные вручную.

Итак, в результате у меня получился ZIP-файл с парой CSV файлов, и еще — все мои ранее записанные GPX файлы. Прежде всего я сохраню ноутбук (файл Mathematica) в директории, в которой распаковал архив, а затем назначу эту директорию основной:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 3

Посмотрим теперь на первую строку файла «cardioActivities.csv»:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 4

В Runkeeper'е можно проводить сразу несколько измерений с разными элементами. Чтобы правильно интерпретировать эти величины, я использую функцию SemanticImport со следующими типами столбцов:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 5

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 6

В результате я получаю Dataset объект, который легко проанализировать. Давайте поработаем с данными:

1. Посчитаем, сколько раз и каким способом я передвигался:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 7

2. Вычислим среднее расстояние:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 8

3. Построим гистограмму всех расстояний:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 9

4. Используем функцию DateListStepPlot для визуализации средней скорости передвижения:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 10

5. Выберем путешествия длиной более 10 миль:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 11

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 12

6. Узнаем, сколько раз я залез бы на Эверест:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 13

7. Сгруппируем виды деятельности по их описанию:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 14

8. Выберем мероприятия с пометкой «Бостон» и импортируем их GPX файлы:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 15

9. Обозначим на карте точки старта для всех способов передвижения:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 16

10. И последнее, но не менее важное: используем функцию TimelinePlot для всех видов передвижения:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 17

Пока все идет хорошо. Дальше нам нужно вытащить данные из GPX файлов. Используя функции Import и GeoGraphics, построим GPS-трек, обозначив его черной линией.

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 18

Но я хочу получить еще и данные о высоте, на которой я находился, и скорости, с которой передвигался. У функции Import есть опция «Data», которая позволяет получить доступ к GPX файлу общей для Wolfram Language формы (списки, строки и т. д.):

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 19

В этом документе содержится список зафиксированных с помощью функции GeoPosition точек высоты и отметок времени. Так как меня интересуют только точки, я определил функцию, которая находит мое местоположение, и использовал функцию TimeSeries для определения высоты, на которой я находился:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 20

Данные GPX данные представляются в виде ассоциации (Association) с парой ключей:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 21

Теперь можно создать график DateListPlot, окрашенный в зависимости от значения функции (высоты).

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 22

Или воспользуемся параметром «Geometry»: используем функцию Rescale для точек подъема, а затем раскрасим GPS-трек в зависимости от высоты:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 23

Теперь, используя эти данные, можно вычислить мгновенную скорость. Сандер Хейсман (Sander Huisman), участник сообщества Wolfram Community, показал недавно, как вычислить мгновенную скорость и раскрасить GPS-трек. Ниже представлена функция, которую я определил для вычисления временных рядов мгновенной скорости из точек GeoPosition и временных рядов подъемов:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 24

А теперь вспомним предыдущий пример: DateListPlot может сказать мне, когда я делал остановку во время похода:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 25

Во время этих коротких перерывов я останавливался, чтобы сфотографировать скальные образования, вдохновлявшие самого Сальвадора Дали. Давайте составим карту этих остановок с помощью раскрашивания GPS-трека в зависимости от скорости:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 26

Теперь, когда я могу обозначать точки своего местонахождения, высоту подъема и определять мгновенную скорость движения, можно объединить все это в новый набор данных:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 27

Год назад я переехал из сельской местности в Барселону:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 28

Чтобы обозначить мои передвижения в Барселоне, я мог бы использовать функции GeoWithinQ или GeoDistance, но сейчас эти функции не понадобятся: я сделал пометки к моим передвижениям по городу:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 29

Сначала я хочу убедиться, что все мои передвижения будут обозначены на черно-белой единообразной карте без пометок, и затем нанесу на карту свои передвижения с помощью функции GeoGraphics. Для этого я добавил дополнительные опции GeoStyling для GeoBackground, чтобы сделать фон серых оттенков. Я также добавил GeoScaleBar и ограничил отрезок на карте с помощью функции GeoRange:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 30

По-моему, выглядит неплохо. Нанесем на карту все зафиксированные передвижения:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 31

Я покрыл почти весь город! Если бы я наносил на карту только начальные (желтые) и красные (конечные) точки, стало бы понятно, где я живу. В большинстве случаев я добирался из одной точки в другую, используя city’s bicycle-sharing system:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 32

Давайте теперь построим маршрут, который позволит за кратчайшее время снова посетить все эти места:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 33

Чтобы посетить их все, понадобится проехать (пройти) около 170 км:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 34

Неплохо, если сравнить с тем, сколько у меня набегает за год:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 35

Что еще я заметил, пользуясь Runkeeper'ом на протяжении года: мой путь из точки А (дом) в точку Б (центр капойэра) постоянно меняется. Дело в том, что я еще не уверен, что добираться туда на велосипеде лучше всего. Функция TravelDirections поможет посмотреть на данные по-новому:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 36

Нарисуем «TravelPath» для трех различных значений метода передвиженияTravelMethod«Biking» (на велосипеде) (зеленый), «Walking» (пешком) (синий), и «Driving» (за рулем) (красный); однако здесь изображен не только простой способ добраться из точки А в точку В:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 37

Функция TravelDistance сообщает нам, что путь «Пешком» — самый короткий:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 38

Однако этот путь проходит через центр Барселоны — Ciutat Vella (старый город), который представляет собой лабиринт средневековых улиц с ограничениями для пешеходов, так что мне понадобится целый час, чтобы добраться из точки А в точку Б. Функция TravelTime показывает, что путь «На велосипеде» быстрее:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 39

Надо сказать, что за этот год я испробовал различные способы добраться до точки B на велосипеде. Мой фаворит сейчас — путь «за рулем», обозначенный красным цветом:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 40

Давайте теперь построим графики всех 55 поездок, окрашенные в соответствии с временем в пути.

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 41

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 42

Синие/зеленые дорожки ближе всего к варианту «Пешком», и похоже, что это самые короткие пути в точку B. Мой рекорд — около 13 минут:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 43

Среднее время в пути близко к предсказанному функцией TravelDirectionsData:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 44

С помощью этих данных я могу путешествовать во времени по всему прошедшему году. В следующих своих статьях, посвященных GeoGraphics, я собираюсь раскрасить GPS-треки в соответствии со скоростью передвижения и добавлю даты для каждого вида передвижения с помощью функции Tooltip:

Год с Runkeeper: Анализ и визуализация геоданных о ваших путешествиях - 45

А теперь можно взять каждый каждый из вариантов передвижения по отдельности и анимировать все мои поездки и походы по Барселоне за год.

Код для создания анимации доступен в конце этой статьи в формате CDF. Предлагаю использовать его для анализа ваших данных из Runkeeper. Нужно больше идей? Обратите внимание на статью (ссылка на перевод, опубликованный на Хабре) "В погоне за самим собой, или отличный способ начать свой день".

По вопросам о технологиях Wolfram пишите на info-russia@wolfram.com

Автор: Wolfram Research

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js