?

Log in

No account? Create an account
Previous Entry Share Next Entry
Рендеринг картографической основы для схемы города по данным OpenStreetMap
Лебедянка
dr_kitaetsc
Для создания схем маршрутов транспорта зачастую используются картографические основы Google Maps, или же ихние спутниковые снимки. Это концептуально неверно, потому что они являются обьектом авторского права, и в общем-то "правомерность публикации не подтверждена". К счастью, большинство городов с электротранспортом отрисованы на OpenStreetMap. Картографические данные распространяются под открытой лицензией, и их можно использовать в качестве картоосновы, а созданные схемы загружать на СТТС, печатать, и даже теоретически продавать за деньги.


Вкратце, схема работы OpenStreetMap выглядит так: в базе данных хранится картографическая информация, которую пользователи могут считывать, редактировать различными редакторами, и загружать отредактированные данные обратно. Эти данные можно отрендрить специальными программами, которые на выходе выдают графические файлы с картами, или же 3D-модель участка местности, или даже вычисляют маршрут между какими-нибудь деревнями, оптимизированый для велосипеда. Лююбой желающий может сделать себе карту с нужными ему обьектами и своими условными обозначениями, например уделить на ней особое внимание путевому развитию железных дорог, или кафе быстрого обслуживания. Это большое отличие от сервисов наподобие Google Maps, где рендер картинок с картами только один. Зайдите на страницу http://osm.amdmi3.ru где собранны ссылки на веб-карты сгенерированные различными рендерами, и впечатлитесь.



Сейчас мы отрендрим картографическую подложку для рисования карты ОТ какого-нибудь города в программе Maperitive http://wiki.openstreetmap.org/wiki/RU:Maperitive

Она читает файл данных в формате .osm, и генерирует растровый(PNG) или векторный (SVG) графический файл заданного размера, масштаба, и с любой схемой условных обозначений (правилами). Если область, для которой необходимо создать карту невелика, то данные можно скачать в самом maperitive. При запуске программы на дисплей выведется веб-карта. Сдвиньтесь на нужное место, и введите комманду download-osm.

Если же город большой, то сервер XAPI откажется от выполнения запроса. В таком случае, идём на http://gis-lab.info/projects/osm-export.html, там каждый день выкладываются дампы по областям бывшего СССР, а так же приведены ссылки на страницы с дампами других городов. Скачиваем osm xml. Maperitive умеет читать файлы в архивах bz2. Открывается файл данных через меню, или коммандой load-source Data/filename.osm
Наконец, если ничего не работает, то всегда можно скачать данные через основную программу редактирования карт - JOSM. http://wiki.openstreetmap.org/wiki/RU:JOSM , там есть ссылка на java-webstart. Программа запускается без установки и не требует регистрации. В ней можно скачать любую область по кускам, и сохранить в .osm-файл.

Теперь можно сохранить карту в виде графического файла. Вводим комманду export-bitmap file=Output/cityname.png width=1500
На странице http://maperitive.net/docs/manual/Commands/ExportBitmap.html указаны параметры этой комманды, используя их можно получить карту необходимого вам размера и разрешения.


Теперь самое интересное. Создаём копию файла Rules/default.txt и открываем её в текстовом редакторе Notepad++ (в Maperitive лексический анализатор немного кривоват). Читаем список самых популярных тегов в OSM: http://wiki.openstreetmap.org/wiki/RU:Howto_Map_A и руководство по написанию файлов правил: http://maperitive.net/docs/manual/Rulesets.html Попробуйте сделать специализированую карту для любителей транспорта: с указанием остановок ОТ и макдональдсами.
Есть один ньюанс - в стиле по умолчанию в строке "building : building=yes" удалите ": building=yes", а то он будет рисовать не все здания.


Несколько примеров карт отрендреных в Mapertive:

Трамвайные линии Санкт-Петербурга

Трамвайные линии Санкт-Петербурга

Карта Уручья с подписаными остановками


Карта Уручья с подписаными остановками 



Схема высотности застройки
 Карта этажности домов возле трамвайной линии

Дома расположенные дальше всего от остановок ОТ
Дома расположенные дальше всего от остановок ОТ
 


  • 1
Некоторое время назад (ну, с пару месяцев) я пробовал экспериментировать со стилями в Osmarender. Но скорость рендеринга была столь ужасающе мала (что, впрочем, неудивительно при такой технологии), что оценивать внешний вид каждой очередной попытки облагородить вид карты было делом крайне медленным и утомительным, даже для маленьких кусков карты. А уж сколько памяти оно занимало при рендеринге... В общем, пришлось эти попытки забросить на полдороге.
Причём, ведь про Maperitive я уже знал тогда - но почему-то даже не подумал попробовать использовать его. М.б. подумал, что, дескать, "всё равно под линухом не пойдёт". Однако ж, вот сейчас попробовал скачать, запустить, и заработало. Значит, буду пробовать разукрашивать теперь в нём.
В общем, спасибо за ещё одно напоминание о существовании этой программы.

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

  • 1