<DOWNLOAD>

Самодельные карты для Magellan GPS

Введение

До недавнего времени считалось, что самодельные карты можно делать только для Garmin GPS, так как для них были разработаны такие замечательные программы, как GPSMepEdit (Konstantin Galichsky) и cGPSmapper (Stanislaw Kozicki).

Несмотря на то, что карты для Garmin и Magellan имеют одно и то же расширение файла (*.img), формат карт совершенно различный. В Magellan GPSR карта (*.img файл) представляет собой набор объектов (слоев) и базу данных в Raima Database формате. IMG файл составлен из множества компрессированных файликов (в разных форматах), которые описывают объекты и поведение карты на экране. Преимуществом такого подхода у Magellan GPSR является более быстрое отображение карт и возможность загружать карту любой выбранной области (а не целого предопределленного региона, как у Garmin). Mapsend_format yahoo group занималась определением формата карт, в File секции этой группы можно найти спецификацию основных форматов. Участниками группы были написаны программы для создания простых объектов, но все они далеко не пользовательского уровня.

Ситуация изменилась коренным образом, когда 30 сентября 2003 года было обнаружено, что свободно лежащий на ftp сервере ThalesNavigation (разработчика software для Magellan) ftp://thalesnavigation.com MobileMapper Office годится для создания самодельных карт. MobileMapper Office (MMO) был разработан для устройств MobileMapper (для профессиональной работы по georefference, стоимостью более 1000$). Автором открытия была образована новая yahoo group: MobileMapper, куда и переместилась работа по созданию самодельных карт.

Первая версия MMO 1.00 создавала карты, которые были полностью совместимы с Magellan GPSR, более поздние версии (1.10 и 2.00) были переработаны Thales Navigation, чтобы исключить такую возможность. Эта "защита" была быстро преодолена разработкой конверторов (см. convertMMOoutput (command line) и MMOconverter (Windows) на этом сайте.

Все версии ММО могут создавать карты из слоев, загружаемых из Shape files (*.shp), MapInfo (*.mif) и AutoCad (*.dxf) практически любых систем координат. Эти форматы и системы координат могут быть преоразованы друг в друга с помощью того же ММО. ММО может создавать объекты следующих типов:

1. Points (точки) 2. Polylines (линии) 3. Polygones(многоугольники)

Magellan GPSR поддерживают большее количество объектов, помимо перечисленных трех типов есть еще:

1. POI (Points-of-Interest) 2. Топография (в виде матрицы высот, отображаемая на экране как изолинии, но с возможностью строить профили, определять высоту в любой точке и.т.д)

Для того, чтобы создавать эти объекты были разработаны программы POI_DB_creator и TOPO_creator, которые можно найти на этом сайте. После того как все желаемые объекты созданы, они будкт видны на экране ММО и потом любой желаемый регион может быть залит в GPSR.

До недавнего времени существенным недостатком ММО было то, что он создавал только одну группу для поиска, в который находились все объекты вне зависимости от их типа (например, улицы, реки, точечные объекты надо было искать внутри одной группы Streets and Roads). В августе месяце 2004 г. мной было обнаружено, что DLLs MMO 1.00 и MM1.10 содержат гораздо больше функций, чем показано пользователям (видимо Thales Navigation просто поленились их убрать из версии для внутреннего пользования). Путем несложной "хакерской" работы они стали доступными (для версии ММО 1.00). После этого ММО 1.00 может создавать гораздо более продвинутые карты с любым количеством search groups, а также POIs. Как сделать эти новые функции доступными смотри UnknownMMO-Advanced Maps секцию этого сайта. Получается, что самой "продвинутой" версией является ММО 1.00, в которой эти функции могут быть использованы. ММО 1.00 сейчас нет на сервере ThalesNavigation, единственное известное мне место где ее можно добыть это линк в Link секции MobileMapper yahoo group. Размер файла ММО 1.00 около 60 Мб, к сожалению условия моего провайдера не позволяют разместить мне этот файл здесь. Если у кого-нибудь есть место и bandwidth позволяет, пожалуйста, разместите ММО 1.00, этим вы окажете неоценимую услугу всем кто хочет делать свои карты (копию ММО1.00 я могу предоставить). Пожалуйста, не просите меня прислать ММО1.00 для единоличного использования, у меня, к сожалению, нет такой возможности.

Update: (Большое спасибо Илье, теперь MMO1.00 доступен на http://www.npoburenie.ru/ftp/mmo100/index.html).
17-09-05: Дмитрий вложил MMO1.0 на его сайт: http://www.rhamphorhinkx.ecohost.ru/mmo100/

Как пример рассмотрим создание карты Москвы. В этом примере использованы функции Advanced Map creation dialog и POI_DB_creator.

Данные

Так как сейчас я нахожусь не в России, мне плохо известно какие данные можно добыть там. Для этого примера я использовал карты Москвы для Garmin, которые нашел в Интернет. Существует несколько Garmin-овских карт Москвы. Я использовал карту улиц из карты 10000077.img (взятую на http://www.rus-roads.ru/gps/maps/50.htm) как наиболее подробную. POIs (станции метро, аптеки, почты, нотариальные конторы, кинотеатры, театры, и др.) были взяты из карты Russia.zip (http://sinfo.ru/offroad/gps/). Данные могут быть подготовлены и из бумажной карты, существует множество ссылок, где можно найти такие примеры (например в File секции MobileMapper yahoo group).

Подготовка *.shp файлов

1. Конвертируем Garmin-овские карты в Polish text формат. Это может быть сделано с помощью GPSMapEdit (File-SaveAs-Polish format) или cGPSMapper (cGPSmapper yourfile.img). В результате имеем 2 файла (по одному для каждой из использованных карт). В этих текстовых файлах содержится вся информация из карт в виде набора объектов (сегментов улиц, точки, полигоны, POI, и.т.д).

2. Конвертируем полученные Polish text файлы в Shape (*.shp) файлы. Я использовал для этого программу TXT2SHP (by Claudio Galli), эта freeware программа лежит в Mapsend_Format group. Программа работает замечательно, но очень медленно: преобразование каждой из карт заняло 30-60 минут. Наверняка существуют и другие подобные программы, задача не представляется слишком сложной. Заметим, что при таком методе нам не нужна лицензионная версия GPSMapEdit, с помощью ММО Advanced Map Dialog различные объекты могут быть импортированы из ОДНОГО *.shp файла.

15 Dec 2005: Update: PTxt2shp program on this site: fast and filtered polish text to ESRI shape files.

В результате мы имеем по 4 файла для каждой из карт: 1. Линии (*_L.shp) 2. Точки (*_P.shp) 3. Полигоны (*_A.shp) 4. Символы (*_S.shp). Три файла (Линии, точки, полигоны) из первой из карт (10000077.img) будут использованы для построения карты; один файл (символы) из второй карты будет использован для POI. Для определенности будем называть файлы для первой из карт 1_X.shp, а для второй 2_X.shp.

Подготовка данных для POI

Конвертируем *.shp файл с символами из второй карты в формат необходимый для изготовления POIs. Возможны два варианта для POI: 1. программа POI_DB_creator с этого сайта и 2. Использование POI creation dialog MMO (из "спрятанных" функций ММО (см. Unknown MMO-MMO and POI). Для первой из програм нам нужен текстовый файл (*.csv) в формате описанном в разделе POI_DB_creator, для второго варианта DBASE .dbf файл. Оба формата похожи, они легко могут быть трансформированы друг в друга с помощью, например, Excel. Я буду описыват POI_DB_creator, мне она представляется более удобной и более функциональной.

Shape (*.shp) файлы содержат собственно координаты точек, для каждого из *.shp имеется также *.dbf файл с текстовыми полями. Нам надо создать один файл, где будут и текстовык поля и координаты. Для этого можно использовать лизензированный ArcView или Map Maker (который имеет 30 дневный trial период, но легко продлевается перестановкой даты в Windows).

13 Feb 2006: Update: Please see PText to SHP page for Shp2csv program description. Map Maker is no longer needed.

В Map Maker: Импортируем наш 2_S.shp из второй карты (Utilities-Vector Utilities-Import Files-ArcView Shape files; Save; Utilities-Vector Utilities-Export Files-to Dbase/FoxPro dbf with XY). Полноценный dbf почему-то не создается, но это беда небольшая, сделаем вручную: импортируем в Excel 2_S.dbf, импортируем в Excel *.dbf созданный Map Maker, делаем copy-paste двух колонок с координатами в первый файл. Сортируем по колонке с ID кодами (которые определяют как выглядит точка в Garmin, в сущности это есть сортировка по категориям (что такое категории смотри "What is a POI"). Удаляем лишние колонки, оставляя только названия и координаты, добавляем названия категорий как описно в POI_DB_creator. (я еше немного подкорректировал данные, написал простенький скриптик, чтобы удалить дублированные точки). Спасаем в CSV формате (с расширением *.txt). Немножко еще корректируем полученный текстовый файл средствами текстового редактора (удаляем запятые после названия категории, заменяем запятую на запятую-пробел). Вот что должно получится в результате:

Заметим, что это самое простое представление POI, где есть только имя и координаты. Magellan формат позволяет для каждой POI добавлять еще множество полей с полезной информацией, например, адресом, описанием и.т.д. и.т.п. Смотри раздел POI_DB_creator (AUX fields) и What is a POI.

OK, данные готовы, приступим к изготовлению карты.

Подготовка ММО

Как уже писалось, мы должны "улучшить" ММО, чтобы использовать спрятанные от нас функции. Подробно см. Unknown MMO - Advanced Maps.

Распаковываем unhideMMO.zip в корневую директорию ММО1.00 (default C:\Program Files\MobileMapper Office). Запускаем unhideMMO.exe. В результате имеем вместо одной программы три:

Program Icon Files
Стандартный MMO MMOffice.exe, mmomain.exe, CustMap.dll
MMO для POI
MMOfficePOI.exe, mmomain.poi, CustMap.dll
MMO для Advanced Maps MMOfficeGRP.exe, mmomain.grp, CustMap.grp

В этом примере мы будем использовать "ММО для Advanced Maps" и "стандартный ММО". Для POI будем пользоваться POI_DB_creator (хотя "ММО для POI" ,конечно, тоже годится).

Изготовление карты

1. Запускаем "ММО для Advanced Maps". Нажимаем Background Maps, видим примерно вот что:

2. К имеющимся стандартным группам (Roads, Railroads, Hydrography, Parks) добавляем User groups (Cemetery, Industrial, Sports, такие объекты есть на нашей Garmin карте). Для каждой из User groups добавляем по одному слою (в нашем случае Polygone типа). Для Standard group добавляем наши 1_X.shp файлы (в данном примере они имеют название msk0_X.shp). Для Roads, Railroads это файл типа Lines (1_L.shp), для Parks это Polygones (1_A.shp), для Hydrography это 2 файла - с Lines (для тонких рек) и Polylines для толстых. Для всех объектов выбираем LABEL в Name-Source field (это будут имена улиц, парков, рек показываемых на карте). При желании можно добавить и другие поля, их можно будет видеть как на экране компьютера, так и на экране GPSR, про то как их использовать смотри "Unknown MMO- Advanced Maps". В наших данных нет таких полей (да и есть ли они в Garnin вообще?). Аналогично поступаем и для User Groups, там для всех групп добавляется файл 1_A.shp (polygones)).

3. В каждом из наших *.shp файлов содержатся слои разных типов, мы можем их селектировать по TYPE field (как было в Garmin). Для каждой из групп выбираем соответствующие слои, вот пример для Roads:

Используем Filter для того чтобы выбрать объекты соответствующего типа. О типе (коде) Garmin-овских объектов можно узнать с помощью GPSMapEdit, File-Map properties-Statistics. Вот как это выглядит:

Аналогично поступаем для всех слоев всех групп.

С помощью Advanced Map dialog вид объектов из Standart group можно изменить (на экране компьютера, но не на GPSR, на то они и стандартные), вид объектов из User Group можно изменить как для компьютера так и для GPSR. При желании можно не использовать Standard groups и использовать только User groups. Вид объектов на экране компьютера и на экране GPSR можно будет изменить и потом (для РС см. MSmapView программу на этом сайте, а для GPSR см. joinmaps программу на MobileMapper yahoo group, а также описания в этой же группе).

Вот, в общем-то и все. Если есть какая-нибудь уже attached map в ММО, зайдите в Operations-Setup Atached Maps и сделайте Detach для всех карт. Нажмите Operations-Add map to Mapsend (или нажмите кнопку). Не буду описывать как спасать проект, компрессировать-раскомпрессировать карты, это очевидно из меню.

Закройте "ММО для Advanced Maps". Запустите addSTDGRP.exe (она входит в комплект unhideMMO.zip и добавляет стандартные группы в export.cfg файл. Добавляем строку SEARCH_GROUPS = N n1 n2 ... в [GROUP] раздел export.cfg файла, где N это количество групп для показа в приемнике, n1, n2, ... -порядковые номера групп. Вот так:


Теперь запускаем стандартный ММО и смотрим как оно получилось.

POIs

Теперь добавим POIs из файла описанного выше. Распаковываем POI_DB_creator в любой фолдер. Копируем cat.def файл в какой-нибудь файл, скажем moscow.def, в первой строке файла прописываем путь к директории где лежат иконки для ММО (эти иконки определяют вид в ММО, не в приемнике. В приемнике есть аналоги этих иконок, они не зависят от иконок используемых в ММО; всего есть 87 категорий, какая из иконок будет использоваться в приемнике определяется внутренним именем категории (негде не показываемом) (см. третий столбец в *.def файле), эти имена изменять нельзя; можно менять только имя.категории из первого столбца. Это имя и будет показано в ММО и приемнике. Меняем имена категорий (первый столбец) так чтобы они соответствовали желаемым именам (те что есть в текстовом файле в квадратных скобках) и чтобы использовались иконки соответствующего вида. Вот что есть в moscow.def файле из нашего примера:

Здесь мы изменили имена из cat.def файла, которые соответствуют подходящим иконкам. Например категория Metro будет показана значком туннеля (ну, не предусмотрел Magellan специальных иконок для метро!). Не используемые линии закоментированы (будкт пропущено) ";", это для простоты понимания этого примера, вообще это делать не обязательно.

Запускаем POI_DB_creator, "Menu-Import cat Definitions" импортируем наш moscow.def. Импортируем наш *.txt файл с POIs ("File-Import new CSV"). Нажимаем "Create POI DB". Готово. Подробности использования POI_DB_creator см. на этом сайте. Напомним, что точечные объекты лучше создавать как POI, а не как точечные слои. Основным преимуществом POI является возможность выбора во время работы приемника какие категории показывать, а какие - нет.

Запускаем стандартный ММО. Вот пример того что получилось:

А вот несколько картинок с GPSR, названия улиц будут видны при большем увеличении.

Саму карту можно взять в <Download>. Вообше, на сервере http://www.bicimapas.com.mx/Magellan_World_Maps.htm мы пытаемся создать хранилище самодельных карт, дело пока новое, карт немного, если что создадите загружайте туда, лучше если карты будут находится в одном месте.

Будут какие вопросы, пишите.