Конвертер OSM -> MP

Тут обсуждается конвертер osm2mp.

Предназначен для перевода данных OSM в “польский формат” (.mp), - это промежуточный формат для многих навигационных карт, и родной формат cGPSmapper и GPSMapEdit.

Основные фичи:

  • настраиваемый набор типов
  • генерация роутингового графа
  • поддержка расширенной схемы адресации
  • обрезка карты по полигональной границе
  • языковые плагины
  • кое-какая обработка данных для совместимости с cgpsmapper (близкие узлы, самопересечения)

Актуальная версия только в SVN

Использование:
perl osm2mp.pl file.osm -o file.mp
Для работы необходим Perl версии не ниже 5.10 (у кого нет, версию для своей платформы можно взять тут).
Подробнее про установку см. вики.

Полученный MP можно сконвертировать в формат для разных навигаторов:
Garmin, Навител, СитиГид, 7 дорог, PocketGIS и других

С роутингом ? :slight_smile:
wayID вроде как не удастся использовать в качестве roadID,
что конечно неудобно.

пока без, с форматом роутинга ещё разбираться надо
сначала таблицу разнесения по слоям надо нормально заполнить

Вот еще без роутинга:
http://wiki.openstreetmap.org/index.php/Osm2mp
Скачать мне не удалось.

таки сделал :sunglasses:
mp москвы с окрестностями будет ежедневно появляться на http://garminmapsearch.com/osm/mp/
это если osmxapi глючить не будет…

Скачал(через FireFox). Еще не смотрел.
Но:

:confused: :slight_smile:

OSM парсер с роутингом есть здесь
http://navit.svn.sourceforge.net/viewvc/navit/trunk/navit/navit/osm2navit.c?revision=1059&view=markup
но модифицировать эту программу - задача точно не для слабонервных :wink:

Самое важное это “-w (–dedupe-ways) : ensure no duplicate ways or nodes.”

Пронумеровать дороги - проще всего.
Проставить в пересечениях узлы тоже несложно, но парсер двухпроходным делать придётся.

Конвертацией OSM в польский формат занимается куча народу. Для западных пользователей это возможность получить бесплатные гарминовские карты, а для ex-USSR - еще и и конвертация в Русу, Навител и т.д.

Помимо конвертора Liosha, мне известны еще следующие:

  • упомянутый выше Osm2mp
    Сайт - http://wiki.openstreetmap.org/index.php/Osm2mp . Ссылка не прямая, требуется хайти по ней браузером и уже на следующей странице кликать на загрузку (особенность бесплатного хостинга я-ля Народ.ру).
    Конвертор неплохой, GPSMapEdit на файл не ругается. Роутинга нет.

  • конвертор Radomir’а
    Описание - http://forum.openstreetmap.org/viewtopic.php?pid=2802#p2802
    Скачать пока нечего. Вроде есть роутинг.

  • конвертор Karl Newman aka SiliconFiend
    Описание - http://forum.openstreetmap.org/viewtopic.php?pid=2836#p2836
    Скачать можно, но сказано, что очень медленный на больших областях. Другая версия только в процессе обдумывания. Неплохо описаны задачи и концепция. Роутинга нет.

Еще есть легенда о том, чтобы сделать Mkgmap способным производить файлы .mp, но насколько продвинулась работа, неизвестно.

В идеале, как мне кажется, конвертор должен представлять собой нечто, могущее работать на сервере, не сильно потребяющее ресурсы в процессе конвертации, но при этом выполняющее ее достаточно быстро. На вход подаются .osm-файлы, разрезанные osmosis, а также файл конфигурации, в котором описываются замены типов. На выходе получается .mp.

У меня конвертер сделан перловым скриптом.
Работает в один проход (пока), но при этом все точки грузит в память.
Конфиги внешние, доступны на http://garminmapsearch.com/osm/mp/
Кстати, по ним нужен фидбэк, ибо делались на коленке.

Что касается скачать, мне-то не жалко, но пока это чисто “лабораторный” скрипт, никому интереса не представляющий :slight_smile:

Почитал мануал по роутингу в маппере…
В общем, назначить RoadID, NodeID и классы дорог (ака псевдороутинг) не проблема.
А вот про запреты поворотов я там ничего не нашёл.
Где про них написано?

Про формат можешь здесь почитать:
http://www.gps-forum.ru/cgi-bin/forum/showpost.pl?Board=gpsgeneral&Number=46944&page=47&view=expanded&mode=flat&sb=1

Нормальный роутинг появиться лишь тогда, когда появятся конкретные правила, как описывать запреты поворотов в osm. Когда поддержка этих правил будет внедрена в potlatch и josm.

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

Asdert, спасибо.
Видимо, действительно только по примерам изучать :slight_smile:

На RoadID накладываются какие-то ограничения, так что их скорее всего придется нумеровать подряд
(то что делает, кстати, gpsmapedit)

osm2navit четырехпроходный,
после первого прохода надо резать ways на куски по всем нодам у которых число линков больше двух.
Также надо рекурсивно объединять куски по нодам у которых число линков равно двум (знаменитая проблема
нарезки линий в .rus и .ntm) и имя,тип,односторонность,etc. совпадают.
Вот для этой последней задачи я “готового” решения не знаю.

Есть еще одностороннее движение и toll.

По моему никакого приличного описания нет,
были только довольно туманные намеки в
http://cgpsmapper.com/download/RFormat_temp.zip

Запреты поворотов (ИМХО) это простая CSV таблица

way_from,node,way_to,time_start,time_end

и ее всегда можно просто присобачить к существующему .mp файлу.

Дело не столько в поддержке как таковой (она уже де-факто есть),
а в “database integrity”. Вот с этим будет тяжело, так что особо не надейтесь на potlatch и josm.

Класс дороги, односторонность, платность - это всё описывается в RouteParams.
Нумеровать RoadID - разумеется, подряд :slight_smile:
Скорее всего, это номер строки таблицы

ну так он же компилятор всё-таки, там совсем другие задачи

Ок, уточнил текст вверху ^^^

Тяжело отслеживать изменения
и вносить поправки не зная way_id → RoadID соответствия.
Ну а секция [NODES] в .mp
вообще не присутствует, что позорно для формата включающего
дорожный граф.

Будем надеяться на скорый osm2img :slight_smile:

usm78-gis,
у меня сейчас в mp родные NodeID и WayID прописаны в комментариях