Получить карты проекта OpenStreetMap можно прямо с сайта http://www.openstreetmap.org/, экспортируя данные (что неудобно, выгрузить позволяется участок с количеством деталей не более 50000 штук, что в среднем даёт не более 50*50 километров) или с помощью приложений, разработанных для работы с этим проектом.
Удобнее всего мне показалось делать это в редакторе карт OpenStreetMap - Merkaartor. Можно подгрузить необходимые данные кусками, просматривая интересующие территории, и экспортировать все данные одним файлом OSM. Примерно так:
"File" -> "Download" (или кнопка "Download" на панели инструментов). Выбираем регион для начала выборки данных:
Merkaartor. Select area.
Если количество запрашиваемых данных не превышает лимита, то начнётся процесс их скачивания:
Merkaartor. Download data.
После загрузки и применения данных получаем примерно следующее:
1270x953 • Merkaartor. First step view.
Теперь смещаемся, с помощью клавиатуры управления курсором, на границу интересующего нас региона и дозапрашиваем данные с помощью опции "File" -> "Download more" (или кнопки "Download more" на панели инструментов):
1270x953 • Merkaartor. Select area for download more.
В итоге, побродив по карте и поклацав на кнопку догрузки данных, получаем выборку свежих карт региона:
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
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
$ 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
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 - указываем создать карту с возможностью прокладывания по ней маршрутов.
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
charset=cp1251
code-page=1251
....
Где:
latin1 - опция, позволяющая отображатся не-ASCII символям в наименованиях объектов (нужно понимать, что фактически эта опция отключает "транслитерацию"; в противном случае, если опция не указана, все не-ASCII символы будут преобразованы в ASCII по разумению утилиты);
charset, code-page - опции, явно указывающие на языковую раскладку и таблицу символов (кодировку) обрабатываемых данных (иногда это не вполне ясно для автоматического определения), соответственно.
charset, code-page - опции, явно указывающие на языковую раскладку и таблицу символов (кодировку) обрабатываемых данных (иногда это не вполне ясно для автоматического определения), соответственно.
Теперь изготавливаем контейнер из карт (можно из нескольких) в формате OSM (имя результирующего файла не указываем, так как оно предустановленное и неизменное - gmapsupp.img):
$ cd ~/mkgmap/img
$ mkgmap -c ~/.mkgmap.conf --gmapsupp ~/mkgmap/osm/*.osm
$ mkgmap -c ~/.mkgmap.conf --gmapsupp ~/mkgmap/osm/*.osm
После того, как утилита отработает, в директории "~/mkgmap/img" появится несколько файлов ".img", как минимум по одному на каждую обрабатываемую карту и результирующий gmapsupp.img, представляющий из себя контейнер со всеми отрабатываемыми здесь картами.
Контейнер загружаем на навигатор доступным способом.