Пользователь
0,0
рейтинг
16 апреля 2012 в 13:42

Разработка → OpenStreetMap на каждый день


На хабре OSM упоминают постоянно, вот только репутация у проекта, похоже, совсем никакая: кучка людей что-то программирует, рисует какие-то линии и отношения, борется за лицензионную чистоту. Но на самом деле проект совсем про другое: дать каждому карту, с которой можно делать что угодно: те же гуглокарты, те же Яндекс.Карты, но которые при желании можно поправить или скачать на мобильное устройство.

Поэтому я хочу рассказать об основах: как эти карты заменили мне яндекс почти во всех каждодневных задачах.


Посмотреть и поискать


Для русскоязычного участника у проекта есть две точки входа: openstreetmap.org (также osm.org) и openstreetmap.ru (osm.org.ru). На них есть большая карта и строка поиска. Различаются эти сайты списком слоёв: на русском их значительно больше, в том числе красивейший MapSurfer.NET, спутниковые снимки от Bing, трёхмерные домики и обратная связь («указать неточность на карте», затем дабл-клик в любом месте). Второе различие — механизм поиска.

На openstreetmap.org поиск работает по адресам в западном стиле: номер дома, улица, город (например, «24, Невский проспект, Санкт-Петербург»). Сокращения не работают, выкидывать статусную часть (написать «Невский» вместо «Невский проспект») или добавлять её («посёлок Кузьмолово» вместо «Кузьмолово») нежелательно. Зато работает поиск по POI (точки интереса: магазины, кафе, парикмахерские, кинотеатры и т.п.) и по названиям категорий («кафе рядом с Невский проспект», падежи тоже не работают). Короче, хороший поиск, но не адаптированный к русским запросам.



Это попытались исправить на openstreetmap.ru: туда можно вставить большинство адресов с разных сайтов, и они правильно обработаются. Собственно, 90% моих обращений к Яндекс.Картам было как к поисковику по адресам, и сейчас наш сайт его заменил. Из бонусов — для проекта геопозиционирования избирательных комиссий я использовал API нашего поисковика (openstreetmap.ru/api/search?q=Язь), и он в Петербурге нашёл почти все адреса (написанные, замечу, в свободной форме).

Ещё 9% обращений к картам — поиск места «глазами»: открытие сайта, уменьшение масштаба до всей планеты, затем приближение к нужному месту в три-четыре прыжка с помощью растягивания прямоугольника мышью с зажатым Shift. После привыкания к масштабированию прямоугольником сайты гугля и яндекса внезапно становятся жутко неудобными. Замечу, что openstreetmap.ru пока что тоже не очень удобен, потому что там нет линейки масштабов, и приходится сто раз жать на кнопку «минус».

Поделиться


Проиллюстрировать координаты или адрес можно тремя способами. Первый — сделать скриншот карты. Второй — дать ссылку на фрагмент карты. На openstreetmap.org для этого справа внизу есть два типа ссылок: длинная (для статей) и короткая (кинуть в чатик). У первой очевидная и читаемая структура, вторая не разрывает экран.

На openstreetmap.ru постоянная ссылка слева внизу, но кроме этого, можно явно отметить точку, о которой речь, маркером: это слово спрятано в значке с шестерёнками справа.

Самый продвинутый способ — поместить на страницу живую карту с маркерами и чем только не. Вручную это несложно сделать библиотекой Leaflet, но можно полениться и применить инструмент, рекомендуемый для информационных сайтов Евросоюза.

Измерять и рисовать


Инструмент измерения расстояний на карте Яндекса часто используют для рисования маршрутов: и линия есть, и её длину показывают, и ссылку получить несложно. В OpenStreetMap это два разных инструмента. Так, для измерения расстояний есть отдельный сайт Distance Calculator. Он даже выдаёт расстояние в двух системах координат. И позволяет сохранить нарисованный путь в gpx. Oh wait…

Рисование маршрутов для других — в Show Your Journey. Хотя там везде предлагается зарегистрироваться, это нужно только для правки своих маршрутов, а сделать новый просто: справа внизу кнопка «Start a route», затем нарисовать (или загрузить GPX), затем ввести название и тыкнуть в «Create».



Наконец, недавно на openstreetmap.ru в инструментах появился пункт «Персональная карта». Это адекватная замена рисованию меток и ломаных на картах Яндекса. Правда, интерфейс не такой красивый, и информации маловато, поэтому если карта позволяет, рисовать ломаные в яндексе пока проще.

Прокладывать маршрут


О, это просто грааль в пользовательской картографии. У каждого продавца карт есть свой движок, у OpenStreetMap их десяток. Для быстрого подсчёта расстояний не могу отказать себе в удовольствии использовать Project OSRM: его скорость поражает. Тянешь маркер — и маршрут перестраивается в реальном времени. Увы, работает только в Европе и европейской части России. Есть неплохой шанс, что этот движок скоро запустят в полную силу на openstreetmap.org.



