Создание текстовой легенды маршрута на сайте GPSies

Статьи, посвящённые ремонту, модернизации и эксплуатации велокомпонентов, а так же обзоры качества и особенности их работы.
Модераторы: KoNA, Bio, Solid

Сообщениеkirill-k2 » 08.10.2013, 03:12


Так уж сложилось, что для хранения и управления своими треками я пользуюсь сайтом GPSies.com. Недавно на сайте появилась новая фича для генерации путевых точек на ключевых поворотах по треку (функция "Add cue sheet" - доступна в режиме редактирования трека).

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

Скрипт написан для Greasemonkeyи работает в Firefox (как минимум в 24-й версии).
Сам скрипт выложен на пастбин (скачать сразу).

Выглядит это все примерно так:
Изображение

Подробная инструкция по установке и использованию - на странице блога.

P.S. Отдельная благодарность выражается xyzzy за исходную идею, описанную тут: Re: Краснодарские бреветы
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Последний раз редактировалось kirill-k2 17.03.2015, 00:27, всего редактировалось 5 раз(а).
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


Сообщениеxyzzy » 08.10.2013, 22:11


Кирилл, отличная идея с Greasemonkey. Так действительно будет намного удобнее.

Но описанный способ в общем случае, когда расстояние между точками трека может быть произвольно большим, будет очень сильно врать по поводу расстояния. Вот пример трека с путевой точкой в районе 2 км для которой скрипт показывает расстояние 0 км: http://www.gpsies.com/map.do?fileId=ylxbsevvnuakcqia. Ближайшая точка на треке может быть слишком далеко, как в этом примере.

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

