OpenStreetMap PlanetLowZoom

Feb 05, 2010 01:12

Сегодня речь пойдёт о создании обзорной карты мира на основании данных OpenStreetMap.

Хорошо иметь GPS-карты городов, областей, стран. Однако иногда нужна карта всей планеты.
- В самолёте можно отслеживать, над чем сейчас пролетаешь.
- При неожиданной поездке в новую страну - не останешься без карты.
- Ну и конечно же функция "ГДЕ ЭТО Я?!" (на случай возвращения из инопланетного плена, открытия в себе способностей к телепортации или после жёсткой пьянки ;)

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

Порывшись в интернетах, я обнаружил, что готовой обзорной карты из OSM данных нигде не выложено.
Соответственно, решил сделать самостоятельно.
При выборе уровня детализации, я решил исходить из предела в 16 мегабайт, установленного для 1 файла карты, в программе Russa, которой пользуюсь. Сколько влезет в 16М, столько и сделаю.

В качестве источника данных был выбран XAPI. За подсказку спасибо форуму OSM и участнику Mikado в частности.
Перечень интересующих меня объектов был таким:
- Границы стран
- Города - столицы и чуть помельче
- Основные автодороги
- Аэропорты
- Горы, реки, озёра
- Береговая линия, небольшие острова
Однако, в процессе скачивания данных через XAPI, выяснилось следующее:
1) Береговая линия - та ещё проблем OSM. Было решено взять стороннюю информацию - TM_WORLD_BORDERS-0.2.zip с mappinghacks.com.
2) Реки и озёра прорисованы настолько детально, что выборка по любому тэгу занимает больше 1ГБ. Было решено пока отказаться от водоёмов.
3) Дороги регионального значения (highway=primary) не скачались из-за предела XAPI в 1000000 узлов. Было решено исключить их.
4) Прочие главные дороги (motorway и trunk) все разорваны - в городах они становятся улицами и т.п. Общий их объём около 1.5 ГБ. Было решено оптимизировать их, чтобы поменьше они занимали.
5) В 16М можно умять и сёла (place=village)
6) osm2mp не справляется с 1 выборкой дорог по всему миру, ибо 32-битный и упирается 2ГБ на 600МБ .osm.
В итоге дороги разрезаны по Y=-32 (32 градуса западной долготы) с помощью splitter-а

В итоге в обзорную карты вошли следующие выборки из XAPI:
/node[place=town]
/node[place=city]
/node[place=village]
/node[natural=water]
/node[natural=wetland]
/node[natural=volcano]
/node[natural=peak]
/node[place=locality]
/node[place=region]
/node[place=country]
/node[place=island]
/node[place=continent]
/node[place=airport]
/node[aeroway=aerodrome]
/way[admin_level=5]
/way[admin_level=4]
/way[admin_level=3]
/way[admin_level=2]
/way[highway=motorway]
/way[highway=trunk]
/way[highway=motorway_link]
/way[highway=trunk_link]
/way[place=city]
/way[place=town]
/way[place=island]

Все way были оптимизированы алгоритмом Дугласа-Пекера:
1) Дороги (highway) - с epsilon=0.03
2) Границы стран и областей (admin_level) - с epsilon=0.01
3) Границы городов и островов (place) - с epsilon=0.005
4) Береговая линия - с epsilon=0.005 для уровней 0-3 и с epsilon=0.3 для уровня 4.
Более подробную информацию о тэгах можно посмотреть каталоге Google Docs (см. ниже).

Разрезка дорог в .osm выполнена с помощью splitter.
Конвертация из .osm в .mp - с помощью osm2mp 0.80b
Оптимизация .mp файлов - самодельной программой mp_optimize. Исходник основного модуля (на VB 6.0) доступен в каталоге Google Docs (см. ниже).
Конвертация из .mp в .rus - с помощью GPSMapEdit

UPD 2013-10-11 Это старая версия карты, рекомендую использовать следующую. Если всё-таки нужна старая - см. ссылку в комментарии.
(Каталог в Google Docs с результатами, таблицами и т.п.)
1) PlanetLowZoom_100123_REL1.rus - карта для Russa
2) PlanetLowZoom_100123_REL1_mp.rar - упакованная карта в .mp (145МБ без упаковки)
3) mp_optimize.frm - Исходник основного модуля mp_optimize
4) "OpenStreetMap PlanetLowZoom Tags" - таблица с информацией о тэгах. Колонка U ("REL1") - про текущий релиз карты.

Участник Zkir на аналогичных принципах подготовил обзорную карту России - выложена на osm-russa.narod.ru

История обсуждения обзорной карты мира на русскоязычном форуме OpenStreetMap

planet, gps, openstreetmap, russa, maps, do_it_myself

Previous post Next post
Up