UMGUM.COM 

OpenStreetMap + Garmin 60 ( Загрузка карт OpenStreetMap в Garmin 60 с помощью Merkaartor и Mkgmap. )

12 марта 2011  (обновлено 6 сентября 2016)

Эта публикация скрыта. Она доступна только по прямой ссылке.

OS: Linux Debian 6/7/8/9, Ubuntu 12/13/14, Fedora 24/25/26/27.

Получить карты проекта OpenStreetMap можно прямо с сайта http://www.openstreetmap.org/, экспортируя данные (что неудобно, выгрузить позволяется участок с количеством деталей не более 50000 штук, что в среднем даёт не более 50*50 километров) или с помощью приложений, разработанных для работы с этим проектом.

Удобнее всего мне показалось делать это в редакторе карт OpenStreetMap - Merkaartor. Можно подгрузить необходимые данные кусками, просматривая интересующие территории, и экспортировать все данные одним файлом OSM. Примерно так:

"File" -> "Download" (или кнопка "Download" на панели инструментов). Выбираем регион для начала выборки данных:

размер: 320 400 640 800 1024 1280
Merkaartor. Select area.
Merkaartor. Select area.


Если количество запрашиваемых данных не превышает лимита, то начнётся процесс их скачивания:

Merkaartor. Download data.
Merkaartor. Download data.

После загрузки и применения данных получаем примерно следующее:

Merkaartor. First step view.
1270x953 • Merkaartor. First step view.

Теперь смещаемся, с помощью клавиатуры управления курсором, на границу интересующего нас региона и дозапрашиваем данные с помощью опции "File" -> "Download more" (или кнопки "Download more" на панели инструментов):

Merkaartor. Select area for download more.
1270x953 • Merkaartor. Select area for download more.

В итоге, побродив по карте и поклацав на кнопку догрузки данных, получаем выборку свежих карт региона:

Merkaartor. Final step view.
1270x953 • Merkaartor. Final step view.

С помощью опции "File" -> "Export" -> "OSM (XML)" выгружаем данные в единый файл XML для последующей обработки.

Для принятия навигатором Garmin полученных ".osm" карт следует их конвертировать в специальный формат ".img".

В Debian Squeeze есть пакет, содержащий приложение на Java, разработанное для такой конвертации:

$ aptitude show mkgmap

...
Maintainer: Debian GIS Project <pkg-grass-devel@lists.alioth.debian.org>
Depends: openjdk-6-jre-headless | java5-runtime-headless
Description: Generate Garmin maps from OpenStreetMap data - This program converts OpenStreetMap data into a map that can be loaded onto compatible Garmin GPS units.
Homepage: http://www.mkgmap.org.uk

Видно, что пакет нуждается только в Java-машине. Устанавливаем приложение:

# aptitude install mkgmap

Подготовим место для работы:

$ mkdir -p ~/mkgmap/osm
$ mkdir -p ~/mkgmap/img

Подготовим конфигурационный файл, наполненный нужными нам опциями:

$ touch ~/.mkgmap.conf

$ cat ~/.mkgmap.conf

mapname=11031101
family-name=OpenStreetMap
description=Pavlodar.201103011
country-name=KAZAHSTAN
country-abbr=KZ
region-name=PAVLODAR
region-abbr=PVL
draw-priority=50
transparent
lower-case
ignore-osm-bounds
route
make-poi-index

Где (значения параметров должны быть без кавычек, как ни забавно):

mapname —  применяем имя карты. Карты Garmin именуются восьмизначными номерными значениями (по умолчанию: 63240001). Если планируется активное манипулирование картами, то следовало бы продумать систему нумерации, чтобы избежать конфликта имен при дальнейшем использовании (меня соблазняет формат: YYMMDDNN, где NN — произвольный порядковый номер);
family-name - указываем источник данных;
description - человеко-понятное описание карты, отображаемое устройством при опознании используемых карт;
country-name - название страны;
country-abbr - сокращённое названия страны;
region-name - название региона;
region-abbr - сокращённое название региона;
draw-priority - приоритет этапа отрисовки карты применительно к уже имеющимся в устройстве (чем больше, тем выше вероятность что карта всех перекроет);
transparent - если я верно понял, позволяет отображаться сквозь нашу карту низлежащим слоям;
lower-case - по идее, опция определяет отображение наименований объектов "маленьким" буквами; в документации написано, что большинство Garmin не реагируют на это указание и, по моему опыту - так оно и есть;
route - указываем создать карту с возможностью прокладывания по ней маршрутов.

Если навигатор русифицирован (под "8-битную" кодировку Windows-1251, например) - можно добавить в конфигурационный файл опции явного указания кодировки и языка обрабатываемых файлов:

$ cat ~/.mkgmap.conf

....
latin1
charset=cp1251
code-page=1251
....

Где:

latin1 - опция, позволяющая отображатся не-ASCII символям в наименованиях объектов (нужно понимать, что фактически эта опция отключает "транслитерацию"; в противном случае, если опция не указана, все не-ASCII символы будут преобразованы в ASCII по разумению утилиты);
charset, code-page - опции, явно указывающие на языковую раскладку и таблицу символов (кодировку) обрабатываемых данных (иногда это не вполне ясно для автоматического определения), соответственно.

Теперь изготавливаем контейнер из карт (можно из нескольких) в формате OSM (имя результирующего файла не указываем, так как оно предустановленное и неизменное - gmapsupp.img):

$ cd ~/mkgmap/img
$ mkgmap -c ~/.mkgmap.conf --gmapsupp ~/mkgmap/osm/*.osm

После того, как утилита отработает, в директории "~/mkgmap/img" появится несколько файлов ".img", как минимум по одному на каждую обрабатываемую карту и результирующий gmapsupp.img, представляющий из себя контейнер со всеми отрабатываемыми здесь картами.

Контейнер загружаем на навигатор доступным способом.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )