RU:Strava

From OpenStreetMap Wiki
Jump to navigation Jump to search

Strava (Wikipedia) — сервис для отслеживания активности спортсменов с помощью мобильных устройств. Сервис включает в себя приложение для мобильных устройств, интернет-сайт, базу данных сохранённых тренировок, API для доступа к ним и другие подсистемы. Strava также позиционируется как социальная сеть для спортсменов, где они могут сравнивать свои результаты, ставить цели, общаться и т.д. Разработка сервиса ведётся компанией Strava, Inc, которая основана в 2007 году и её основной офис находится в Сан-Франциско, Калифорния.

Тепловая карта треков Стравы (Strava Heatmap)

В 2014 году Strava представила новый экспериментальный сервис - глобальную "тепловую" (сводную) карту треков, загруженных пользователями. [1] Карта изначально делится на две: карта треков тренировок бегунов и карта треков тренировок велосипедистов. Благодаря этим картам можно определить, какие места популярных у местных бегунов и велосипедистов, а какие нет.

В том же году году Strava заявила о поддержке сервисов OpenStreetMap. Во первых, было получено официальное разрешение от директора Strava Labs на использование тепловой карты для рисования карт OSM.[2]

Был даже выпущен "Slide" - форк онлайн-редактора карты ID, оснащённый дополнительным инструментарием, автоматически позволяющим более точно привязывать рисуемые дороги к линиям на тепловой карте[3][4]. Проект просуществовал до 2018 года, после чего перестал работать.[5]

В 2017 году выпущена обновлённая тепловая карта с изменённой цветовой гаммой (с сине-красной гамма сменилась на коричнево-жёлтую). Зашумление карты повысилось, однако на ней стали различимы абсолютно все попавшие на неё треки, даже единичные. Старая тепловая карта по прежнему доступна, однако её детализированность настолько уступает новой, что она более не представляет особого интереса. У карты меняется URL, все приложения, работавшие со старым вариантом тепловой карты продолжают с ней работать, новая карта - совершенно отдельный продукт.

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

В результате Strava пала жертвой собственной доблести. В декабре 2017 года на компанию обрушивается череда обвинений в раскрытии секретных и персональных данных, в частности - в том, что на тепловой карте раскрыто местоположение военных баз на территории Ирака[6], благодаря множеству треков тренирующихся со стравой бегунов из числа персонала этих баз. Через два месяца после этого Strava обновила тепловую карту и изменила её наполнение и условия предоставления. По новым правилам, карта отображает треки только поблизости от населённых пунктов, а так же только треки за последние два года. Зато обновляться карта будет каждые два месяца. Кроме того, свободный доступ к тепловой карте будет предоставляться только до зума 12 (40 метров на пиксель), а более подробные данные (максимум карта доступна до зума 16, это 2 метра на пиксель) будут отдаваться только после предварительной регистрации на сайте strava.com.

Тем не менее, разрешение на использование тепловой карты редакторами карт OSM отозвано не было, вышеуказанное было названо исключительно временными техническими трудностями.

Использование тепловой карты Стравы в редакторах ID и JOSM

Для чего нам нужна тепловая карта

Тепловая карта Стравы очень важна для использования в редакторах карты OSM по целому ряду причин.

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

Во вторых, и этот аспект использования даже важнее, тепловая карта позволяет вычислить смещение для спутниковых снимков. Известно, что хотя спутниковые снимки более-менее привязаны к местности, точность привязки всё-таки невелика и в отдельных местах картинка может быть сдвинута относительно реальности метров на 30, что сопоставимо с размером объектов, которые мы отрисовываем.

Обычно для решения этой проблемы используют базу GPS-треков, загруженных в базу OSM. Однако база треков Стравы по ряду причин многократно богаче, треков туда загружено больше и вероятность найти где-то вдали от крупных городов треки, необходимые для привязки спутникового снимка, для тепловой карты Strava выше, чем для треков из базы OSM (хотя после декабря 2017 года в малонаселённых местах тепловую карту Strava изрядно проредили, она всё ещё остаётся самым актуальным вариантом в пределах 40 километров от крупных райцентров).

Сам процесс коррекции смещения для тепловой карты и для базы треков практически одинаков: мы смотрим совпадение треков и различимых на спутнике дорог и совмещаем их так, чтобы они совпадали. Особенно удобно это делать в местах крутых поворотов и перекрёстков. Тепловая карта, как сумма множества GPS-треков - эталон (особенно там, где треков больше одного и линии устредняются). Спутниковую карту мы подгоняем по расположению к этому эталону.

Проблема авторизации

Как уже было сказано, без регистрации на сайте Strava.com доступны только масштабы до 12 включительно, что делает тепловую карту практически бесполезной для наших целей. Это создало проблему, в связи с отсутствием у редакторов карт механизма аутентификации на внешних ресурсах. Для решения этой проблемы были найдены два способа: метод подмены cookies (ручной и автоматический) и метод транзитного проксирования тайлов (когда авторизацию берёт на себя промежуточный сервер, который выступает в качестве промежуточного звена для загружаемых тайлов и берёт на себя авторизацию).

JOSM: Метод подмены cookies вручную

Метод был предложен Win Olario в ноябре 2018 года [7]

Зарегистрироваться на сайте https://www.strava.com/heatmap

Войти в инструменты разработчика в браузере => сеть. Перезагрузить страницу, выбрать любой тайл теплокарты и во вкладке куки скопировать соответствующие значения параметров Key-Pair-Id, Signature, Policy и заменить ими MYVALUE соответственно в адресе:

https://heatmap-external-{switch:a,b,c}.strava.com/tiles-auth/both/bluered/{zoom}/{x}/{y}.png?Key-Pair-Id=MYVALUE&Signature=MYVALUE&Policy=MYVALUE

В JOSM слой подключается как TMS. Выше 3-го и ниже 16-го зума тайлов нет, поэтому желательно добавить префикс-ограничение, чтобы на более крупных масштабах не сыпались ошибки об отсутствии тайлов: tms:[3,15] (см. справку о настройке TMS-слоёв в JOSM)

JOSM: Метод подмены cookies автоматически (плагин)

Почти сразу после появления метода подмены cookies, этот способ был автоматизирован участником allier-osm при помощи плагина Strava Heatmap, сделав ручной способ подмены устаревшим. [8]

Однако затем у автора этого плагина возникли сомнения в том, разрешает ли обновлённая лицензия Strava использование тепловой карты для рисования OSM, и вот уже полгода доступ к плагину закрыт, а в объявлении висит статус "Ожидаем лицензионных разъяснений от Strava".[9]

JOSM, ID: Метод транзитного проксирования тайлов

Метод был предложен в апреле 2019 года пользователем nnngrach [10] как часть совершенно другого проекта AnyGIS[11], позволяющего при помощи специального промежуточного транзитного прокси-сервера открывать всевозможные растровые карты со сложной URL-адресацией, в приложениях, понимающих только адресацию в классическом стандарте TileLayer (это приложения OSMAND, Locus, GuruMaps, Orux Maps и другие).

Промежуточный прокси-сервер переводит координаты из формата, присланного приложением в формат, в котором тайлы лежат в базе данных, и пересылает приложению запрошенный кусок карты. В случае со Strava Heatmap этот сервер просто взял на себя дополнительную задачу - автоматическую переавторизацию на сервере Strava. Технические подробности реализации подробно описаны в соответствующей статье на Хабрахабре.[12]

В качестве адреса источника карты в приложениях и редакторах карт указывается непосредственно URL этого транзитного сервера:

Для JOSM:

tms[3,16]:https://anygis.ru/api/v1/Tracks_Strava_All/{x}/{y}/{z} - тепловая карта бегунов и велосипедистов (карта может быть слишком зашумлённой в местах, где много бегунов)

tms[3,16]:https://anygis.ru/api/v1/Tracks_Strava_Ride/{x}/{y}/{z} - тепловая карта только для велосипедистов

(По поводу префикса tms[3,16]: см. справку о настройке TMS-слоёв в JOSM)

Для ID:

https://anygis.ru/api/v1/Tracks_Strava_All/{x}/{y}/{z} - тепловая карта бегунов и велосипедистов (карта может быть слишком зашумлённой в местах, где много бегунов)

https://anygis.ru/api/v1/Tracks_Strava_Ride/{x}/{y}/{z} - тепловая карта только для велосипедистов

ID: Использование Strava Heatmap для определения смещения спутниковых снимков

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

JOSM: Использование Strava Heatmap для определения смещения спутниковых снимков

Выравнивание спутниковых снимков по Strava Heatmap по ряду моментов отличается от выравнивания по загруженным GPS-трекам. GPS-треки в JOSM загружаются как векторный слой, а не как растровый. А Strava Heatmap - это типичный растровый слой, с точки зрения JOSM он ничем не отличается от обычных спутниковых снимков.

Поэтому JOSM относится к слою Strava Heatmap как к обычному растровому слою:

  • предупреждает о том, что он может быть смещён (это не так)
  • при публикации смещения, смещение сохраняется для верхнего показываемого растрового слоя (для связки "спутник+Heatmap" это будет именно Heatmap)
  • при поиске готовых смещений в базе JOSM ищет смещения для верхнего показываемого растрового слоя (для связки "спутник+Heatmap" это будет именно Heatmap)

Нужно понимать следующее:

  • Слой Strava Heatmap - это эталон позиционирования. Смещать его не нужно никогда и ни при каких обстоятельствах.
  • Слой Strava Heatmap - изначально прозрачный. По нему мы выверяем позиционирование нижележащих слоёв.
  • На время загрузки-выгрузки смещения плагином Imagery_Offset_DB необходимо временно скрывать показ слоя Strava Heatmap.

Последовательность действий по определению смещения (предполагается наличие установленного плагина Imagery_Offset_DB и вручную настроенного TMS-слоя Strava Heatmap):

  1. Добавить показ двух растровых слоёв: спутниковый слой (ниже) и Strava Heatmap (выше)
  2. Как вариант, задать слою Strava Heatmap 70%-ю непрозрачность (кнопка "Изменить видимость выбранного слоя" снизу от списка слоёв). Я сталкивался с ситуациями, когда это позволяет лучше контролировать совмещение слоёв (лучше видны границы шоссе под жирными тепловыми треками, так что расположение шоссе проще центрировать).
  3. Отключить показ всех вышележащих слоёв с данными, которые могут помешать видеть спутниковый слой и Strava Heatmap.
  4. Скрыть показ слоя Strava Heatmap (значок глаза слева от названия слоя)
  5. Попытаться загрузить смещение из интернет-базы (меню "Слои->Получить смещение снимка")
  6. Включить показ слоя Strava Heatmap (значок глаза слева от названия слоя)
  7. Если подходящее смещение было найдено, проконтролировать его по Strava Heatmap
  8. Если смещение не найдено или результат выравнивания не устраивает - приступаем к самостоятельному выравниванию.
  9. Меняя масштаб в большую и меньшую сторону осмотрите окрестности и найдите на карте ближайшее к интересующей вас местности шоссе, по которому на слое Strava Heatmap проходят треки (чем треков больше - тем лучше).
  10. Найдите на этом шоссе изгиб или перекрёсток, где тепловые треки шли бы в перпендикулярных направлениях.
  11. Войдите в режим изменения смещения спутникового слоя (правой клавишей мыши на слое, пункт "Новое смещение").
  12. Двигая левой клавишей мыши спутниковый слой под тепловой картой, добейтесь максимально симметричного размещения тепловых треков поверх шоссе на всех взаимно перпендикулярных участках. (Правая клавиша мыши по прежнему позволяет передвигаться по карте, так что вы можете проверять качество смещения на разных участках.)
  13. Выйдите из режима изменения смещения спутникового слоя (кнопка ОК диалогового окна "Настроить смещение снимка")
  14. Поздравляем, смещение установлено.
  15. Любым удобным способом (например, добавив поверх растровый слой mapnik) выясните название ближайшего топонима к месту, где вы выполняли совмещение.
  16. Отключите показ всех растровых слоёв кроме спутникового слоя для которого вы настраивали смещение.
  17. Выполните загрузку смещения в интернет-базу (меню "Слои->Сохранить смещение снимка"). При сохранении укажите название ближайшего топонима.

Поздравляем, позиционирование спутникового слоя выполнено! Можете начинать его обрисовывать.

См. также

  • Gpslib.ru - свободная библиотека GPS-треков, существует с 2007 по февраль 2019.
  • http://labs.strava.com/ - побочные проекты Strava (включая проект Strava Heatmap и другие)

Источники

  1. https://www.strava.com/heatmap [1]
  2. Guillaume Rischard: «OK to use heatmap in JOSM editor?» Paul Mach, Former Director of Strava Labs: «Feel free to use the heatmap tiles for any map editing» 13 апр. 2014 г.[2]
  3. «Сервис Slide» [3]
  4. «Презентация сервиса Slide, 2014 год» [4]
  5. Обсуждение на Github «Slide not doing anything», апрель 2018 [5]
  6. BBC «Fitness app Strava lights up staff at military bases», 29 January 2018 [6]
  7. «Making Strava heatmaps work in JOSM» [7]
  8. «JOSM plugin providing access to the high-resolution Strava heatmaps» [8]
  9. «Do we have a permission from Strava?» [9]
  10. nnngrach: «Написал скрипт, который позволяет загружать карты Strava Heatmap без заморочек с авторизацией и заменой cookie-файлов» 19 апр 2019 [10]
  11. «AnyGIS - растровые карты для смартфона» [11]
  12. Хабрахабр: «Автоматическая авторизация на карте Strava Heatmap» [12]