OpenStreetMap на вашем сайте

Александр Сапожников http://as.susu.ru/ as@susu.ru
Южно-Уральский государственный университет, Челябинск

Доклад (в слегка сокращённом виде) был представлен на UWDC-2013 — Уральской конференции веб-разработчиков, прошедшей в Челябинске, в феврале 2013 года.

Введение

На прошлых конференциях UWDC уже звучали доклады про использование различных карт на сайтах. На первой конференции, три года назад, был доклад про Google Maps, кроме того, на всех предыдущих конференциях докладчики из Яндекса рассказывали о Яндекс.Картах.

Надо сказать, польза в этом была — мы в нескольких проектах используем Яндекс.Карты, в том числе — на сайте университета. Как вы видите, мы использовали свою подложку и расширили набор иконок.

Сравнение картографических сервисов

Встраиваемые карты

Набор встраиваемых карт не ограничивается лишь картами Гугла и Яндекса. Можно встраивать и майкрософтовские Bing Maps, и отечественные Космоснимки.ру. Если мы от веб-карт общего назначения перейдём к специализированным продуктам, таким, как навигационная программа «Навител» или городской справочник «ДубльГИС», то увидим, что они тоже предоставляют возможность встраивать свои карты в веб-страницы.

OpenStreetMap

Мы же с вами сейчас поговорим о картах OpenStreetMap.

OpenStreetMap, если не вдаваться в подробности, это проект по созданию свободной географической карты силами сообщества. Это напоминает то, чем является Википедия с той разницей, что в OSM работают с географическими данными, а не с текстом.

OpenStreetMap существует почти девять лет и за это время достигла такого состояния, что её можно использовать разными способами. В частности, встраивать карты в сайты.

Что не так в других картах?

У рассматриваемых нами карт есть те или иные особенности. Давайте их рассмотрим.

Покрытие

Итак, первый критерий, который мы рассмотрим — покрытие карт. Осенью прошлого года я сравнивал покрытие разных карт по Уралу, а точнее, по Башкирии, Пермскому краю, Свердловской и Челябинской областям.

Что получилось? Областные центры, то есть, города с миллионным населением отрисованы везде и отрисованы достаточно подробно. Плюс Магнитогорск — он почти везде есть, кроме Космоснимков. Если мы посмотрим на города поменьше — всё не так хорошо. На Гугле, Яндексе и Космоснимках подробных карт этих городов нет.

На Бинге можно найти дорожную сеть в десятках городов, и даже в крупных сёлах, но, как правило, нарисованы только основные улицы, а зданий совсем нет.

ДубльГИС, как городской справочник, содержит массу информации именно о городах, таких набралось 15 штук: это и областные центры, и их города-спутники, и просто крупные города (март 2013: добавились Миасс и Златоуст). За пределами городов ничего нет: та карта, которая отображается между городами — это карта OpenStreetMap, раскрашенная в цвета ДубльГИСа.

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

Можно задаться вопросом: «А что, OSM — единственная краудсорсинговая карта?» Конечно же, есть и другие — такие как Google Map Maker и Яндекс.Народная карта. Причём, конкуренты сильные: например, на Народной карте число участников сравнилось с числом активных участников OSM, а Гугл проводит розыгрыш призов среди активных участников. Я не буду вдаваться в подробности лицензирования карт — посмотрю лишь на покрытие — Урал на OSM прорисован лучше, чем на других краудсорсинговых картах.

То есть, с первым критерием, надеюсь, всё ясно.

Внешний вид

Второй из рассматриваемых критериев — возможность смены внешнего вида карты.

Перекрашенный Google Maps

Карты Гугла предуматривают возможность использования Styled Maps — перекрашенных карт: можно менять цвета отдельных элементов карты, а также толщину линий. Мы задаём правила, по которым Гугл сам отрисовывает тайлы, то есть, кусочки карты, в нужном нам стиле.

Внешний вид

В Яндекс.Картах можно использовать свою подложку — докладчики из Яндекса на прошлых конференциях показывали много красивых примеров. Аналогичная возможность предусмотрена и в Bing Maps, и на Космоснимках, а точнее, в используемом Космоснимками программном продукте, называющемся ГеоМиксер — там тоже можно менять подложку.

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

У Навитела и ДубльГИСа, похоже, возможность менять внешний вид вообще не предусмотрена — во всяком случае, в документации по их картам об это нет ни слова.

Ограничения по использованию

Мы не можем неограниченно использовать карты рассматриваемых провайдеров. Например, для Google Maps существует ограничение — бесплатно её можно использовать не более двадцати пяти тысяч в сутки.

