Инженер по машинному обучению
20,8
рейтинг
29 октября 2011 в 15:21

Разработка → OpenStreetMap в помощь велосипедистам

Вступление


Представьте, что сейчас лето, солнце светит, у вас отпуск, и вы с друзьями — заядлые велосипедисты. Возникает мысль о велосипедном походе куда-нибудь далеко. В этой статье я расскажу о том, как OpenStreetMap-технологии и некоторые другие сервисы упрощают жизнь в такой ситуации, решают проблемы планирования и позволяют быстро и просто поделиться впечатлениями. Упор делается на online, я упоминаю ресурсы:

Планирование поездки


Итак, на каком-нибудь велофоруме или от знакомых вы узнаете, что место X — просто супер, каждый уважающий себя велосипедист обязан там побывать и вообще непонятно, почему вы там до сих пор не были. Если X вам абсолютно незнакомо, то возникают вопросы:

Где находится X?
Официальный сайт OpenStreetMap, не смотря на спартанскую аскетичность, позволяет «из коробки» искать населенные пункты, места и т.д. Также будет полезен Nominatim, который «заточен» специально под поиск.

Как лучше всего туда добраться?
Первое место, куда стоит заглянуть, в случае, если вы проживаете не в России — OpenCycleMap. Это специальная карта для велосипедистов с велосипедными маршрутами. Маршруты, я бы сказал, глобальные и не рассчитаны на местные легкие 8-часовые прогулки.

Карта OpenCycleMap. В России пока совсем не популярна.
В остальных случаях, маршрут таки придется прокладывать самим. Как правило, автоматически проложенный маршрут не идеален и требует ручного «допиливания». Поэтому я рекомендую связку из OpenRouteService и ShowYourJourney, они оба используют данные OpenStreetMap.

OpenRouteService
Отличный немецкий сайт, по умолчанию открывается на немецком, однако справа сверху у него есть заветный английский флаг. Кликаем на строку Start, потом на пункт отправления на карте, потом на строку End, потом на пункт назначения на карте, и, наконец, по кнопке Calculate. Довольно быстро появится результат, в т.ч. суммарное расстояние и указания типа «через 200 метров поверните направо». Можно находить маршруты для машины, пешеходов и велосипедистов. Для первого и последнего вариантов доступны уникальные опции, смысл которых понятен из названия, но на всякий случай многократно проверен эмпирически. Для машины возможен выбор между самым быстрым и самым коротким путем, ведь самый короткий может быть извилистым или с кучей светофоров и прочими неприятностями. Для пешеходов ищется кратчайший путь, при этом используются дорожки, тропинки, тротуары и т.п., заботливо нанесенные картографами OpenStreetMap.

Для велосипедистов настройки особенно богатые: кратчайший путь/shortest track, самый безопасный путь/safest track (избегать большие дороги), для шоссейного велосипеда/racer (наоборот, стараться прокладывать маршрут по автомобильным дорогам), для горного велосипеда/mountain bike (режим похож на самый безопасный, видимо, добавляется извилистость). Помимо перечисленных опций, алгоритм можно дополнительно настраивать (more options), в частности, вручную включать опцию избегания автомобильных дорог и трамвайных путей, а также выделять полигоны на карте, через которые нельзя проезжать/проходить. Результат можно экспортировать в ссылку с параметрами внутри или в стандартный GPX. В общем, немецкие разработчики заслуживают уважения, тем более что по OpenRouteService доступен внушительный список научных публикаций (в разделе INFO&CONTACT).


Настройки OpenRouteService.
Избегание автомобильных дорог в велосипедном маршруте OpenRouteService.
ShowYourJourney
Чем длиннее маршрут от OpenRouteService, тем больше вероятность, что где-то он проложен не очень хорошо, и человек это сделал бы лучше. ShowYourJourney позволяет загрузить к себе GPX маршрут и поправить его руками. Впрочем, можно и создать маршрут с нуля. Удачно реализована работа с треком — каждое звено всегда можно посередине поделить пополам. Для того, чтобы начать, нажмите на «start a route» справа снизу. Разумеется, результат можно вновь экспортировать в GPX.
На ShowYourJourney похож сервис GPS Visualizer Freehand Drawing Utility, но там нельзя импортировать данные.

