RU:Osm2mp
Contents |
Osm2mp — это скрипт на языке программирования Perl, написаный пользователем Liosha для преобразования данных OSM в польский формат (.mp). Файлы, полученные в результате конвертирования, поддерживают маршрутизацию.
Основные возможности
- настраиваемый набор типов;
- генерация роутингового графа;
- поддержка отношений multipolygon и restriction;
- обработка данных для совместимости с cgpsmapper (близкие узлы, самопересечения);
- отчёт об обнаруженных ошибках в исходных данных.
В какие форматы можно преобразовать .mp-файлы
Полученный файл в Польском формате (.mp) можно сконвертировать в разные форматы для навигаторов:
- Для Garmin: с помощью cgpsmapper или Mapcenter
- Для программы Навител: с помощью редактора GPSMapEdit. Инструкции здесь.
- Для программы GIS Russa. Инструкции: здесь.
- Для программы PocketGIS. Конвертер: здесь.
Установка программы в среде Windows
Для запуска программы-скрипта osm2mp, вам понадобится установить ActivePerl для Windows. После установки ActivePerl обязательно надо установить некоторые модули. Проделаем это:
- Перейти по ссылке в SVN и скачать оттуда следующие файлы:
garmin.yml, nodes-common.yml, nodes-garmin-custom.yml, ways-areas-common.yml, ways-areas-garmin-custom.yml, ways-lines-common.yml, ways-lines-garmin-custom.yml, ways-roads-common.yml, ways-roads-garmin.yml и сам скрипт osm2mp.pl
в любое место, в одну папку на диске, (нажимаем правой кнопкой мышки на ссылку и выполняем команду "Сохранить объект как...").
Примечание: для конвертирования для Навител, файлы navitel.yml, nodes-navitel.yml, ways-areas-navitel.yml, ways-lines-navitel.yml, ways-roads-navitel.yml взять тут. - Открыть файл garmin.yml редактором WordPad и дополнить значение переменной Name в секции [IMG ID] так: Name=[% mapname %] (Converted by Ваше_Имя). Это необходимо для того, чтобы при просмотре инфо конвертированной карты, отображалось имя того, кто выполнил конвертирование.
- Скачать и установить ActivePerl — http://www.activestate.com/activeperl/
- Выполнить Dos-команду \Perl\bin\ppm.bat.
- В окрывшемся, через некоторое время, окне Perl Package Manager (PPM) выбрать в меню View команду All Packages
- найти в списке модуль Template-toolkit и выделить его
- В меню Action (или в контекстном меню по правому клику) выполнить команду Install Template-toolkit
- Таким же образом отметить для установки модули:
Getopt-Long, Text-Unidecode, List-MoreUtils, Math-Polygon, Math-Polygon-Tree, Math-Geometry-Planar-GPC-Polygon, YAML, Tree-R, Encode-Locale, PerlIO-via-Unidecode
если они ещё не установлены - В меню File выполнить команду Run Marked Actions
- Выйти из PPM
Установка программы в среде Linux
OpenSuse
Загрузить скрипт и сопутствующие файлы:
svn co http://osm2mp.googlecode.com/svn/trunk/
Примечание: для конвертирования для Навител, конфигурационные файлы взять тут.
При необходимости установить perl (в OpenSuse по умолчанию установлен)
Установить дополнительные модули
su zypper in perl-YAML perl -MCPAN -e "install List::MoreUtils" perl -MCPAN -e "install Text::Unidecode" perl -MCPAN -e "install Data::Dump" perl -MCPAN -e "install Math::Polygon" perl -MCPAN -e "install Inline::MakeMaker" perl -MCPAN -e "install Math::Geometry::Planar::GPC::Polygon" perl -MCPAN -e "install Math::Polygon::Tree" perl -MCPAN -e "install Tree::R" perl -MCPAN -e "install Encode::Locale" perl -MCPAN -e "install Template::Context"
Gentoo
При необходимости установить perl, svn и yaml для perl
emerge perl emerge subversion emerge dev-perl/yaml
Установить дополнительные модули perl
perl -MCPAN -e "install List::MoreUtils" perl -MCPAN -e "install Text::Unidecode" perl -MCPAN -e "install Data::Dump" perl -MCPAN -e "install Math::Polygon" perl -MCPAN -e "install Inline::MakeMaker" perl -MCPAN -e "install Math::Geometry::Planar::GPC::Polygon" perl -MCPAN -e "install Math::Polygon::Tree" perl -MCPAN -e "install Tree::R" perl -MCPAN -e "install Encode::Locale" perl -MCPAN -e "install Template::Context"
Загрузить скрипт и сопутствующие файлы:
svn co http://osm2mp.googlecode.com/svn/trunk/
Примечание: возможно, если версия YAML, установленная в системе, немного младше указанной в скрипте, придется поправить строчку "use YAML 0.72;" на установленную версию, например "use YAML 0.71;"
Примечание: для конвертирования для Навител, конфигурационные файлы взять тут.
Установка в FreeBSD
В FreeBSD ковертер достепен для установки из исходных кодов и из портов.
- Для установки их исходных кодов необходимо загрузить конвертер из хранилища http://osm2mp.googlecode.com/svn/trunk/, а также установить или обновить perl и используемые конвертером perl-модули до требуемой версии.
- Для установки из портов нужно перейти в директорию с портом (ports/converters/osm2mp) и установить порт, например так:
#cd /usr/ports/converters/osm2mp #make #make install
Настройка файла poly.cfg
Формат строки, описывающей роутинговую линию
<key> <value> r <lcode>,<prior> <minlvl> <maxlvl> <speed>,<class>,<oneway>,<pay>,<a1>,<a2>,<a3>,<a4>,<a5>,<a6>,<a7>,<a8>
где:
| Аргумент | Что обозначает | Возможные значения |
|---|---|---|
| <key> | Ключ тега | |
| <value> | Значение тега | |
| r | Тип, в который будет преобразован объект | r — роутинговая полилиния |
| p — полигон (внимание! это значение не для роутинговой полилинии) | ||
| l — линия ??? (внимание! это значение не для роутинговой полилинии) | ||
| s — ??? (внимание! это значение не для роутинговой полилинии) | ||
| <lcode> | Код, которым будет обозначена линия на карте | Число в шестнадцатиричном формате. |
| <prior> | Приоритет конвертации | Число. Из всех тегов линии для конвертации выбирается тег с наибольшим приоритетом. |
| <minlvl> | Минимальный уровень, на котором виден объект | Десятичное число. |
| <maxlvl> | Максимальный уровень, на котором виден объект | Десятичное число. |
| <speed> | Класс скорости | 1 — до 5 км/ч — пешеходные дорожки в насел. пунктах, загородные тропы |
| 2 — до 20 км/ч — внутридворовые проезды, загородные труднопроходимые дороги | ||
| 3 — до 40 км/ч — дороги с плохим покрытием в насел. пункте, загородные участки дорог с ограничением скорости | ||
| 4 — до 60 км/ч — улицы, магистрали, проселочные дороги | ||
| 5 — до 80 км/ч — автомагистрали в насел. п., загородные дороги с небольшими дефектами | ||
| 6 — до 90 км/ч — крупные автомагистрали в насел. п., обычные загородные дороги с покрытием | ||
| 7 — до 110 км/ч — в насел. п. применяется крайне редко, загородные автомагистрали | ||
| 8 — без ограничений — в насел. п. не применяется, загородные улучшенные автомагистрали | ||
| <class> | класс дороги | 0 — улица малая, аллея, просёлочная дорога, тропа |
| 1 — крупная дорога, круговое движение | ||
| 2 — центральная улица, прочие загородные дороги | ||
| 3 — основное шоссе | ||
| 4 — автомагистраль, съезд с дороги | ||
| <oneway> | одностороннее движение | 1 — да, 0 — нет |
| <pay> | платная дорога | 1 — да, 0 — нет |
| <a1> | Не для служб спасения | 1 — да, 0 — нет |
| <a2> | Не для служб доставки | 1 — да, 0 — нет |
| <a3> | Не для машин и мотоциклов | 1 — да, 0 — нет |
| <a4> | Не для автобусов | 1 — да, 0 — нет |
| <a5> | Не для такси | 1 — да, 0 — нет |
| <a6> | Не для пешеходов | 1 — да, 0 — нет |
| <a7> | Не для велосипедистов | 1 — да, 0 — нет |
| <a8> | Не для грузовиков | 1 — да, 0 — нет |
Формат строки, описывающей полигон
<key> <value> p <pcode> <minlvl> <maxlvl> <ncode>,<nminlvl>,<nmaxlvl>
| Аргумент | Что обозначает | Возможные значения |
|---|---|---|
| <key> | ключ тега | |
| <value> | значение тега | |
| p | Тип, в который будет преобразован объект | r — роутинговая полилиния (внимание! это значение не для полигона) |
| p — полигон | ||
| l — линия ??? (внимание! это значение не для полигона) | ||
| s — ??? (внимание! это значение не для полигона) | ||
| <pcode> | Код, которым будет обозначен полигон на карте | число в шестнадцатиричном формате. |
| <minlvl> | Минимальный уровень, на котором виден объект | десятичное число |
| <maxlvl> | Максимальный уровень, на котором виден объект | десятичное число |
| <ncode> | код точки, которая будет поставлена на карте в центр полигона (видна на уровнях от <nminlvl> до <nmaxlvl>) |
число в шестнадцатиричном формате |
| <minlvl> | Минимальный уровень, на котором видна точка с кодом <ncode> в середине полигона | десятичное число. |
| <maxlvl> | Максимальный уровень, на котором видна точка с кодом <ncode> в середине полигона | десятичное число. |
Пример файла poly.cfg
Вопрос: Разъясните, пожалуйста, что означают цифры, в файле poly.cfg, на примере следующих строчек из этого файла:
junction roundabout r 0x0c,3 0 2 3,3,1,0,0,0,0,0,0,0,0,0 natural water p 0x3f 0 3 0x650d,0,2
Ответ:
- Если среди всех тегов линии встречается junction=roundabout, то конвертировать ее в роутинговую ("r") полилинию с типом "0x0c" ("Круговое движение") и приоритетом 3 (из всех тегов линии для конвертации выбирается тег с наибольшим приоритетом), видимая на уровнях от 0 до 2 и флагами маршрутизации (в терминах польского формата) 3,3,1,0,0,0,0,0,0,0,0,0
- Если у линии есть тег natural=water, конвертировать ее в полигон ("p") типа 0x3f ("Озеро среднее (11-25 км²)"), видимый на уровнях от 0 до 3 и поставить в центр озера точку типа 0x650d "Озеро", видимую на уровнях от 0 до 2.
Для junction=roundabout флаги маршрутизации такие: класс скорости 3 (60 км/ч), класс дороги 3 (Principal HW), односторонняя (1), не платная (0), запретов движения конкретных видов транспорта нет (0,0,0,0,0,0,0,0). Другие флаги маршрутизации можно посмотреть здесь: http://v-dorogu.narod.ru/article/routemap.htm
Настройка файла poi.cfg
Вопрос: Что означает city в строке файла poi.cfg:
place hamlet 0x0C00 0 2 city
Ответ: Значит, для точки надо определить и записать регион и страну.
Вопрос: Какие дефолтные значения используются в файле poi.cfg ? Ответ: минимальный уровень приближения: 0, максимальный уровень приближения: 1.
Запуск
osm2mp.pl [ключи] file.osm > file.mp
Ключи программы
|
Для отключения действия ключа его следует указывать с префиксом "no". Например: --norouting для создания карты без графа маршрутизации.
Другие полезные скрипты
В SVN находятся и другие полезные скрипты:
osmget & osmsort
- osmget.pl — скачивает квадрат кусками в файл;
- osmsort.pl — приводит этот файл в порядок.
параметры osmget — координаты углов квадрата через запятую:
osmget minlon,minlat,maxlon,maxlat > draft.osm
можно слить несколько кусков, тогда ставим >> вместо >
osmget minlon2,minlat2,maxlon2,maxlat2 >> draft.osm
потом
osmsort draft.osm > final.osm
splitter
- splitter.pl — разбивает OSM-файл на части примерно одинакового заданного размера.
Запуск:
splitter <file.osm> [ключи] > <file.txt>
-file.osm — карта в формате OSM
-file.txt — имя файла с отчётом
Ключи:
|
getbound
- getbound.pl — скрипт автоматического создание файла территории, на которую будет производиться конвертирование данных OSM в польский формат скриптом osm2mp.pl (ключ --bpoly=<poly-file>).
Команда для запуска:
getbound.pl <relation_id> [ключи]
Где:
<relation_id> — номер линейного или полигонального объекта в картографической базе OSM с типом boundary или multipolygon
Ключи:
-o <file> — имя файла для записи территории (по умолчанию: STDOUT); -proxy <host> — ip-адрес прокси-сервера (если используется); -onering — преобразование и запись данных о территории как единый контур;
Например: Для создания poly-файла, необходимого для конвертирования данных OSM попадающих только на территорию Истринского района Московской области России http://www.openstreetmap.org/browse/relation/184072, требуется запустить скрипт со следующими параметрами:
getbound.pl 184072 -o istra.poly -onering
Подробнее о файлах *.poly можно прочитать по ссылке http://gis-lab.info/qa/osm-poly.html
Полезные ссылки
- Скачать последнюю версию скрипта osm2mp.pl.
- Посмотреть исходный код и историю изменений osm2mp (SVN программы)
- Скачать ActivePerl для Windows -
- Общие рекомендации по оформлению навигационных карт для программы Навител Навигатор
- Русскоязычное обсуждение на форуме OSM
- Англоязычное обсуждение на форуме OSM -
- Скачать — файлы конфигурации osm2mp для конвертации файлов OSM в польский формат с набором типов Навител.
- Периодически обновляемая библиотека карт России в формате .osm
- Периодически обновляемая библиотека карт России, сконвертированных программой osm2mp для навигаторов Garmin.
- периодически обновляемая библиотека карт России, сконвертированных программой osm2mp для программы GisRussa.
- cGPSmapper — конвертор Польского формата (.mp) в формат Garmin IMG и описание формата.
- Страничка на вики-OSM о редакторе GPSMapEdit.