Для более сложного роутинга, с промежуточными точками и выбором транспорта, я пользуюсь сервисом Cloudmade. Кроме него есть OpenRouteService и YourNavigation.org: у всех трёх есть свои недостатки, первый и третий ещё и нерегулярно обновляются, но окончательный выбор делается по удобству: функциональность у них примерно одинаковая, и все они лучше коммерческих альтернатив, особенно на длинных дистанциях. Пользовался бы красивым MapQuest, но у меня никак не получается его завести.

Взять с собой


Способ XX века: распечатать! Сайтов много, самый очевидный — Walking Papers. Если собираетесь провести несколько дней в незнакомом городе, Maposmatic делает некое подобие атласа с указателем улиц.



Но будем более технологичны. Даже носить с собой гигабайты выкачанных тайлов — это прошлый век. Преимущество OpenStreetMap — доступность исходных данных. Векторные карты на телефонах с J2ME показывает GpsMid, на ай*ах — MapsWithMe, а для андроидов самое лучшее приложение — это OsmAnd+ (есть бесплатная версия, также хабропост). В последнем прямо из программы можно скачивать сборки карт для нужных областей и стран, плюс добавлять разные слои POI. Например, в последнем путешествии мы подключили слой статей из википедии, и пока я рулил, жена читала описания мест, где мы проезжали.

Настоящие туристы, разумеется, плюют на новомодные устройства и пользуются отдельными навигаторами. Выгрузки данных есть почти под любую систему: Навител, СитиГид, ПокетГис, ГисРусса. Но больше всего выгрузок для Garmin, потому что у всех своё назначение. Три самых популярных по России: автомобильная и две туристических: от ValentinAK и от Макса Васильева. Для поездок за границу добро пожаловать к шведскому столу.

Пользоваться и дополнять




Что-то под конец статья скатилась в список ссылок. Ну и ладно: в нашей несуразной вики, признаюсь, найти что-то полезное непросто, особенно после набега графоманов-википедистов. С другой стороны, уже на офлайновом использовании мы вышли за границы функциональности «больших» карт, и при этом самые красивые применения данным OSM остались за кадром. И что действительно поражает — все эти сайты, сервисы, выгрузки, роутинг работают с одними и теми же данными, которые может поправить или дополнить каждый. Чем мы и занимаемся каждый день. Пользуйтесь нашей картой — и, может быть, когда-нибудь вам захочется поправить какую-то мелочь. Так и увязают.