Итак, мы видим, что рассматриваемые карты имеют те или иные недостатки.

А что у OSM?

Давайте посмотрим, каковы будут значения выбранных критериев для OpenStreetMap.

Покрытие OSM

Первый критерий — покрытие. Качество OpenStreetMap, надо признать, весьма неоднородно: если областные центры отрисованы достаточно хорошо — в общем, не хуже, чем у рассмотренных конкурентов, то о какой-либо произвольной точке этого сказать нельзя: может попасться и прекрасная карта заброшенной деревни, не уступающая по качеству карте крупного города, а может, к сожалению, случиться и обратное — город средней величины может быть отрисован весьма неважно. Есть мнение, что для хорошего качества карты какой-либо местности требуется, чтоб на квадратном километре этой местности проживал хотя бы десяток осмеров, то есть, участников OpenStreetMap. В России c её плотностью населения в 8 человек на квадратный километр так не будет никогда. Даже в городах такого количества осмеров нет: в центре Челябинска сейчас, например, проживает около девяти осмеров на квадратный километр.

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

Второй критерий — внешний вид.

Стиль OpenStreetMap по умолчанию — с серым фоном и тусклыми цветами — далеко не всем нравится. Но его вполне можно поменять.

Можно задать карте произвольные цвета и использовать любые иконки.

Можно отображать на карте разнообразные слои — например, мы можем добавить на карту рельеф.

Карта вообще может выглядеть весьма необычно.

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

И, наконец, третий критерий — цена. В общем случае использование OpenStreetMap бесплатно. Я говорю «в общем случае», потому что, например, мы можем воспользоваться каким-либо платным сервисом, предоставляющим тайлы в нужном нам стиле.

Критерии сравнения

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

Как?

Давайте посмотрим, как именно мы можем использовать OSM.

Использование OSM

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

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

Разбиение на подзадачи

Задачу отображения карты можно разбить на две подзадачи. Первая из них — выбор механизма для отображения карты на сайте. Подобные механизмы (а точнее — библиотеки на яваскрипте) оперируют с небольшими квадратными растровыми фрагментами карты, так называемыми тайлами. Получается, что нам нужен способ добыть готовые тайлы нужного стиля либо сгенерировать их самостоятельно.

Библиотеки для отображения

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

Иногда включение слоя OSM может быть достаточно простым. Например, мы можем отобразить карту OpenStreetMap с помощью библиотеки GeoMixer. Кстати, GeoMixer написан на флэше, а не на яваскрипте — это вполне может быть достаточным основанием для того, чтоб его не использовать.

Включение слоя OSM в библиотеке GeoMixer

Код для получения слоя OSM достаточно прост. Тут не пришлось ничего изобретать — этот пример взят из документации по ГеоМиксеру.

Слой OSM в библиотеке GeoMixer

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

Кому не нравится Flash, могут использовать другие библиотеки — там нет флэша, там яваскрипт. Первыми мы рассматривали Google Maps — их библиотека тоже позволяет менять тайлы на свои. Вот пример кода, отображающего карту OpenStreetMap через Google Maps.

Здесь мы создаём новый тип карты, для которого указываем функцию вычисления адреса тайла. Как вы видите, функция весьма простая — здесь, например, две из трёх координат вообще остаются неизменными.

Адреса тайлов OSM могут быть, например, такими. Получается, мы берём тайлы непосредственно с серверов OpenStreetMap.

Нельзя просто так взять и заменить гугловые тайлы на тайлы OSM — пишут на openstreetmp.org. На самом деле — можно. Но об этом чуть позже.

Получаем такой результат. Мы видим, что элементы управления картой — как в Google Maps, но сама карта — OpenStreetMap.

В Яндекс.Картах можно указать адрес своего слоя, но проекции в Яндекс.Картах, Google Maps и OSM используются разные: в обоих случаях это равноугольная цилиндрическая проекция Меркатора, но в случае с Яндексом учитывается сплюснутость Земли у полюсов (то есть, на цилиндр проецируется эллипсоид), а в случае Гугла и OSM считается, что поверхность Земли является сферой. Как следствие, нумерация тайлов не совпадают: на нашей широте карта OpenStreetMap получается сдвинутой на север примерно на двадцать километров относительно карты Яндекса. В документации по интерфейсу Яндекс.Карт есть пример наложения слоёв OSM и Яндекса, и там это несовпадение как раз хорошо заметно.

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

И таким образом мы можем отображать слой OSM на Яндекс.Картах.

Получается, что мы можем, в случае, когда на нашем сайте уже используются Яндекс.Карты, Google Maps или Космоснимки.ру, без особых усилий дополнить карту слоем OpenStreetMap либо вообще заменить опенстритмэпом исходную карту.

Если же мы не приспосабливаем имеющуюся карту под OpenStreetMap, а разрабатываем с нуля, нам доступны другие библиотеки, популярные в OpenStreetMap — это OpenLayers и Leaflet.

OpenLayers — большая библиотека, существующая уже достаточно долго — восемь лет. Многие годы карты OpenStreetMap на большинстве сайтов, включая сам osm.org, показывались именно с её помощью. Библиотека OpenLayers может многое, она хорошо и весьма объёмно документирована — существуют даже бумажные книги про неё.

Для простых задач — таких как отображение слоя тайлов с насением на него нескольких маркеров — OpenLayers слишком тяжела. С такими задачами вполне может справиться и маленькая лёгкая библиотека Leaflet.

Библиотека Leaflet сравнительно молода: её разработка началась в 2010 году, однако это ничуть не мешает ей успешно конкурировать с OpenLayers и даже вытеснять её с некоторых сайтов.

Сравним вес этих библиотек. OpenLayers достаточно тяжела: в сжатом виде — больше 200 килобайт. Для сравнения — это больше, чем такая библиотека как jQuery. А несжатая версия весит в разы больше — почти мегабайт.

Leaflet весит гораздо меньше: 200 килобайт у неё занимает несжатая версия, а минимизированная версия, сжатая гзипом, умещается в 28 килобайт — восьмикратная разница с OpenLayers!

Что можно сделать с использованием Leaflet? В базовой комплектации, без использования плагинов, можно:

Существуют и плагины для Leaflet, расширяющие её возможности.

Давайте посмотрим на код создания карты. В самом простом случае нам надо для начала подключить пару стилевых файлов — общий и для Интернет Эксплорера, а также саму библиотеку — можно эти файлы держать у себя, можно брать с сервера разработчика.

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

Получаем вот такой результат.

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

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

Существует плагин и для адресного поиска. Плагин позволяет выбрать, каким именно сервисом поиска мы хотим воспользоваться.

Сейчас доступно пять сервисов, среди которых можно видеть некий сервис OpenStreetMap. Речь идёт о сервисе под названием Nominatim.

Nominatim — это сервис адресного поиска, или как ещё говорят, геокодирования, основанный на данных OpenStreetMap. Nominatim позволяет осуществлять как прямой поиск, то есть поиск географических координат по адресу, так и обратный — поиск адреса по координатам.

Nominatim существует сам по себе, он не связан с Leaflet. Можно обращаться к нему напрямую. Для чего это надо? Плагин для Leaflet умеет спрашивать данные для прямого поиска, обращаться с ними к Номинатиму и, если что-то нашлось, сдвигать карту, чтоб найденное место оказалось в центре карты. Если же нам нужно как-то иначе обработать полученные данные, мы и обращаемся к Номинатиму напрямик.

Номинатим принимает параметры в HTTP-запросе по методу GET и возвращает список, содержащий до 10 результатов. Формат возвращаемого списка — XML либо JSON. Каждый элемент такого списка содержит достаточно много информации: это и координаты места, и разобранный на части адрес — его уже не надо разбирать самостоятельно, и ссылка на конкретный элемент в OSM, включающая указание типа данных.

Как вы будете обращаться с полученными данными — уже ваше дело, можете делать что угодно. Если вы пишете на Перле, то можете использовать модуль Geo::Coder::OSM — он позволяет обратиться к Номинатиму и разобрать его ответ.

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

Надо сказать, что существуют механизмы и помимо OpenLayers и Leaflet.

Например, встречаются интегрированные решения, объединяющие разные сервисы. Такой сервис, как, MapQuest предоставляет не только тайлы, но и собственную библиотеку, которая позволяет делать то же, что и Leaflet: отображать карту, добавлять на неё маркеры и векторные данные, но кроме позволяет через эту библиотеку осуществлять прокладку маршрутов, а также прямое и обратное геокодирование, использующее Nominatim. Библиотека MapQuest пока не особо популярна.

Некоторые сервисы, предоставляющие тайлы, отличающиеся от обычного серого Мапника, разработали также собственные библиотеки, которые позволяют делать примерно то же, что и Leaflet, но по-другому. Я не буду подробно останавливаться на них — желающие могут изучить их.

Существуют и библиотеки, дающие пользователю возможность абстрагироваться от особенностей конкретной картографической библиотеки и предоставляющие одинаковый интерфейс, через который можно обращаться к разным сервисам. Например, Mapstraction даёт возможность обратиться к полутора десяткам картографических библиотек, среди которых есть и OpenLayers, и Leaflet, и MapQuest. Аналогичная ситуация и с адресным поиском: сходными способами можно вызвать поиск разных провайдеров. Конечно, Nominatim там тоже представлен. Получается, Mapstraction даёт возможность легко переключаться между разными картами и поисковыми механизмами. Нужно ли это в обычной жизни? Сложно сказать, однако, как видите, возможность такая есть.

Вернёмся к выбору тайлов. В примерах вы могли заметить такой шаблон тайлов, содержащий tile.openstreetmap.org. Вроде, всё понятно, однако, как я говорил, на openstreetmap.org пишут, что нельзя просто так взять и заменить гугловые тайлы на тайлы OpenStreetMap.

На самом деле можно, однако следует учитывать, что OpenStreetMap Foundation — некоммерческая организация, хилая и бедная, могучими серверами не обладающая. И потому просящая соблюдать правила пользования тайлами, в частности, не создавать чрезмерную нагрузку на их серверы.

Что же делать, если мы ожидаем, что нагрузка быдет весьма высокой? Всё не так страшно: данные OSM открыты, поэтому можно из них сгенерировать тайлы самостоятельно, а можно воспользоваться уже готовыми тайлами: доступны различные варианты тайлов, как платные, так и бесплатные — ссылки на них можно найти на странице с правилами использования тайлов OSM. Список платных провайдеров достаточно велик и среди тех, кто там перечислен, есть и такие сервисы, которые некоторые свои услуги предоставляют бесплатно — то есть, у них есть и бесплатные тарифные планы, которых хватит, чтоб ознакомиться с сервисом, а иногда и чтоб продолжить его использование, если нагрузка невелика.

Среди таких провайдеров есть CloudMade — хотелось бы обратить на него внимание. О КлаудМейде часто говорят, когда речь идёт о библиотеке Leaflet — КлаудМейд какое-то время разрабатывал её.

КлаудМейд позволяет выбрать подходящий стиль для тайлов. Поиск можно вести по цвету или по имени. Сейчас здесь свыше восьмидесяти тысяч стилей, хотя среди них много и дублей, и откровенно плохих. Поэтому, если будете искать себе карту на КлаудМейде, смотрите в первую очередь на избранное: такие карты можно удидеть в группе CloudMade — это, судя по названию, карты самого́ Клаудмейда (их там всего-то восемь штук), и в группе Featured (там их в два раза больше).

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

Готовый стиль можно сделать общедоступным, опубликовав его в каталоге, а можно оставить приватным.

Для того, чтоб подключить к Лифлет тайлы нужного стиля, нужно знать номер стиля и нужен ключ, который можно получить на cloudmade.com. Код подключения нужного слоя в этом случае будет выглядеть так.

Ну или так. Конкретные значения ключа и номера стиля мы можем заменить плейсхолдерами, а сами значения указать чуть ниже.

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

Если хочется просто попробовать сделать небольшое количество тайлов, не ставя перед собой масштабную цель покрыть своими тайлами всю планету, можно попробовать такие программы как Maperitive и TileMill.

Maperitive — это кроссплатформенная программа для отрисовки карт из данных OSM. Maperitive позволяет сохранять карту как в виде отдельной растровой или векторной картинки, так и в виде набора тайлов.

Получившиеся тайлы можно сразу же использовать, например, в OpenLayers или Leaflet — нумерация совпадает. Настройка внешнего вида карты в Маперитиве осуществляется редактированием стилевого файла.

TileMill — это десктопное приложение для редактирования стилей тайлопровайдера MapBox. Соответственно, создаваемые им тайлы предназначены для МэпБокса. Но можно эти тайлы использовать и с другими библиотеками. ТайлМил собирает все тайлы в один здоровенный файл с расширением mbtiles. Фактически это база данных SQLite, из которой тайлы легко можно достать.

Если мы попытаемся показать получившися тайлы Лифлетом, то увидим странный результат: карта будет состоять из горизонтальных полос, идущих в неправильном порядке — начало координат находится внизу, в Антарктиде а не вверху, не в Арктике.

Возможны два способа решения для правильного отображения карты Лифлетом: либо пересчитывать координату y, что, в общем-то, несложно, либо при создании карты указать параметр tms равный true. TMS — сокращение от Tile Map Service. Спецификация TMS, помимо прочего, описывает именно такие координаты.

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

Для этого случая возможны два пути — использовать модуль для используемой вами CMS, который позвволит быстро сгенерировать карту либо воспользоваться внешним сервисом, который выдаст карту, пригодную для вставки в iframe.

Я в рабочее время сталкиваюсь обычно с двумя свободными CMS — ВордПрессом и Друпалом. Для обеих есть возможность встраивать карты в сайт.

В случае ВордПресса это делает плагин Leaflet Maps Marker. Мы видим, что в админском интерфейсе ВордПресса добавляются механизмы для управления картами.

Сама же карта вставляется в виде такой вот последовательности символов.

Мне кажется, использовать такой механизм имеет смысл только тогда, когда карт на сайте много. Для одной-единственной карты на сайте проще написать код вызова Лифлета руками.

Для седьмого Друпала, насколько мне известно, нет какого-то общего модуля для OpenStreetMap, но есть отдельные модули OpenLayers и Leaflet — для использования соответствующих библиотек. Документация по модулю Leaflet пока что далека от совершенства. Изучением того, что есть, а также экспериментальным путём удалось выяснить, что возможнен, например, такой вариант: после установки модулей Geofield и Leaflet мы можем создать тип материала (или изменить существующий), добавить туда поле с географическими координатами и в настройках отображения поля указать, что его значение нужно отображать именно Лифлетом — по умолчанию вместо него выводятся координаты в виде текста.

Если же укажем, что нам нужен лифлет, то получим вот такую карту.

Судя по документации, есть модуль Leaflet Views, позволяющий использовать карты в представлениях. Я с этим пока не разбирался — возможно, в этом году разберусь.

Пойдём ещё дальше. Предположим, нам не хочется возиться и с модулями — например, для задачи одноразового отображения карт ы это может быть лишним. Допустим, у нас есть возможность использовать на своих страницах iframe. Можем ли мы в этом айфрейме вывести карту, не тратя много времени на её настройку? Конечно, да!

Существуют сервисы, позволяющие сделать карту для подобного встраивания. На данный момент мне известно пять таких сервиса — четыре из них сравниваются в таблице на http://shtosm.ru/2013/02/05/1/ плюс есть ещё MapBox.

Как видите, мы через веб-интерфейс задаём какие-то параметры и сразу получаем готовую карту.

Получающийся результат, например, выглядит так.

Вот его исходный текст.

Может выглядеть, например, так.

Или так.

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

Доклад подходит к концу — осталось кратко рассмотреть способы изменения карт OSM.

Если нас что-то не устраивает на карте OpenStreetMap, мы всегда можем её исправить. Это можно сделать по-разному: либо попросить кого-то, либо нарисовать самостоятельно.

Расписывать подробно, как именно можно редактировать карту и как лучше это делать, я не буду — в конце концов, доклад посвящён вовсе не редактированию карт, хотя после доклада можно будет обсудить различные аспекты OSM. Если не вдаваться в подробности, вариантов два: либо флэш-редактор на сайте osm.org, называемый также Potlach, либо какой-либо сторонний.

Если вы намереваетесь всерьёз заняться участием в рисовании OpenStreetMap — осваивайте JOSM: это хороший инструмент.

Если же перед вами стои́т одноразовая задача исправить какую-то мелочь, то тратить время и силы на освоение сложных программ, таких, как JOSM — неразумно. Рисовать эту мелочь кое-как в Потлаче, после чего опытные участники будут, ругаясь, исправлять нарисованное — бессмысленно. Поэтому гораздо проще не рисовать самому, а попросить других.

Самое простое — попросить на форуме. В OSM есть форум — обычный phpBB: участники OSM не стали по примеру Википедии общаться через обсуждения статей в MediaWiki. На форуме в том числе обсуждаются и аспекты рисования отдельных областей — по отдельной теме на субъект федерации. Есть тема, посвящённая и Челябинской области, и для всех соседних областей есть свои темы. Иногда в таких темах появляются просьбы нарисовать или поправить что-либо — как правило, такие просьбы быстро удовлетворяют.

Альтернативный вариант — указать неточности на OpenStreetBugs.org — пользоваться им достаточно просто: достаточно указать на карте место, которое вас не устраивает и написать, что именно там не так.

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

Здесь нет какой-либо авторизации: всё можно делать анонимно.

На openstreetmap.ru есть аналогичный механизм, чуть-чуть по-другом оформленный. База неточностей используется одна и та же, так что можно отмечать ошибки на любом из этих сайтов.

Итак, подведём итоги.

Что можно почитать по теме.

Есть ли вопросы?