2010
11.07

Здесь рассматриваются некоторые принципы рисования вектора для OpenStreetMap в условиях города. Всё нижеизложенное — рекомендации, которые стоит выполнять, для того, чтобы карта была подробной, красивой и точной. Рассматривается редактор JOSM; для других советы будут аналогичными. Все буквы в клавиатурных комбинациях — латинские. Кнопку [esc] можно не нажимать, если вы уверены, что у вас ничего не выделено.

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

Выравнивание снимков

Перед тем, как рисовать, загрузите всю область, которую собираетесь рисовать (обычно — квартал), в виде текущего вектора и GPS-треков. Включите раскраску треков по скорости (F12->Track and Point coloring->Velocity), отключите видимость слоя с векторными данными. Подключите слой со снимками.

Для примера отрисуем квартал в микрорайоне Великий лес города Минска. В качестве снимков будем использовать снимки Yahoo с http://wms.latlon.org/?layers=yhsat&. Если у вас есть несколько разных слоёв со снимками — лучше использовать осенние или весенние, на которых листьев минимум, при этом оглядываясь на самые свежие.

Некоторые города на этой wms выровнены по трекам заранее, что и видно по картинке выше: “медленные” треки лежат по линиям тротуаров, “быстрые” заполняют собой дорожное полотно.

Кроме того, можно заметить, что треки вдоль леса слегка отклоняются в сторону от него, а треки внутри квартала пересекают дома, “гуляя” в разные стороны. Эта ситуация вполне нормальна — из всего множества треков следует опираться на те, что записаны в наиболее открытых участках местности.

Если снимки не совпадают с треками, стоит взять соответствующий инструмент на панели слева () и подвигать картинку со спутника до тех пор, пока она не совпадёт с большинством треков в рисуемой территории.

После этого можно отключить видимость слоя с треками и включить векторный. Обычно после этого домики и прочая информация хорошо ложатся на снимок:

Дворовые проезды

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

Дворовой проезд лучше всего обозначать набором двух тегов: highway=service; living_street=yes. Первый говорит о том, что данная дорога — служебная, второй — что она, собственно, и является дворовым проездом. Хорошая навигационная программа будет их прятать при показе карты на мелком масштабе, а также не будет пытаться по ним “срезать” путь.

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

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

Чтобы его исправить, следует нажать [esc][A] и щёлкнуть в точку пересечения двух линий, убедившись, что обе подсветились голубоватым оттенком. После этого можно нажать [esc] ещё раз, чтобы снять со вновь созданной точки выделение.

Иногда неопытные пользователи не могут “попасть” мышкой в другой вей, вырисовывая микроскопические виляния, не наблюдаемые в реальности. А иногда так и не попадают, и не соединяют две линии. Посмотрим, как такое исправлять:

Во-первых, пересечем две линии, как описано выше. Во-вторых, уберем этот “скачок”: нажмём [esc][S], обведём рамкой все три точки (старые и вновь созданную) и нажмём [M]. Точки объединятся в одну, после чего ее надо передвинуть в ее реальное местоположение.

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

На них нужно расставить соответствующие теги.

Когда закончите с ошибками, отключите слой со снимками и окиньте квартал взглядом ещё раз. Нигде не пропущены проезды, где они были бы логичны?

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

Пешие дорожки

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

Что можно заметить:

  • Вдоль дороги растут два ряда деревьев. Верный признак того, что между ними — дорожка с покрытием.
  • Во дворах, если присмотреться, можно заметить диагональные ненормальности. Обычно это вытоптанные дорожки.
  • Пользуйтесь своим знанием местности!

Стоит иметь в виду: дорог “из ниоткуда в никуда” не бывает, потому любой тротуар стоит обоими хвостами воткнуть в другие линии дорог. Исключение — линии к подъездам.

При рисовании “вытоптанные” дорожки следует отмечать как highway=path, а “асфальтированные” — highway=footway, лесенки — highway=steps. Кроме того, стоит добавить (только если знаете!) теги поверхности:

  • surface=paving_stones для тротуарной плитки,
  • surface=asphalt — если дорожка покрыта асфальтом,
  • surface=sand для песка,
  • surface=granite для гранитных лестниц подземных переходов,
  • surface=concrete для бетона
  • другие значения тега surface можно глянуть в wiki: http://wiki.openstreetmap.org/wiki/Surface

У меня получилось нечто такое:

Иногда на снимках хорошо видно переходы-зебры, или вы знаете об их существовании. Рисовать их можно вот так:

Тут надо отметить, что дороги мало пересечь с тротуарами — на них неплохо бы поставить тег highway=crossing, обозначающий место наземного перехода. Хороший навигатор постарается провести человека так, чтобы встретить по возможности меньше переходов — мест повышенной опасности как для автомобилистов, так и для пешеходов.

Украшательства

После этого можно заняться украшательством, отрисовывая хорошо видимые на снимке деревья и газоны.

Деревья отметим точками natural=tree. После того, как вы нарисуете одно, удобно его скопировать в буфер (ctrl-c) и вставлять в то место, куда указывает курсор мыши, при помощи ctrl-v. Никуда кликать мышкой при этом не надо.

Если на снимке видны газоны, можно отрисовать и их, замкнутой линией с тегом landuse=grass. Обратите внимание: такую линию лучше рисовать на каждый маленький кусочек газона, разделенный дорожками, ровно по границе травы.

Границы квартала

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

Зададим ему теги:

  • landuse=residential; residential=rural — если в этом квартале преимущественно частные (“деревенские”) дома
  • landuse=residential; residential=urban — если в этом квартале расположены жилые многоэтажки
  • landuse=commercial, если в этом квартале расположены в основном магазины-рынки
  • landuse=brownfield, если в этом квартале сейчас идёт стройка со сносом старых домов и постройкой новых
  • landuse=greenfield, если в этом квартале идёт стройка “с чистого листа” (до того было просто поле)

Заливка данных на сервер

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

Пожалуйста, заполните поле “комментарий” минимальным, но значащим комментарием, хотя бы “Великий Лес — отрисовка подробностей жилого квартала”.

После того, как заливка закончится, можно выделить линию квартала и нажать Ctrl-H — в браузере откроется ее история. Там можно нажать на ссылку “Просмотр линии на более крупной карте” и начать через несколько минут хвастаться ею друзьям и знакомым. Если хвастаться некому — заходите к нам в IRC, всегда будем рады высказать своё мнение ;)

Ссылка на квартал из примера: http://www.openstreetmap.org/?way=83628104

3 comments so far

Add Your Comment
  1. Эх, а когда туториал по нумерации домов будет?

  2. Наконец-то! По-больше бы таких уроков именно в этом блоге. Большинство из рассказанного для меня новостью не является, а остальное оказалось весьма ценным. Трудно гоняться за этими крупицами на форумах и недоделанной Вики.

  3. А где мусорки и лавочки? :))