В статье использованы комикс FakeSteveC, снимки карты OpenStreetMap в тайлах osm.org, MapSurfer.net и Stamen Design, а также фотография kachkaev.
Илья Зверев @Zverik
карма
125,7
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

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

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

  • +5
    Если бы еще все эти сервисы были собраны на одном сайте…
    А то роутинг удобнее здесь, измерение здесь…
    • +6
      Это программа-максимум для нашего openstreetmap.ru. К сожалению, над ним работает примерно три программиста редкими набегами, поэтому её реализация запаздывает.
      • 0
        А что если на openstreetmap.ru сделать страницу «рекомендуемые сервисы», со ссылками на все эти проекты с самым полезным (и еще не реализованным на osm.org.ru) функционалом и описанием в 2-3 предложения?

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

        ps: пойду что-ли на forum.openstreetmap.org/ предложение напишу )
    • +1
      Пока что на одном сайте это собранно только в таком виде, да и то не всё.
  • +1
    На z-уровнях 0, 1, 2, 3 рендерер «Космоснимки» выглядит лучше рендерера «MapSurfer.net».
  • 0
    на openstreetmap.ru вбил Челябинск. попал в Красноярский край, Курагинский район, город Курагино, Челябинская улица.
    • +2
      Спасибо, добавил тикет проекту openstreetmap.ru. Автор поисковика ответил, что разберётся, как только появится свободное время.
  • +2
    Я очень уважаю OSM, постоянно пользуюсь OsmAnd+, регулярно добавляю POI, иногда улицы и маршруты общественного транспорта.

    Но поиском по OSM я не могу пользоваться вообще. По точному названию еще иногда получается найти, но поиск в окрестностях не удался ни разу. Может в openstreetmap.ru немного лучше, но работает, судя по всему, только по России. Поэтому я обычно ищу на гуглокартах, отмечаю необходимые точки, а потом уже переношу их в OsmAnd. Надеюсь, в будущем ситуация исправится.
    • +1
      Уточните не удался поиск в окресностях в OsmAnd или в openstreetmap.ru? ;)
      • +1
        Уточняю. Нигде не удался. Но всё таки основные неудобства — с веб версией (openstreetmap.org). Возможно, я не умею его готовить.

        openstreetmap.ru — вообще, насколько я вижу, ищет только по России, что не приемлемо для меня, так как родом я из Украины, а сейчас в Австрии. Ну и POI не ищутся.

        openstreetmap.org — ищет везде, какие-то простые запросы выполнять получалось. Пример «кафе рядом с Невский проспект» работает хорошо. Но приближаясь к реальности… поискал я «кафе рядом с проспект Ленина». Нашло 15 результатов где попало, но только не в Харькове (еще бы, такое распространенное название). Долго бился, как уточнить запрос, учитывая, что «проспект Ленина, Харьков» работает а «кафе рядом с проспект Ленина, Харьков». Оказалось, что надо писать «Ленина проспект». Но поиск «кафе рядом с Alpen-Adria-Universität Klagenfurt» выдает что угодно, только не самые ближайшие кафе(которые точно отмечены на карте и заполнены правильной информацией).
  • +3
    А при чем тут размытое изображение центра Екатеринбурга на последней картинке? ;-)
    • +7
      Один из вариантов рендеринга базы данных OSM — акварельный.
      • 0
        Почему Екатеринбурга!?
        • 0
          Потому что красивый город, и один из самых прорисованных в русском osm.
          • 0
            На счет красивый — спорный конечно момент :) А прорисовкой — да, знаю в городе многих людей которые этим занимаются.
            Сам время от времени, just-for-fun, дебри родной Сортировки отриcовываю.
  • +1
    По-моему, по запросу «Арбат 16» должен быть показан дом на Арбате, а не на Новом Арбате.
  • 0
    А на osm.ru можно искать станции метро? У меня не получилось. Очень востребованно для меня.
    • 0
      На openstreetmap.ru — нельзя: пока никакие POI там не ищутся. А на openstreetmap.org — пожалуйста. Правда, станции метро там называются железнодорожными.
      • 0
        Жалко, а то osm.org.ru больше понравился своим дизайном, чем osm.org.
  • 0
    А мне еще не хватает аналогов Панорам и StreetView. Иногда в своем городе (да и не только) проще увидеть знакомые места и сориентироваться, как попасть на нужный адрес, если рядом часто бывал. Здесь пока без вариантов.
  • +1
    ОСМ замечательная вещь. Разрабатывали проект аля заведения города. Был выбор между апи 2гис, гуглом/яндексом и ОСМ. Первые три быстро подключаются, но как-то не впечатлили. Последний пока подключали пришлось поползать прилично по форуму чтобы узнать: как подключить карты, как сделать поиск через Nominatim, как сделать вывод и установку маркеров через leaflet. В вики куча информации как править карты, но минимум информации как сделать вывод карт. Было-бы действительно неплохо в одном месте сделать подборку сервисов и различных апи для работы с картами. На один вопрос так и не нашли ответ, как сделать автоматизированно добавление POI на карты. У нас постоянно идет пополнение списка заведений и хотелось-бы сделать благое дело, добавить все это дело на ОСМ.
    • 0
      Я, честно говоря, не думаю, что автоматизированно добавлять POI это хорошо. Во-первых могут получаться дубликаты, во-вторых все равно потом POI нужно будет передвигать на границы строений, например. Ну то есть добавить то можно, но потом нужно по всем POI пройтись, проверить, что нет дубликатов, что они расположены где надо и т.д.

      А вообще про импорт есть отдельный раздел на вики.
  • +1
    Отличный пост, благодарю.
  • 0
    ОСМ периодически редактирую в онлайн-редакторе, но жутко раздражают две вещи: что в истории правок нельзя отфильтровать служебные правки роботов, и что непонятно, как правильно связывать две дороги вместе (при щелчке на дорогу она выбирается целиком вместо установки точки). Не подскажете?
    • 0
      Редактируйте в JOSM. Если лениво ставить — его можно использовать просто как Java applet в броузере (JNLP).
  • +3
    OSM надо больше работать над «генеральной линией» и унификацией правил рисования, иначе начинается разброд и шатание. Обилие сторонних сервисов, которые должны быть частью основного сайта — тоже проблема: я не могу советовать OSM людям без гиковых наклонностей если всё что им надо — посмотреть маршрут из точки А в точку Б. Но вообще проект офигенный и многие районы прорисованы с такой деталезацией, что могут начать давать пользу жителям этих же районов из серии «а тут есть такой магазин», «а тут есть такая тропинка» и т.д.
  • 0
    Попробовал поиск по Беларуси — он совсем не работает.
    • +1
      У белорусов есть свой сайт со своим поиском: openstreetmap.by
  • 0
    Классные карты, перешел на них.

    Помогите решить задачку:
    Есть некоторая компания Х, в которой существует регулярно обновляемый список адресов, куда надо выезжать доставлять заказы. Этот список адресов дополняется и изменяется сотрудниками в офисе в течение рабочего дня, и каждое утро выдается курьеру.
    Какое чудо средство можно использовать, чтобы добавлять и убирать метки прямо на карту, при этом метка должна содержать описание (например, имя, телефон, да и цвет метки не мешало бы раскрашивать). Попробовал www.batchgeo.com — понравилась реализация (простота использования), но нет «личного кабинета». То есть там одноразовые карты, а надо именно регулярно изменяемые. К тому же чтобы там работать, надо вести базу в эксель, а потом загружать ее туда.
    К тому же, хотелось бы работать именно с картами osm, так как детализация в разы лучше, особенно учитывая разъезды по дворам. В идеале, конечно, чтобы у курьера все отображалось в телефоне, но без этого не помрем :)

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