6. Последние шаги по созданию карты. Gmaptool.
После того, как мы скомпилировали карту, делаем финальные шаги. Чтобы она отображалась на экране навигатора так же, как и в mapedit++, надо ее "раскрасить". За раскраску карты отвечает файл
.TYP. Помните, как в начале работы мы импортировали файл osm_510.txt в пункт "Map Skins..." нашего редактора mapedit++? Это и был тот файл .TYP, только разобранный в формат .txt (это было сделано в редакторе TYP-файлов.). Garmin же понимает только TYP-файлы. Чтобы довести нашу карту до нормального вида и добавить ее к вашим остальным картам, понадобится
Gmaptool. Берем
здесь. Далее нам понадобится TYP-файл для раскраски карты. Берем его из конца поста, распаковываем и ложим рядом с нашей картой.
Устанавливаем Gmaptool, запускаем и видим главный экран - вкладку
"Files". Для того, чтобы "склеить" нашу карту с раскраской, левой кнопкой мыши закидываем в Gmaptool нашу карту и файл .TYP. Должно получиться следующее:
Обращаем внимание на строчку
"FID=510 PID=1...". Да, каждый TYP-файл раскраски имеет свой FID и PID. Нам нужно присвоить эти значения нашей карте, чтобы навигатор смог соотнести раскраску нашей карте. Ему не важно имя TYP-файла, ему нужны значения FID и PID. По этим значениям он сам найдет нужный TYP и раскрасит карту. Итак, склеиваем. Нажимаем вкладку
"Join", заполняем пустые поля.
В поле
"Output file" указываем имя нашего склеенного набора. Его мы и добавим к остальным картам. Заполняем все необходимые поля (Mapset Name, FID, PID) и нажимаем
"Join all". В результате у нас получится карта с раскраской, которую мы и добавим ко всем остальным картам, находящимися в навигаторе (файле gmapsupp.img.).
Внимание! Прежде, чем что-то делать со своей основной картой навигатора gmapsupp.img, делаем резервную копию! Так меньше вероятность, что мы что-нибудь случайно сломаем в основном наборе карт. Это будет некой "контрольной точкой восстановления".
Но прежде, чем это сделать, определим
DrawPriority основной карты. Открываем Gmaptool, во вкладку
"Files" закинем мышкой gmapsupp.img. В этой же вкладке нажмем кнопку
"Info". Смотрим графу
"Prio". На скрине ниже - DrawPriority для одной карты.
Если вы используете карты OSM, обычно их DrawPriority = 25 (но лучше перепроверить). Если мы рисуем карту внутри этого набора и хотим, чтобы она отображалась поверх, нам нужно поставить своей карте DrawPriority
<= 24. В Gmaptool очищаем вкладку
"Files", закидываем нашу карту. Убеждаемся, что она единственная в списке. Далее переходим во вкладку
"Write", ставим галочку напротив
"Set draw priority", в поле пишем число
24 и менее.
Нажимем
"Write all". Готово.
Если у вас навигатор поновее (модели eTrex 20 и новее), можно попробовать положить нашу карту в папку аппарата, подключенного к компьютеру в режиме USB-накопителя. Подключаем наш аппарат к компьютеру, включаем кнопкой питания, убеждаемся, что аппарат обнаружился в режиме накопителя (либо включаем соответствующий пункт в меню навигатора на старых аппаратах, обычно
Настройка -> Интерфейс -> Накопитель USB). Открываем
X:\Garmin (где X - буква карты памяти нашего навигатора). Видим там файл
gmapsupp.img. Копируем нашу вновь созданную карту рядом с этим файлом. Отключаем аппарат от компьютера, включаем, смотрим, появилась ли в списке карт новая. Если же аппарат достаточно старый, этот метод может не сработать, придется разобрать файл gmapsupp.img на отдельные карты, докинуть нашу карту туда и собрать gmapsupp.img обратно.
Если выше указанный способ не сработал (обычно на аппаратах серии eTrex Legend / Vista, про серию GPSMap не подскажу, но думаю, что в GPSMap старых серий может возникнуть та же проблема) и карта не появилась в списке, делаем следующее. Если у нас есть родная гарминовская / другая программа по заливке карт, используем ее (тут уже как вам удобнее). Если программы нет, делаем через Gmaptool. Чтобы добавить нашу вновь созданную карту ко всем остальным через Gmaptool, сначала разберем наши карты из навигатора - файл gmapsupp.img. Для этого заново откроем Gmaptool (либо на главной вкладке можно поудалять все файлы из списка). На главной вкладке
"Files" закидываем мышкой свой набор карт, имеющийся в навигаторе - файл
gmapsupp.img. Далее - переходим на вкладку
"Split". В
"Output Directory" выбираем папку, куда мы разберем наш контейнер. В пункте
"Create" выбираем
"Single maps". Далее нажимаем кнопку
"Split all". Ждем.
В папке, которую мы указали для разборки, появится много карт - наш разобранный gmapsupp.img.
Скопируем в эту папку нашу новую карту. Очищаем вкладку
"Files". Не забываем это делать после каждой операции в Gmaptool - можно добавить что-то еще в свой набор карт по случайности. Теперь во вкладку
"Files" закидываем содержимое всей папки вместе с нашей новой картой. Затем перейдем во вкладку
"Join". В
"Output File" указываем папку и дописываем
gmapsupp.img. Это будет сборник карт с нашей новой картой внутри.
Далее заполняем
Mapset name - имя нашего набора карт. Может быть любым, отобразится в списке навигатора как основная карта. Нажимаем
"Join all". Ждем завершения операции. В результате у нас должен появиться новый файл gmapsupp.img с новой картой внутри.
Не забываем о резервной копии старого gmapsupp.img!
Копируем новый файл gmapsupp.img на карту памяти с заменой старого. Включаем навигатор, проверяем, все ли корректно отображается, не послетала ли "раскраска" со старых карт. После того, как убедимся, что все в порядке и наша новая карта отображается поверх, можем удалить старую резервную копию gmapsupp.img. Как результат - получится вот это:
В заключение скажу, что лучше дорисовать прозрачной картой свою, чем редактировать исходник основной. Вы больше потратите время на компиляцию основной карты, да и не факт, что это получится. Почему? К примеру, в Garmin считается, что расстояние между соседними нодами (точками полилиний, либо изгибами полигонов) должно быть не менее 3.6 метров. Если вы видели исходники OSM-карт, обратите внимание, как плавно обрисовываются повороты - а это огромное количество нод с малым расстоянием. Но компиляторы каким-то образом проглатывают это и собирают карту. Почему это плохо? Много нод - лишняя нагрузка на и без того слабенький процессор навигатора. И время на компиляцию карты увеличивается вместе с количеством требуемого ОЗУ. При сборке больших исходников оба компилятора забивают память под завязку (a mkgmap - падает при ее недостатке). Вот оттуда и растут ноги тормозов навигатора при отрисовке таких карт, перегруженных элементами.