Многие сталкивались с проблемой выбора навигационной программы - идеального продукта нет. А для пешехода тем более… Поэтому я решил найти универсальный метод применимый почти для любой программы. И этот метод был найден. Метод применим для любых программ где мы можем создать свою карту(Navitel, Garmin, Rusa…)
Проблема пешеходной навигации заключается в том, что навигационные программы строят маршрут по правилам. Включение режима пешехода (где он есть) ситуации не меняет. Большинство программ разрешает пешеходу идти по дороге, но только в направлении движения данной дороги. Т.е. если дорога односторонняя, то и пешеход может идти только в одну сторону. Но если для машины это правильно, то для пешехода нет понятия “встречная”.
Пример. Есть дорога, через нее проходит пешеходный переход, нам надо ее перейти. По логике нам надо подойти к пешеходному переходу и перейти дорогу. Но у большинства программ другая логика - если начать маршрут против движения, то навигационная программа проложит маршрут по движению, т.е. сделает крюк до ближайшего разворота…
Если бы включение режима пешехода разрешало движение по встречной, то проблемы пешеходной навигации не было бы.
Т.к. мы не можем изменить программу, то мы будем менять карту. Именно в изменении карты и заключается мой метод.
Но тут появляется другая проблема - где взять карту? Если для автомобильной навигации все понятно - новые дороги появляются редко, да и проехать можно не везде, то для пешехода нужна карта с обозначением максимального количества тропинок/пешеходных дорожек/обходных путей, также эта карта должна быть всегда в актуальном состоянии – тропинки появляются и исчезают. В качестве такой карты я использую OpenStreetMap.
OpenStreetMap - карта, которую можно менять самому, можно сказать википедия в мире карт. Т.е. данные карты актуальны, а если вы найдете что-то новое или ошибку, то можете добавить/исправить карту. Отличный выбор для пешеходной навигации.
OSM-файлы с отдельными регионами можно брать здесь:
http://gis-lab.info/projects/osm-export.html (3-й столбец(osm xml))
Данные обновляются ежедневно. Т.е. если вы вечером внесли изменения в карту, то утром уже будет файл с вашими изменениями.
Для преобразования карты в польский формат(mp) есть скрипт на перле osm2mp.pl написанный liosha. Также есть его исполняемая версия(exe), но на момент написания статьи была только старая версия. При использовании exe пропустите раздел подготовка(Perl).
Подготовка(Perl):
- Скачиваем и устанавливаем ActivePerl - http://activestate.com/Products/activeperl/index.mhtml
- Дальше требуется установить некоторые модули, для этого запускаете Perl Package Manager
- Жмете Ctrl+1
- Дальше нам нужны следующие пакеты: Template-toolkit, Getopt-Long, Text-Unidecode, List-MoreUtils, Math-Polygon, Math-Geometry-Planar-GPC-Polygon. Часть из них уже установлена. Выбираете пакеты из списка, кликаете правой кнопкой мыши по пакету и смотрите - если есть пункт начинающийся на “Install”, то выбираете его.
- После того как отметите все необходимые пакеты, нажмите Ctrl+Enter (или File->Run Marked Actions)
- Нажмите yes если появится вопрос об установке пакетов.
- Закройте Perl Package Manager
- Зайдите в командную строку и введите perl -MCPAN -e “install Math::Polygon::Tree”
- Дальше начнется долгий процесс установки модуля Math-Polygon-Tree, дождитесь окончания
- Perl и все необходимые библиотеки установлены.
Рассмотрим изготовление карты Воронежской области для программы Навител(применимо и для других программ с некоторыми изменениями(частично описаны ниже)):
Если вы используете perl-версию, то сначала сделайте подготовку(Perl) - описана выше
I) Создание MP-карты (польский формат)
- Создаем папку в корне диска, называем ее MapNav (Название может быть любое, но без русских букв. В нашем случае D:\MapNav)
- Скачиваем Нужную область (voronezh.osm.bz2)
- Распаковываем любым архиватором, получаем файл с областью (voronezh.osm)
- Кладем файл в папку из п.1 (D:\MapNav)
- загружаем osm2mp.pl (http://osm2mp.googlecode.com/svn/trunk/osm2mp/osm2mp.pl) и кладем в туже папку
- загружаем header.tpl (http://osm2mp.googlecode.com/svn/trunk/osm2mp/header.tpl) и кладем в туже папку
- Далее берем poi.cfg для навитела (http://maps-by.googlecode.com/hg/configs/osm2mp-navitel/poi.cfg) и кладем в туже папку
- Далее берем poly.cfg для навитела (http://maps-by.googlecode.com/hg/configs/osm2mp-navitel/poly.cfg) и кладем в туже папку
- Редактируем poly.cfg:
Открываем WordPad-ом и меняем все 0x48 на 0x16 - На момент написания статьи в файле неправильно описаны пешеходные дорожки. Затем превращаем односторонние дороги в двусторонние - находим что-то похожее на RouteParams=speed,class,oneway,toll,emergency,delivery,car,bus,taxi,foot,bike,truck, после чего идет список дорог, нас интересует последние последовательности цифр, например:
highway motorway r 0x01,2 0 4 6,4,1,0,0,0,0,0,0,0,0,0
В этом случае нас интересует 6,4,1,0,0,0,0,0,0,0,0,0
Нужно изменить 3-ю цифру(в примере выше - 1) на 0 Проделываем это для всех дорог(около 20 дорог из них односторонних(3-я цифра равна 1) около 5). Сохраняем изменения. - Правим osm2mp.pl
Открываем в WordPad, ищем там $rp[2] = $yesno{$waytag{‘oneway’}} заменяем на $rp[2] = 0
Сохраняем. Это нужно для превращения односторонних дорог в двусторонние дороги. - Теперь запускаем osm2mp.pl со следующими параметрами:
osm2mp.pl --norestrictions --navitel voronezh.osm > foot.mp
В данном случае voronezh.osm - osm-файл области, а foot.mp - имя файла для генерируемой карты. - Проверим правильность редактирования фала poly.cfg, для этого откроем получившийся файл из предыдущего пункта(foot.mp) И попробуем найти там DirIndicator, если его нет в файле, то все дороги двусторонние. Если есть, то заново начинаем с пункта 9. Далее попробуем найти 0x48 если вдруг они остались, то их нужно заменить на 0x16
- Теперь у нас есть карта в польском формате для Навитела.
ОТЛИЧИЯ ДЛЯ ДРУГИХ ПРОГРАММ:
- В пункте 11 не нужен параметр --navitel
Запуск osm2mp.pl --norestrictions voronezh.osm > foot.mp - Требуются другие Файлы poly.cfg и poi.cfg
Для Гармин можно взять тут:
http://osm2mp.googlecode.com/svn/trunk/osm2mp/poi.cfg
http://osm2mp.googlecode.com/svn/trunk/osm2mp/poly.cfg
II) Изготовление карты из MP
Далее берем конвертор для вашей навигационной программы, в случае Навитела это GPSMapEdit.
- Скачиваем GPSMapEdit (http://geopainting.com/ru/)
- Открываем в нем нашу карту foot.mp
- Делаем экспорт карты в формат Navitel 3.2.6 (File->Export->Navitel 3.2.6)
- Теперь у нас есть пешеходная карта для Навител 3.2.6
III) Загружаем карту в навигатор и можно использовать.
Это первая версия статьи, в дальнейшем она будет поправлена и дополнена. Автором статьи являюсь я(Ntkiller). При копировании статьи ссылка на автора обязательна. Если есть какие-либо вопросы/предложения - пишите, постараюсь ответить.
По возможности вместе со статьей выложу готовые osm2mp.pl, poly.cfg