Я делал как-то так:
  • Рассматриваем не точки, а отрезки между двумя точками трека (между точками 0 и 1, между 1 и 2, 2 и 3, т.д.).
  • Находим расстояние от путевой точки до каждого отрезка. Находим ближайший отрезок. Формула для этого расстояния на англ. называется Cross Track Distance, Cross Track Error, XTD, XTE или что-то вроде (подробнее: http://williams.best.vwh.net/avform.htm). Имея XTD, вычисляем расстояние вдоль отрезка от его начала до пересечения с перпендикуляром из путевой точки (см. по ссылке).
  • Остаётся прибавить найденное расстояние к расстоянию от старта до точки начала отрезка. Результат — это расстояние путевой точки для легенды.

В JavaScript я не очень разбираюсь, помочь тебе со скриптом не могу. Если придумаешь другой способ или захочешь что-то спросить про этот, напиши. Можно на почту или XMPP, если тут это будет оффтопом.
xyzzy
Реально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкер
Золотой крест Велокубани (1) Медаль "Тёмной стороны" (1) Бронзовая медаль (1) Медаль "Мастера-Шоссера" (1) Медаль "Бревет 200км" (5) Медаль "Бревет 300км" (3)
Медаль "Бревет 400км" (2) Медаль "Бревет 600км" (1) Медаль суперрандонера (1)


Сообщениеkirill-k2 » 08.10.2013, 23:10


xyzzy

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

Спасибо за наводку по алгоритмам! Я пока постарался обойтись без самостоятельной реализации математики, максимально вытащив имеющиеся в API жипсиса функции. В частности, очень помогло описание API Leaflet в части методов объекта L.LatLng: http://leafletjs.com/reference.html#latlng

Судя по описанию, Leaflet уже имеет реализацию XTD: L.LineUtil.closestPointOnSegment - осталось применить ее в том же цикле рассчета, слегка его допилив.

PS кстати, JS значительно проще чем си весьма схожим синтаксисом. А с современными библиотеками навроде jQuery писать одно удовольствие. По крайней мере для подобных задач.
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


Сообщениеkirill-k2 » 09.10.2013, 02:30


xyzzy

Допилил, проверяй.
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


Сообщениеxyzzy » 09.10.2013, 23:10


Теперь, вроде, всё точно :good:
xyzzy
Реально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкерРеально крутой байкер
Золотой крест Велокубани (1) Медаль "Тёмной стороны" (1) Бронзовая медаль (1) Медаль "Мастера-Шоссера" (1) Медаль "Бревет 200км" (5) Медаль "Бревет 300км" (3)
Медаль "Бревет 400км" (2) Медаль "Бревет 600км" (1) Медаль суперрандонера (1)


СообщениеCrazy » 26.10.2013, 20:57


Я, возможно не в тему, но всё же.
Подскажите как можно загрузить трек с gpsies.com в iphone для того, что бы в дальнейшем проследовать именно по этому треку и не потеряться.
Вот этот трек хочу загрузить и попробовать на днях катнуть: http://www.gpsies.com/map.do?fileId=iklvoimhnspfqnwg

К примеру в программе mountainBike от runtastic.com этот трек не находит.
Главное в экстремальном отдыхе - это вовремя заметить когда кончается экстрим и где начинается 3.14здец...

Загрузка треков с gpsies.com в MountainBike на iOs
Crazy
Адепт Четвергушек
Первые симпатии


Сообщениеkirill-k2 » 27.10.2013, 00:46


Crazy

ты стопудова не в тему. ставь нативный апп жипсиса на свой ойфон и там качай. не поможет - добро пожаловать в увлекательную вселенную поиска от гугла.
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


СообщениеCrazy » 28.10.2013, 10:25


По "вселенной гугла" я бродил, и даже на твоем сайте темку http://kirill-k2.blogspot.ru/2012/07/blog-post.html изучил. Но к сожалению ты все описывал для андроида, на айфон половины, указанного тобой, софта нет.
Саму программу gpsies на ипхон установил, но как в нее загрузить трек, чтоб можно было по нему ориентироваться в дальнейшем, непонятно.
Главное в экстремальном отдыхе - это вовремя заметить когда кончается экстрим и где начинается 3.14здец...

Загрузка треков с gpsies.com в MountainBike на iOs
Crazy
Адепт Четвергушек
Первые симпатии


Сообщениеkirill-k2 » 28.10.2013, 11:54


Crazy

У меня нет ойфона, вот, тут посмотри два сообщения по ссылке: АНОНС: 17.10.13 Кубанские Четвергушки
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


СообщениеCrazy » 28.10.2013, 21:53


Спасибо!
Главное в экстремальном отдыхе - это вовремя заметить когда кончается экстрим и где начинается 3.14здец...

Загрузка треков с gpsies.com в MountainBike на iOs
Crazy
Адепт Четвергушек
Первые симпатии


Сообщениеkirill-k2 » 20.02.2014, 00:19


Немного обновил скрипт, до версии 2.01.

По многочисленным просьбам добавил кнопку "Toggle Route". Находится в верхней правой панели управления "More...", сразу под кнопкой скрытия всех путевых точек "Waypoints". Кнопка позволяет скрыть все путевые точки, указывающие направления. При этом оставляя все остальные. В нашем случае остаются только КП, что облегчает обзор карты в общем масштабе.
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


Сообщениеkirill-k2 » 20.08.2014, 01:41


Поскольку userscripts.org лег, выложил на пейстбин.

Заодно добавил еще пару фич, версия скрипта 2.71. В частности - полное название трека в списках вместо сокращенного многоточием.
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


СообщениеC4ET4uK » 13.09.2014, 13:03


А кто подскажет программу для андроида, чтобы выгрузить туда трек и ехать по голосовым подсказкам?
Аватара пользователя
C4ET4uK
Популярность растётПопулярность растёт
Медаль "Бревет 200км" (1)


Сообщениеkirill-k2 » 13.09.2014, 15:07


C4ET4uK

По созданным путевым точкам (тем же, которые создаются для текстовой легенды) по маршруту умеет вести OruxMaps, если в андройде настроен синтезатор речи (стандартный гугловский пойдет, я предпочитаю Svox).

В общем случае навигацию голосом поддерживает и гугловый и яндексовский навигаторы, например. Только это данной темы уже не касается.
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


СообщениеC4ET4uK » 13.09.2014, 16:46


Я так и не нашел как в orux'e включить навигацию по треку...
Аватара пользователя
C4ET4uK
Популярность растётПопулярность растёт
Медаль "Бревет 200км" (1)


Сообщениеkirill-k2 » 17.03.2015, 00:21


Обновилась версия до 2.72 - незначительные правки и улучшения. Лежит там же, на пейстбине (см. первый пост)
Пожизненный БАН за постоянный троллинг, обвинения, кливету и ложь на форуме!
Аватара пользователя
kirill-k2
Забанен
Альфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самецАльфа самец


Немного статистики

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4