The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Работа с GPS-навигаторами Garmin в Linux (garmin gps linux map graph image)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: garmin, gps, linux, map, graph, image,  (найти похожие документы)
From: jetxee <jetxee@gmail.com.> Date: Mon, 23 Oct 2010 17:02:14 +0000 (UTC) Subject: Работа с GPS-навигаторами Garmin в Linux Оригинал: http://sovety.blogspot.com/search/label/gps Garmin GPSmap 60Cx: подключение и использование в Linux Вчера стали обладателями вот такого устройства, GPS-навигатора Garmin GPSmap 60Cx: Устройство позволяет пользоваться загружаемыми векторными картами и имеет карточку памяти. Впрочем, все возможности ещё только предстоит научиться использовать. Карты надо научиться делать самим (те, что в продаже, стоят безумно дорого, но, главное, нормальных топографических карт нет, всё больше дороги...) -- но это отдельная тема (кое-какие инструкции (1) уже (2) нашёл (3)). Вчера же вечером прокатились на велосипедах, чтобы записать тестовый трек, а после я пытался "подружить" это чудо со своим GNU/Linux. Ниже краткий конспект. Подключается GPSmap 60Cx по USB (кабеля для подключения по последовательному порту в комплекте нет). Причём может подключаться в двух режимах: USB Mass Storage (ну с этим всё понятно, как флэшка, при отключении -- устройство перезапускается) и по своему собственному протоколу (по умолчанию). Дальше я буду писать в основном про второй режим подключения. Похоже, что в дистрибутивном ядре Debian (2.6.24-1-686) нужные драйвера garmin-gps уже включены, потому что сразу после подключения устройства dmesg выдаёт следующее: usb 4-1: new full speed USB device using uhci_hcd and address 9 usb 4-1: configuration #1 chosen from 1 choice garmin_gps 4-1:1.0: Garmin GPS usb/tty converter detected usb 4-1: Garmin GPS usb/tty converter now attached to ttyUSB0 Из чего следует, что устройство подключается как /dev/ttyUSB0. Передача точек маршрута (Waypoints) и треков (Tracks) Вначале пробую программу gpsman. Интерфейс не сверхудобный, куча не связанных между собой окошек, между которыми приходится переключаться, кнопки, которые распахиваются в меню, но зато всё это дело работает! :) Настройки потребовались минимальные: в главном окошке в диалоге Options указать GPS Model "Garmin" и Serial port "/dev/ttyUSB0". Всё, после этого в окошке GPS Reciever -- там, где написано offline нажимаем и выбираем check -- надпись сменится на зелёную online, а кнопки внизу станут активные. Именно эти кнопки и надо использовать чтобы скачивать с устройства (Get) или загружать на устройство (Put) разные типы объектов. Я пробовал скачивать точки маршрута и записанный трек (кнопки WPoint и Track соответственно). После их нажатия программа получает с устройства список имеющихся в нём объектов, и уже в другом окошке можно выбрать нужный и сохранить/экспортировать. Треки можно сразу экспортировать в формате GPX. Ещё треки можно просматривать и редактировать на "карте" в gpsman. Слово "карта" написал в кавычках -- потому что вначале это чистый лист, подложку с картой сделать вроде бы можно, но как -- пока не разбирался. Можно загрузить трек и точки маршрута с устройства при помощи программы gpsbabel, из коммандной строки. Если устройство подключено к /dev/ttyUSB0, а нужен трек с точками в формате GPX, то получить его можно так: $ gpsbabel -t -w -i garmin -f /dev/ttyUSB0 -o gpx -F мойтрек.gpx Другой способ получить эту информацию -- скопировать с устройства GPX-файл в режиме USB Mass Storage, а потом уже его конверировать-преобразовывать... Этот файл с названием вида ГГГГММДД.gpx появляется на карточке памяти только если включена соответствующая функция в приборе. В него пишутся копии всех треков за день, сам прибор никак этой информацией не пользуется. gpsman же позволяет скачивать треки, находящиеся в памяти прибора. На мой взгляд, использовать gpsman проще, потому что треки и точки пути будут уже разделены и называться так же, как и на устройстве. Лирическое отступление: Как вставить GPX-трек на Google Earth или Google Maps? Совет нашёл на Geofaq.ru (загрузка данных GPS на растровую карту). Если кратко, то трек нужно преобразовать в формат KML, а затем выложить куда-нибудь в веб, а в Google Maps указать URL этого файла. В Google Earth KML-файл можно открыть непосредственно. В случае использования свободного софта, преобразовать файл из GPX в KML может GPSBabel: $ gpsbabel -i gpx -f 20080611.gpx -o kml -F 20080611.kml Эта команда говорит: исходный формат GPX (-i gpx), исходные данные брать из файла 20080611.gpx (-f имяфала), конечный формат KML (-o kml), писать результат в файл 20060811.kml (-F имяфала). Всё, полученный файл можно просмотреть в Google Earth или Google Maps. Загружать точки-треки-маршруты с компьютера на навигатор я ещё не пробовал, но в целом создалось впечатление, что работать с точками-треками-маршрутами можно без проблем. Другие способы: у gpsman есть интерфейс коммандной строки (ещё не пробовал), есть программа gpstrans, умеющая делать примерно то же самое, тоже с интерфейсом коммандной строки (тоже ещё не пробовал). Далее речь пойдёт о загрузке в прибор карт, прежде всего неофициальных (потому что покрытие официальных гарминовских топографических карт весьма неудовлетворительное). Использование официальной MapSource4.0 С устройством поставляется программа MapSource4.0, необходимая для установки официльных карт, годная и для скачивания-закачивания треков, маршрутов и точек. Программа без проблем установилась под wine (версия 1.0-rc-1), даже на русском языке. Народ на форумах подсказал, что нужно сделать вот так: $ ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 и после этого перезапустить MapSource. После этого программа стала находить подключенный по USB прибор и с ним работать. Проверил передачу треков и точек пути, загрузку карт на прибор. Вроде всё нормально. Использование неофициальной QLandkarte QLandkarte -- свободная программка с неплохим интерфейсом предназначенная заменить собой несвободную MapSource, в том числе загружать на устройство карты. В данный момент мне удалось с её помощью просматривать карты в формате IMG, но вот соединяться с устройством QLandkarte никак не хочет. Выдаёт мистическую "Device link error", а в настройках прямо сказано, что имя порта для USB-устройств игнорируется... В общем, надо разбираться, копать список рассылки, потому что программа похоже стоит того. Другие способы загружать на устройство карты Копирование карт в режиме USB Mass Storage. Вот здесь предлагают такой способ: Q: I copied the IMG files onto my GPS, but don't see anything. A: Garmin GPS's have to use the gmapsupp.img file in the Garmin folder (USB Drive Letter:\Garmin\GMAPSUPP.IMG) and there can only be one of this file. Either rename the 1 file you want to gmapsupp.img or use sendmap20 to compile all the img's you want into one gmapsupp.img file. Попробовал, создал на карточке устройства папку. Клал туда IMG-файлы. Устройство не видит. Переименовывал тот или иной файл в GMAPSUPP.IMG. Не находит. Пробовал называть строчными буквами (хотя там же всё равно FAT?). Не помогает. То ли карты не те, то ли надо что-то с устройством вначале сделать. Есть программка sendmap20. Бесплатная её версия для Linux не работает: точнее не находит /dev/ttyUSB0. И что с ней можно сделать -- я не придумал. Зато вот на этом польском форуме написали, что если в wine связать порт com1 c /dev/ttyUSB0 (см. выше про MapSource), то под wine будет работать бесплатная Windows-версия sendmap20. И действительно, sendmap20 без проблем работает в wine после привязки порта, карты на устройство загружаются. Также в wine хорошо работает GPSMapEdit, которым можно создавать и редактировать карты. Бинарная бесплатная версия cgpsmapper, который конвертирует файлы из "польской нотации" в формат IMG, используемый Garmin, -- тоже работает. Так что уже даже удалось создать и загрузить на устройство самодельную карту. При использовании sendmap20 нужно каждый раз стирать с устройства все карты и заливать весь нужный набор заново, это особенность программы. Резюме: подключение GPS устройства Garmin GPSmap 60Cx в Linux проблем не вызвало, передача точек пути, треков и маршрутов похоже работает нормально (как минимум, в MapSource и в gpsman), конвертировать данные в другие форматы умеет gpsbabel, карты можно загружать на устройство с помощью sendmap20 или MapSource под wine; сами карты в формате IMG в Linux можно просмотреть в QLandkarte или официальном MapSource, полный цикл подготовки карт можно выполнить при помощи бесплатного (но несвободного) ПО, но замену некоторым программам можно найти. В этом плане я связываю надежды с QGIS и GRASS, но пока ничего с их помощью не произвёл. Как загружать геокэши в навигатор Garmin В прошлой заметке я написал о том, как подключить Garmin в Linux и какими программами можно пользоваться. В этот раз более конкретный и короткий "рецепт". Есть такая игра: геокэшинг. Суть игры -- по данным координатам находить тайники. Координаты и описания тайников можно найти на сайте http://geocaching.com. Конечно, координаты можно ввести в прибор и вручную, но проще скачивать файлы-описания в специальном формате loc. Далее о том, как загрузить эти файлы в Garmin. Это можно сделать в MapSource. Однако проще и быстрее, по-моему, воспользоваться gpsbabel. Так, если файл называется geocaching.loc, а устройство подключено к /dev/ttyUSB0, то сконвертировать и поместить геокэш в память устройства можно одной командой: $ gpsbabel -i geo -f geocaching.loc -o garmin -F /dev/ttyUSB0 Понятно, что если геокэшей много, загрузить их все можно вот так: $ for f in *.loc ; do gpsbabel -i geo -f ${f} -o garmin -F /dev/ttyUSB0 ; done Как загрузить путевые точки на Garmin с указанием типа иконок Очень кратко. Чтобы установить тип иконок, загружая данные с помощью gpsbabel нужно воспользоваться опцией deficon. Так, имея два файла с разными видами путевых точек, я отправляю их в GPS-навигатор с указанием разных типов иконок (в данном случае "палатка" (Campground) для биваков и "домик" (House) для приютов): $ gpsbabel -i gpx -f Coordinate\ Bivacchi\VdA\(gpx\).gpx -o garmin,deficon=Campground -F /dev/ttyUSB0 $ gpsbabel -i gpx -f Coordinate\ Rifugi\VdA\(gpx\).gpx -o garmin,deficon=House -F /dev/ttyUSB0 Список других иконок Garmin здесь.\ Визуализация профилей высоты и скорости GPS-треков Помимо нанесения GPS-трека на карту, одним из наиболее интересных способов его представления является, на мой взгляд, построение графика изменения высоты или скорости движения как функции пройденного расстояния или прошедшего времени. Такие графики я называю "профилями" трека. Нарисовать такие графики можно, например, воспользовавшись сайтом gpsvisualizer.com. Однако мне не очень нравится иметь их метку на картинке (раз) и не иметь свободного ПО, чтобы проделать это же самое на своём собственном компьютере (два). Так что предлагаю свой скрипт gpxplot, который строит такие графики по данному GPX-файлу. Прямая ссылка на скрипт: gpxplot.py. Собственно, тут всего две важных особенности: 1) GPX-файл может содержать несколько несвязных треков, каждый из которых может состоять из нескольких "сегментов", поэтому хотелось сохранить возможность показывать их на графике именно как отдельные участки трека. 2) Информации о пройденном расстоянии в GPX-файле нет. Скрипт рассчитывает его в предположении сферической формы земли. Думаю, для большинства приложений этого достаточно. Будучи запущен без параметров, скрипт просто печатает таблицу с данными по всеми точкам трека. Построить какой угодно график по такой таблице можно в любой программе. Скрипт может также построить график самостоятельно (с помощью gnuplot). Для этого используется опция -g: $ ./gpxplot.py -g -x time -y elevation track.gpx Если модуль python-gnuplot установлен, то картинка появится на экране. Если такого модуля нет, то будет напечатан скрипт для gnuplot. В этом случае запустить gnuplot можно так: $ ./gpxplot.py -g -x time -y elevation track.gpx | gnuplot -persist - Как уже, наверное, понятно, -x time указывает откладывать по оси абсцисс время (-x distance -- пройденный путь), а -y elevation -- откладывать по оси ординат высоту (-y velocity -- скорость). Чтобы сохранить результат в файл, указываем опцию -o имяфайла: $ ./gpxplot.py -g -x time -y elevation -o track.png track.gpx Поддерживаются форматы: SVG, EPS, PNG, JPG. Указать местную временную зону можно опцией -t имя_зоны: $ ./gpxplot.py -g -t 'Europe/Moscow' track.gpx В этом случае необходимо присутствие в системе модуля pytz. Может быть, в будущем добавлю всякую раскраску и украшательство графиков. Вероятно, добавлю другие механизмы отрисовки графиков (matplotlib, например). Было бы интересно сделать отрисовку средствами Google Charts (тогда уже и до веб-версии недалеко). Впрочем, главное назначение скрипта -- просто вытянуть из GPX файла данные нужные для построения профилей. Предварительную обработку и фильтрацию треков предлагаю делать с помощью gpsbabel. Карты OpenStreetMap в GPS-навигаторах Garmin Летом и осенью мной довольно успешно использовался такой технологической цепочкой: gpsmapedit (редактирование карты в формате mp) + cgpsmapper (компиляция карт в гарминовский формат img) + sendmap или MapSetToolKit c MapSource (предварительный просмотр и загрузка карт в прибор). Впрочем, запускать программы в wine не очень-то удобно, да и все эти программы, за исключением MapSetToolKit несвободны. Дополнительные "удовольствия" с использованием sendmap и MapSource в wine встретились и в свежих выпусках Ubuntu (а именно заблокированный по-умолчанию и не вполне рабочий драйвер garmin_gps). Однако жизнь налаживается. Сегодня захожу в вики OpenStreetMap и вижу такую страницу: Карты OSM на Garmin (по-английски). И там есть такая табличка. А из таблички этой следует, что уже есть несколько свободных программ, обслуживающих весь цикл редактирования и загрузки в GPS-прибор карт. Итак, первый этап, редактирование карт: JOSM, позволяющий сохранить карты в формате osm. Можно, конечно, по-прежнему пользоваться gpsmapedit, сохраняя карты в формате mp, см. дальше. Второй этап, компилируем карты в формат прибора (img): на выбор Mkgmap или GroundTruth. Mkgmap вроде может обрабатывать и файлы mp, и файлы osm. GroundTruth, кажется, только osm. Обе программы умеют довольно многое. В конкретных отличиях предстоит разобраться, но по первому взгляду кажется, что Mkgmap компилирует карты сама, в то время как GroundTruth полагается на несвободный cgpsmapper (или это только опция?). Есть ещё перловый скрипт osm2mp (предполагает последующее использование cgpsmapper). Третий этап, объединение карт. Есть такая аппаратная особенность приборов Garmin: нужные фрагменты карты должны быть объеденены ещё до загрузки или во время загрузки в прибор. Объединить файлы img могут Mkgmap и QLandkarte GT (преемница старой QLandkarte). Четвёртый этап, загрузка карт в устройство. На выбор: QLandkarte, GroundTruth или простое сохранение файла с картой (gmapsupp.img) в папку Garmin/ на карточку памяти устройства. Пока что эти программы я не попробовал, но был очень рад увидеть, что теперь они есть. И загружать в GPS-навигаторы самодельные карты (в т.ч. карты OpenStreetMap) теперь будет проще. О чём и хотел сообщить :-)

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1, t4g, 18:40, 29/09/2017 [ответить] [смотреть все]
  • +/
    Смигрированный gpxplot:
    https://github.com/astanin/gpxplot
    Прямая ссылка на gpxplot.py:
    https://raw.githubusercontent.com/astanin/gpxplot/master/gpxplot.py
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor