Strava metro что это

Обновлено: 01.05.2024

Strava — это приложение для спорта, бегунов и велосипедистов. Оно использует GPS-датчик фитнес-трекеров или телефонов и следит, сколько человек пробежал в день, как высоко поднялся, насколько быстро бежал, а также показывает пройденный маршрут на карте. В ноябре разработчики приложения собрали маршруты всех пользователей в одно место и построили по ним мировую карту. На ней видно, где люди часто бегают (жирные оранжевые линии), где не бегает почти никто (тонкие красные линии), по каким дорогам люди ходят и ездят.

Глобальная теплокарта Strava: теперь в 6 раз горячее

Рад объявить о первом крупном обновлении глобальной тепловой карты в Strava Labs c 2015 года. Это обновление включает в себя в шесть раз больше данных, чем раньше — в сумме 1 миллиард активностей со всей базы Strava по сентябрь 2017 года.

Наша глобальная теплокарта — самая крупная и подробная, и это самый прекрасный в мире набор данных такого рода. Это прямая визуализация активностей глобальной сети атлетов Strava. Чтобы дать представление о масштабе, то новая теплокарта включает в себя:

  • 1 миллиард активностей
  • 3 триллиона точек долготы/широты
  • 13 триллионов пикселей после растрирования
  • 10 терабайт исходных данных
  • Общая дистанция маршрутов: 27 миллиардов километров
  • Запись общего времени активности: 200 тысяч лет
  • 5% земной суши покрыто тайлами

Теплокарты уже доступны на Strava Labs и Strava Route Builder. Остальная часть статьи посвящена более подробному техническому описанию этого обновления.

Предыстория

Обновлению теплокарты препятствовали две технические проблемы:

  • Предыдущая версия теплокарты написана на низкоуровневом C и спроектирована для работы только на одной машине. С учётом этого ограничения обновление теплокарт заняло бы месяцы.
  • Для доступа к данным потоков требуется по одному запросу S3 на каждую активность, поэтому чтение входных данных для миллиарда активностей стоило бы тысячи долларов и им было бы сложно управлять.

В других частях этой статьи детально описывается, как работает каждый этап задачи Spark по созданию теплокарты, а также описываются конкретные улучшения рендеринга.

На платформе действуют многочисленные ограничения для защиты приватности, которые нужно соблюдать:

  • Приватные активности сразу исключаются из обработки
  • Площади активностей обрезаются в соответствии с установленными пользователем зонами приватности
  • Из обработки полностью исключаются данные атлетов, которые отключили функцию Metro/теплокарты в настройках приватности

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




Сравнение рендеринга до (вверху) и после (внизу) добавления искусственного шума для устранения артефактов с устройств, которые корректируют данные GPS в соответствии с координатами ближайшей дороги.

Многие устройства (в первую очередь iPhone) иногда «исправляют» сигнал GPS в жилых районах, привязывая его к известной геометрии дорожной сети, а не к реальным координатам. Это приводит к неприглядному артефакту, когда на некоторых улицах ширина теплового пути составляет всего один пиксель. Сейчас мы исправляем это, добавляя случайное смещение (из нормального распределения шириной два метра) по всем точкам каждой активности. Такой уровень шума достаточен, чтобы подавить артефакт без заметного размытия других данных.

Мы также исключаем любые «виртуальные» активности типа велогонок Zwift, потому что они включают в себя фальшивые данные GPS.

Тепловая растеризация

После фильтрации координаты широты/долготы всех точек передаются в Web Mercator Tile на уровне зума 16. Этот уровень представляет собой мозаику мира из 2 16 ×2 16 тайлов, каждый размером 256×256 пикселей.

Старая теплокарта растрировала каждую точку GPS точно в один пиксель. Такой подход часто был помехой, потому что активности записываются с максимальной скоростью одна точка данных в секунду. Из-за этого часто возникают видимые артефакты в областях с низкой активностью: скорость записи такова, что появляются пробелы между пикселями. Вдобавок появляются отклонения в областях, где движение атлетов замедляется (сравните подъём в гору со спуском). Поскольку на новой теплокарте появился дополнительный более подробный уровень зума (максимальное пространственное разрешение увеличено с 4 до 2 метров), проблема стала ещё более заметной. Вместо старого алгоритма новая карта отображает каждую активность как идеальный пиксельный маршрут, который объединяет непрерывные GPS-точки. В среднем длина сегмента между двумя точками на 16-м уровне зума составляет 4 пикселя, так что изменение очень заметное.

Чтобы добиться этого в параллельных вычислениях, нужно обработать случай, когда соседние точки маршрута относятся к разным тайлам. Каждая такая пара точек обрабатывается повторно, чтобы включить промежуточные точки вдоль линии маршрута на границе каждого тайла, который он пересекает. После такой обработки все отрезки прямой начинаются и заканчиваются на одном и том же тайле или имеют нулевую длину и могут быть пропущены. Таким образом, мы можем представить наши данные как прямые произведения (Tile, Array[TilePixel]), где Array[TilePixel] — это непрерывная серия координат, которая описывает маршрут каждой активности внутри тайла. Набор данных затем группируется по тайлам, так что все данные, необходимые для отрисовки каждого тайла, сопоставляются с одной машиной.

Каждая последовательная пара пикселей в тайле затем растрируется как отрезок прямой при помощи алгоритма Брезенхэма. Этот этап отрисовки отрезка должен быть исключительно быстрым, поскольку он запускается триллионы раз. Сам тайл на данном этапе — просто массив Array[Double](256*256), представляющий собой общее количество отрезков, включающих в себя каждый пиксель.


Сравнение рендеринга показывает преимущества растрирования путей поверх точек и добавления дополнительных данных. Место: вулкан Бачелор, Орегон.

На самом крупном зуме мы заполняем более 60 миллионов тайлов. Это представляет проблему, потому что прямое хранение в памяти каждого тайла в виде двойных массивов потребует минимум 60 миллионов × 256 × 256 × 8 байт =

30 терабайт памяти. Хотя такой объём памяти можно выделить во временном кластере, это будет излишней тратой ресурсов с учётом того, что тайлы обычно допускают сильное сжатие, ведь основная часть значений пикселей равна нулю. По причинам производительности мы решили, что разреженный массив не будет эффективным решением. В Spark можно сильно уменьшить максимально необходимый объём памяти, если организовать на этом этапе параллелизм, который во много раз больше, чем количество активных задач в кластере. Тайлы с завершённой задачи немедленно преобразуются, сжимаются и записываются на диск, так что в каждый данный момент в памяти в несжатом виде хранится только набор тайлов, соответствующий активному набору задач.

Тепловая нормализация

Нормализация — это функция, которая сопоставляет исходное значение тепла для каждого пикселя после растрирования из неограниченной области [0, Inf) с ограниченной областью [0, 1] цветной карты. Выбор способа нормализации в огромной степени влияет на то, как выглядит теплокарта. Эта функция должна быть монотонной, чтобы бóльшие значения соответствовали более сильному «теплу», но существует много способов подойти к данной проблеме. Если применить единую функцию глобализации ко всей карте, то тогда цвет для максимального уровня тепла отобразится лишь в самых популярных районах Strava.

Метод гладкой нормализации (slick normalization) предусматривает вычисление CDF (функции распределения) для исходных значений. Таким образом, нормализованным значением данного пикселя будет процент пикселей с низшим уровнем тепла. Такой метод обеспечивает максимальный контраст, гарантируя одинаковое количество пикселей каждого цвета. В фотообработке эта техника называется выравниванием гистограммы. Мы используем её с небольшими изменениями, чтобы избежать артефактов квантования в малопосещаемых областях.

Вычисление CDF для исходных значений тепла только в одном тайле на практике даст не очень хороший результат, потому что на экран обычно выводится карта размером минимум 5×5 тайлов (каждый по 256×256 пикселей). Поэтому мы вычисляем общий CDF для тайла, используя его значения тепла и значения соседних областей в радиусе пяти тайлов. Это гарантирует, что функция нормализации может изменяться только в масштабе больше, чем размер обычного экрана для просмотра.

В реальных вычислениях ради производительности используется приблизительная CDF: для этого просто сортируются входные данные, откуда берётся некоторое количество образцов. Мы установили, что лучше вычислять смещённую CDF, забирая больше образцов ближе к концу массива. Это потому что в большинстве случаев интересные данные по теплу содержатся лишь в небольшой части пикселей.



Сравнение методов нормализации (слева: старый, справа: новый) на зуме 33%, чтобы лучше рассмотреть эффект. Новый метод гарантирует видимость на одном изображении любого диапазона исходных данных по теплу. Вдобавок, билинейная интерполяция функции нормализации между тайлами предотвращает любые видимые артефакты на границах тайлов. Место: область залива Сан-Франциско.

Преимущество такого подхода в том, что на теплокарте идеально равномерное распределение по цветам. В некотором смысле это приводит к тому, что теплокарта передаёт максимальную информацию об относительных значениях тепла. Мы также субъективно считаем, что выглядит она по-настоящему красиво.

Недостаток этого подхода в том, что теплокарта теперь не соответствует абсолютным количественным значениям. Один и тот же цвет соответствует одному и тому же уровню тепла только на локальном уровне. Поэтому для государственных органов, департаментов планирования, безопасности и транспорта мы предлагаем более сложный продукт Strava Metro с точной количественной версией тепловой карты.

Интерполяция функций нормализации через границы тайлов

До сих пор мы использовали функцию нормализации для каждого тайла, которая представляет собой CDF пикселей в рамках нескольких соседних тайлов. Однако CDF по-прежнему скачкообразно изменяется на границах тайлов так, что выглядит как некрасивый артефакт, особенно в областях с большим градиентом абсолютного тепла.

Для решения этой проблемы мы применили билинейную интерполяцию. Реальное значение каждого пикселя выводится из суммы билинейных коэффициентов четырёх ближайших соседних тайлов: max(0, (1-x)(1-y)), где x, y — это расстояния от центра тайла. Такая интерполяция требует больше вычислительных ресурсов, потому что для каждого пикселя нужно оценить четыре CDF вместо одного.

Рекурсия по уровням зума

До сих пор мы говорили только о генерации тепла на одном уровне зума. При переходе на другие уровни исходные данные просто складываются — четыре тайла сливаются в один с разрешением в четверть от исходного. Затем запускается заново процесс нормализации. Это продолжается до тех пор, пока не достигнут последний уровень зума (один тайл для всего мира).

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


Зуммирование с одного тайла в Лондоне (Великобритания) на весь мир

Выдача

В результате нормализованные данные по теплу для каждого пикселя занимают один байт, потому что мы отображаем значение на цветовой карте, и значение тепла входит в массив из 256 цветов. Эти данные хранятся в S3, с группировкой соседних тайлов в один файл для уменьшения общего количества файлов на хостинге. В момент запроса сервер забирает и кэширует соответствующий метатайл с S3, затем на лету генерирует PNG по исходным данным и запрашиваемой цветовой карте. Затем наш CDN (Cloudfront) кэширует все изображения тайлов.

Также сделаны различные обновления фронтенда. Теперь мы перешли на Mapbox GL. Благодаря этому стало возможным плавное зуммирование, а также управление причудливыми поворотами и наклонами. Надеемся, что вам понравится изучать эту обновлённую тепловую карту.

Что не так с этой картой

Разработчики собирали данные всех пользователей и не разобрались, кому они принадлежат. Оказалось, что по карте можно найти военные базы США в Афганистане, Сирии, Нигере и других странах. Те же военные базы можно найти и на Google Maps, но карта Strava сообщила всем, где именно были люди (на карте данные 2015–2017 годов) и где они ходили чаще всего. Злоумышленники могут использовать эту информацию для нападения. Кроме того, на карте Strava были объекты, которых не может быть на обычной карте Google, например, подводные и подземные. Угроза безопасности из‑за простого приложения не понравилась военным, и они решили написать обучающий курс о том, что не нужно делать с личными данными на службе.

Настройка в OsmAnd карты слоя Strava heatmap

В приложении OsmAnd для телефонов на операционной системе android есть возможность добавления дополнительных слоев на карты OSM (Open Street Map). Полезным дополнением для вашей навигационной системы будет слой Strava heatmap, результат записанных во время путешествий и тренировок треков бегунов, велосипедистов, пловцов. Визуализация этих данных позволяет при навигации найти с одной стороны наиболее популярные маршруты, выделенные внушительными полосами, так и определить проходимость или проезжаемость участка на местности по тонким нитям одиночных треков.

С 2018 года Strava labs в свободном доступе предоставляет только тейлы низкого разрешения. Произошло это, по всей видимости, для “обеспечения безопасности” в ответ на публикации о массовом рассекречивании местоположения тренировок пользователей.

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

Приведу пример. На снимке карты экрана телефона видно, что спуск по тропе вниз с горы Ахун к Агурским водопадам (1) — это достаточно популярный пеший и вело (внимание, только для велоэкстремалов!) маршрут. А вот преодолеть склон 1.5 км от дороги к вершине Ахуна к каньону Чертовы ворота (2) на реке Хосте, конечному пункту Тисо-самшитовой тропы (3), при всей соблазнительности такой прогулки вряд ли получится. При приближении карты будет видно по одиночным трекам, что попытки такого очевидного челленджа были, но все закончились неудачно.


Подключение OsmAnd Strava heatmap в низком разрешении

Разберем как настроить слой Strava heatmap на вашем смартфоне. Для подключения heatmap в OsmAnd в низком разрешении создаем новый источник для слоя (Меню -> Настроить карту -> Источник карты -> Задать/отредактировать. )

Называем новый слой, например, HeatMap cycling (не детальная)
Задаем URL для скачивания тейлов:


Подобрать подходящее представление слоя в OsmAnd можно переключая настройки на карте Strava.


Для пешего туризма, например, настроить палитру bluered, а для велосипеда hot и переключать в зависимости от вашего путешествия. Различия у этих “хитмапов” минимальны, но иногда и эти различия важны. Там где, есть горная тропа и можно пройти, не всегда можно проехать.

Настройка детального слоя Strava heatmap

*Значения zoom, x и y при использовании карты OsmAnd подставляются автоматически.
Подробнее о параметрах координат тайлов карт Google здесь.

Пример значения поля Front-Policy для добавления в URL.


Кроме того, есть вариант, избавляющий от необходимости раз в 2 недели заменять cookie в приложении. В статье по ссылке описано решение для автоматического формирования авторизованного запроса для детальных слоев. Автоматическая авторизация на карте Strava Heatmap. В англоязычном интернете я, кстати, подобного не нашел.

Возможно кто-то предложит и другие варианты для авторизованного запроса к картам Strava Heatmap, например, на основе самого OSMAnd. Напишите об этом в комментариях.

Установите регулировку прозрачности карты покрытия, с помощью этого ползунка можно настроить оптимальный вид карты.

Пользователи обнаружили, что сервис Strava по умолчанию показывает, кто с кем бегал


Популярный сервис для спортсменов Strava недавно обновил свою функциональность. Приложение для бега и езды на велосипеде теперь по умолчанию раскрывает данные пользователей, которые во время тренировки находились поблизости. Незнакомые друг другу спортсмены теперь могут видеть, кто с кем бегал или катался. Этот момент вызвал обеспокоенность среди пользователей сервиса. Многие спортсмены считают, что их конфиденциальность оказалась под угрозой, а эта функция может быть использована для незаконного преследования и даже в «хищнических» мотивах.

Вот что про эту функцию Strava рассказал один из спортсменов — Эндрю Сьюард (Andrew Seward), руководитель отдела разработки информационных продуктов в компании Experian.

(1/2) Out running this morning on a new route and a lady runs past me.

«Сегодня утром бежал по новому маршруту, и мимо меня пробежала леди. Когда я пришел домой, то Strava автоматически отметила ее во время моего пробега. Если я нажимаю на иконку с ней в приложении, то мне отображается ее полное имя, фотография и карта ее бегового маршрута, по которой можно понять, где она живет», — написал Сьюард в Twitter.

Оказалось, что в настройках приватности инструмента Flyby от Strava теперь по умолчанию стоит галочка, разрешающая видеть информацию о пользователе другим спортсменам, если они пробегут мимо или пересекут его маршрут движения.


Галочка стоит на пункте, что данные пользователя можно видеть «Всем» (Everyone).


Для деактивации этой функции пользователю нужно выставить галочку на «Никому» (No One).

Представители Strava не прокомментировали данную ситуацию. Однако, некоторые пользователи рассказали, что с 21 сентября сервис начал уведомлять о том, что им нужно проверить и по необходимости изменить свои настройки приватности в приложениях Strava.

Note that since you posted this, Strava put a link in my feed allowing me to adjust my privacy settings. Hopefully this link was for all users. more than just me.

— Charlie Brown (@Charlie98022) September 20, 2020

Социальная сеть для спортсменов Strava уже несколько лет предоставляет доступ всем желающим к карте, где отображаются маршруты людей с фитнес-трекерами. Эта карта называется Global Heat Map. При помощи данных о местоположении пользователей фитнес-трекеров (это, в основном, GPS координаты) сервис демонстрирует маршруты владельцев этих устройств.

Ранее в начале 2018 года пользователи обнаружили, что с помощью сервиса Strava можно обнаружить расположения секретных объектов США.

Читайте также: