Предназначен для перевода данных OSM в “польский формат” (.mp), - это промежуточный формат для многих навигационных карт, и родной формат cGPSmapper и GPSMapEdit.
Использование: perl osm2mp.plfile.osm -o file.mp
Для работы необходим Perl версии не ниже 5.10 (у кого нет, версию для своей платформы можно взять тут).
Подробнее про установку см. вики.
Конвертацией OSM в польский формат занимается куча народу. Для западных пользователей это возможность получить бесплатные гарминовские карты, а для ex-USSR - еще и и конвертация в Русу, Навител и т.д.
Помимо конвертора Liosha, мне известны еще следующие:
упомянутый выше Osm2mp
Сайт - http://wiki.openstreetmap.org/index.php/Osm2mp . Ссылка не прямая, требуется хайти по ней браузером и уже на следующей странице кликать на загрузку (особенность бесплатного хостинга я-ля Народ.ру).
Конвертор неплохой, GPSMapEdit на файл не ругается. Роутинга нет.
конвертор Karl Newman aka SiliconFiend
Описание - http://forum.openstreetmap.org/viewtopic.php?pid=2836#p2836
Скачать можно, но сказано, что очень медленный на больших областях. Другая версия только в процессе обдумывания. Неплохо описаны задачи и концепция. Роутинга нет.
Еще есть легенда о том, чтобы сделать Mkgmap способным производить файлы .mp, но насколько продвинулась работа, неизвестно.
В идеале, как мне кажется, конвертор должен представлять собой нечто, могущее работать на сервере, не сильно потребяющее ресурсы в процессе конвертации, но при этом выполняющее ее достаточно быстро. На вход подаются .osm-файлы, разрезанные osmosis, а также файл конфигурации, в котором описываются замены типов. На выходе получается .mp.
У меня конвертер сделан перловым скриптом.
Работает в один проход (пока), но при этом все точки грузит в память.
Конфиги внешние, доступны на http://garminmapsearch.com/osm/mp/
Кстати, по ним нужен фидбэк, ибо делались на коленке.
Что касается скачать, мне-то не жалко, но пока это чисто “лабораторный” скрипт, никому интереса не представляющий
Почитал мануал по роутингу в маппере…
В общем, назначить RoadID, NodeID и классы дорог (ака псевдороутинг) не проблема.
А вот про запреты поворотов я там ничего не нашёл.
Где про них написано?
Нормальный роутинг появиться лишь тогда, когда появятся конкретные правила, как описывать запреты поворотов в osm. Когда поддержка этих правил будет внедрена в potlatch и josm.
Сейчас же существует только множество предложений, реально никем не использующиеся.
На RoadID накладываются какие-то ограничения, так что их скорее всего придется нумеровать подряд
(то что делает, кстати, gpsmapedit)
osm2navit четырехпроходный,
после первого прохода надо резать ways на куски по всем нодам у которых число линков больше двух.
Также надо рекурсивно объединять куски по нодам у которых число линков равно двум (знаменитая проблема
нарезки линий в .rus и .ntm) и имя,тип,односторонность,etc. совпадают.
Вот для этой последней задачи я “готового” решения не знаю.
и ее всегда можно просто присобачить к существующему .mp файлу.
Дело не столько в поддержке как таковой (она уже де-факто есть),
а в “database integrity”. Вот с этим будет тяжело, так что особо не надейтесь на potlatch и josm.
Класс дороги, односторонность, платность - это всё описывается в RouteParams.
Нумеровать RoadID - разумеется, подряд
Скорее всего, это номер строки таблицы
ну так он же компилятор всё-таки, там совсем другие задачи
Тяжело отслеживать изменения
и вносить поправки не зная way_id → RoadID соответствия.
Ну а секция [NODES] в .mp
вообще не присутствует, что позорно для формата включающего
дорожный граф.