Интерфейс Show your journey.

Где взять карты для навигатора?
Теперь хочется сохранить карту с маршрутом в навигаторе (если он у вас есть). Скачать карты OpenStreetMap можно на вики проекта Карты России, а с загрузкой GPX в навигатор, думаю, проблем не возникнет.

Как подготовить печатный вариант карты?
Навигаторы бывают ненадежные (например, батарейка быстро садится), да и экран у них маленький из-за портативности. Хорошая практика брать с собой карту, напечатанную на бумаге. Официальный сайт OpenStreetMap хоть и позволяет печатать, выйдет у вас, мягко говоря, мелковато. Для целей высококачественной печати существует MapOSMatic. Просто задаем прямоугольник мышью, зажимая Control, и вперед. Сервис поддерживает экспорт в SVG и растр, удобно разбивает карту на квадраты и создает индекс. Как автоматизировать печать карты с нашим маршрутом с помощью OpenStreetMap — вопрос открытый. Думаю, в оффлайне с этим справится Maperitive. Также ничего не мешает использовать GPSVisualizer.

MapOSMatic в работе.

Визуализация поездки

Вы удачно съездили в X и благополучно вернулись обратно. Все время поездки ваш навигатор или трекер старательно записывал ваш путь. Где-то дороги были перекрыты и вы поехали в объезд, где-то сообщество OpenStreetMap облажалось и поместило тропинку через непроходимое болото и опять пришлось ориентироваться на месте, где-то сделали крюк ради POI, в общем — полученный трек не совпадает с «эталонным». А так хочется поделиться впечатлениями с друзьями, коллегами и родственниками! Необходимо визуализировать трек. Снова по порядку:

Как перегнать мой трек из «родного» формата ??? в удобоваримый GPX?
Многие интересующиеся знают про замечательную gpsbabel, которая знает про форматы треков абсолютно все. Доступна online версия этой программы, делающая ровным счетом то же самое. Загружаем свой трек в веб-интерфейс, качаем GPX (можно даже в zip-архиве).

Веб-интерфейс к GPSBabel от GPS Visualizer

Чем оптимизировать трек?
Не секрет, что функция записи трека у навигаторов реализована одинаково — бездумная машина просто запоминает ваше положение с заданным временным интервалом. Как следствие, треки через 12 часов записи занимают мегабайты, и сервисы, работающие с ними, не по-детски напрягаются. Информация в «сырых» треках избыточна: если вы ехали все время по прямой, внутренние точки можно с чистой совестью выкинуть. Также, на стоянках, GPS «колбасит» и происходит «броуновское движение» вокруг истинного положения.
Для решения этой проблемы существует CourseMapper. К сожалению, он построен на основе Google Maps и подложку OpenStreetMap сделать в нем нельзя, зато способен загружать трек напрямую из устройств Garmin, ну и, разумеется, дружит с GPX. В его настройках можно выбрать минимальную точность в метрах и версию алгоритма (скорость против качества). Сервис бывает задумчивым на больших объемах данных. Если ваш трек очень большой, то остается либо резать на куски и потом склеивать оптимизированные, либо использовать offline-решения. Оптимизация очень сильно уменьшает размер трека, в зависимости от настроек и данных до 1000 раз.

Commander-оподобный CourseMapper.

Как круче и красивее всего показать трек?
Речь идет о «чистовой» визуализации, качественнее, чем у ShowYourJourney. Если вам лень самому изобретать велосипед, мой вам совет — используйте GPS Visualizer. Это просто ну очень навороченный и бесплатный сервис визуализации, мощный и гибкий, со своим сообществом и вики. Я только перечислю особенно «вкусные» функции:
  • Одновременное отображение сразу нескольких треков. Удобно, если ваш попутчик встречается с вами на полпути, и ваши треки разные.
  • Импорт из GPX.
  • Экспорт в растр и вектор. Экспорт интерактивной карты в HTML (с помощью Google Maps).
  • В интерактивной карте можно настраивать подложку по умолчанию, будь то OpenStreetMap или спутниковые снимки Google.

Обилие настроек GPS Vizualizer.

Отображение сразу двух треков на интерактивной карте.

В качестве заключения


Не зря на конференции State of the Map (SotM) 2011 OpenStreetMap сравнивали с Linux — наблюдается тотальный Linux way в работе с картами и треками. Ни один сайт не делает всю работу полностью, и добиваешься цели, собирая решение из независимых кусочков. Может быть, когда-нибудь, появится стартап, который избавит от описанного выше зоопарка из онлайн-сервисов, но пока что все гораздо интереснее. Я очень надеюсь, что вы вынесли для себя что-то интересное и полезное из этой статьи.

P.S.
И да прощен я буду за табличную верстку картинок.
Вадим Марковцев @markhor
карма
114,0
рейтинг 20,8
Инженер по машинному обучению
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (17)

  • 0
    Я так понимаю, рендеринг растров для CycleMap не так давно прекратился совсем?
  • +12
    Как же все-таки не хватает в российских городах хоть каких-то велосипедных дорожек. За месяц езды по городу выучился прыгать по поребрикам всех возможных видов.
    • +3
      А я за тот же месяц освоил ПДД :) Не люблю прыгать по бордюрам, да и в городе у нас движение не по 5 полос в одну сторону — на велике чувствовую себя вполне комфортно.
  • 0
    хорошая статься, спасибо!
  • 0
    Есть ли ограничение по количеству одновременно отображаемых треков в GPS Vizualizer?
    • +1
      До 8 штук, в сумме не больше 3 мб.
  • 0
    В избранное! Жаль что OpenCycleMap для СНГ вообще неактуальна.
  • 0
    Я несколько лет назад пытался сделать специализированный mashup для велосипедистов — но оказалось непонятно, как мотивировать пользователей делиться реальными треками и не забывать делить при этом их на категории. Ведь тому, кто ездит сугубо по паркам и немножко по тротуарам совершенно не интересны маршруты профессионального велокурьера, носящегося через весь город по проезжей части, и наоборот.
  • 0
    А есть сборки карт для Garmin, в которых шоссе помечены как-нить не как дороги, что бы ПО гарминв прокладывало мимо оживленных трасс? А то когда оно тебе, велосипедисту, предлагает по МКАДу проехаться — то жутко.
    P.S. с начала лета, как приобрел навигатор, катаю с картами OSM.
    • 0
      Можете спросить на форуме. Я бы в качестве хака вручную поменял в xml-файле .osm скажем, highway=motorway (чем является МКАД) на highway=pedestrian и экспортировал в img. Провести эту манипуляцию можно либо текстовой заменой "<tag k=«highway» v=«service»/>" над экспортированными данными с osm.org (закладка Export-OpenStreetMap XML Data), либо через JOSM. А дальше делать по мануалу.
  • 0
    Может быть не в тему буду, но есть ли хорошее геокодирование на русском языке на основе OpenStreetMap?
  • 0
    А GPSVisualiser нельзя использовать вместо MapOSMatic и Maperitive для печати карты с маршрутом? По описанию, можно экспортировать в растр вместе с GPX — а там уже и распечатать можно.
    • +1
      Да, почему бы и нет в принципе :) MapOSMatic просто удобно разбивает карту на квадраты, индекс делает. Когда созваниваешься, называешь квадрат в котором находишься.
  • 0
    Жду не дождусь, когда OSM начнут использовать в спортивных приложениях, вроде RunKeeper, Endomondo и др.
  • +1
    Хорошая статья!
    Но — увы — по факту OSM актуальна лишь в сравнительно густонаселённых районах.
    Отъедьте от центра 100-200 км — и вот они, реки в виде ломаной линии и треугольные озёра. Иными словами — детализации ни-ка-кой!

    Мне в своё время очень понравился сайт marshruty.ru — за то, что помимо osm/google/ и прочих новых спутниковых снимков есть ещё и генштабовские двух- и однокилометровки. И там, где osm лаконично показывает серую плоскость, генштабовская карта достаточно подробно отрисовывает все особенности рельефа. Причём особенно актуально для «глубинки» — где нет новой активной застройки, и потому пейзаж неизменен уже несколько десятилетий.

    Ещё в копилку можно добавить gpsies.com. Он как раз хорошо подходит для ручной прокладки маршрутов в «неизведанных далях»
  • +1
    в копилку: livegpstracks.com/

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.