GPX-to-GoogleMaps-700x525-post-thumbnail

Как вывести трек большого путешествия на карты Гугла

В прошлой поездке я впервые за много лет включил в навигаторе постоянную запись трека. Все наши перемещения по Европе сохранялись, и к концу автопутешествия, длившегося больше месяца, в памяти устройства накопился внушительный объем информации.

Конечно, мне захотелось как-нибудь отобразить этот «путевой журнал» на карте, чтобы увидеть получившийся маршрут не в виде плана, а таким, каким он вышел по факту. То есть со всеми нюансами: поездками по окрестностям, заездами на заправки и в отели, отклонениями от пути, блужданиями и разворотами.

Ах да! Еще было желание найти и рассмотреть на спутниковых снимках ту грунтовку через поле, на которую вдруг приказал ехать навигатор, и проверить, действительно ли там не было варианта с асфальтом. :)

Разумеется, картой с наложенным на нее треком пути предполагалось делиться, то есть иметь возможность показать трек онлайн, разместить на сайте, при необходимости дать ссылку на форумах. Весьма удобным для этого казался сервис Google Maps.

Сначала все шло как по маслу. C навигатора на компьютер перекочевало 288 файлов в формате GPX. Именно столько фрагментов составили наш маршрут на машине. Среди них были и крупные, сохранившие путь по трассе длиной несколько сотен километров, и мелкие, например, с поездкой в соседнюю деревню до банкомата.

Исходный объем треков вышел около 70 МБ.

Первая же попытка «скормить» Гуглу треки с треском провалилась. Форма загрузки файлов для импортирования давала загружать их только по одному.

Тогда я попробовал «склеить» содержимое GPX-треков. Это было несложно, поскольку внутри такой файл представляет собой по сути размеченный XML текстовый документ.

Но и здесь ждало разочарование: при попытке загрузить «сшитый» трек Гуглокарты заявили: «Невозможно импортировать файл GPX, поскольку его размер превышает 5 МБ. Закрыть». Да-да, ограничение пять (!) мегабайт.

GPX-to-GoogleMaps-20

Не сработал и вариант разделения содержимого на несколько слоев. Здесь тоже лимит: на одной карте их может быть всего 10. После превышения выскочило сообщение: «Не удалось добавить слой. На эту карту нельзя добавить больше слоев».

GPX-to-GoogleMaps-21

Таким образом, мои 70 МБ треков просто физически не получалось втиснуть Гуглу для отображения на одной карте.

 

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

Итак, суть решения заключается в том, чтобы, смирившись с гугловскими ограничениями и приняв их как незбежное зло, уменьшить файлы трека так, чтобы полученный объем позволял загрузить их на онлайн-карту. А именно — «проредить» точки, составляющие трек. Но как сделать это без потери информативности?

Не секрет, что навигаторы протоколируют трек весьма подробно. Запись координат в файл может вестись несколько раз в секунду. При движении по трассе это оправдано: положение автомобиля быстро меняется. А при стоянии в пробке или на светофоре, когда координаты долгое время неизменны, такая частая запись только «раздувает» файл.

Как же быть? Идея состоит в том, чтобы удалить из файлов трека те строки, которые описывают координаты точек, взаимно отстоящих на маленькое расстояние. Или, иначе говоря, нужно оставить в треке лишь те точки, которые отстоят друг от друга на расстояние, большее некоторого порогового значения. Например, 20-30-40 метров между точками вполне достаточно для сохранения информативности трека.

Практика показала, что объем файлов при этом радикально снижается, и они уже могут быть загружены на онлайн-карты для отображения.

Дальше привожу инструментарий для реализации такого способа.

Шаг 1. Вытаскиваю из навигатора файлы трека в формате GPX на компьютер. Чтобы не повредить исходник треков — делаю копию и дальше работаю с ней.

Шаг 2. Переименовываю файлы. Дело в том, что навигатор зачем-то присваивает файлам причудливые имена, по названиям рядом с теми местами, где проходил маршрут:

GPX-to-GoogleMaps-01

На мой взгляд, пользы от этого никакой. Мне гораздо проще ориентироваться в структуре имен, представляющих собой лишь дату-время трека. Для массового переименования по шаблону я использую программу Bulk Rename Utility. После этого файлы выглядят так:

GPX-to-GoogleMaps-02

Шаг 3. Запускаю программу GPS Track Editor и открываю в ней треки. Загружать их можно хоть целыми пачками, они все сразу сортируются по порядку и отображаются в меню слева. Справа показываются точки — по сути строки файла, из которых и формируется общая картина маршрута.

GPX-to-GoogleMaps-03

GPX-to-GoogleMaps-04

Я предпочитаю открывать файлы кучками по этапам поездки — то есть не по одному, но и не все сразу.

Уже на этом этапе получается отличный материал для изучения движения. Например, можно удобно посмотреть, где с какой скоростью ехал (и действительно ли превысил там, откуда пришел штраф). :)

GPX-to-GoogleMaps-05

Неплохо получается сравнивать разные варианты маршрута по времени проезда. Для этого открываю треки разных поездок и смотрю сколько времени занимало движение между двумя «контрольными точками» в каждом случае.

GPX-to-GoogleMaps-06

Шаг 4. Удаляю те части трека, которые отображают езду по городу в начале и конце путешествия. Вряд ли кому-то интересны мои перемещения около дома и гаража. Выбрать точки, подлежащие удалению, можно в списке справа.

GPX-to-GoogleMaps-07

Шаг 5. «Склеиваю» треки GPX. Эта операция делается так: выделяем несколько файлов в списке и жмем кнопку Merge.

GPX-to-GoogleMaps-08

Шаг 6. «Прореживаю» трек, удаляя из него точки, расположенные друг от друга ближе, чем 20-30 метров. Для этого я иду в пункт меню Filter, ввожу желаемый порог и смотрю на результат. Если он устраивает — нажимаю Delete filtered points, если нет — Restore. Я остановился на том, что делаю порог прореживания 15-20 метров в городах и 40 метров на трассе.

GPX-to-GoogleMaps-09

На скриншоте видно, что значительная часть точек будет удалена (те, которые отмечены серым цветом):

GPX-to-GoogleMaps-11

Шаг 7. Сохраняю объединенные и прореженные треки, следя за тем, чтобы файлы были меньше 5 МБ:

GPX-to-GoogleMaps-13

Шаг 8. Создаю карту в «Моих картах» на Google Maps и импортирую полученные файлы GPX. Каждый в новый слой. Помним, что допустимое число слоев на карте 10, поэтому нужно не превысить это количество при создании файлов на предыдущем шаге. Я делаю 9 слоев, потому что не исключаю, что еще один слой в будущем задействую для нанесения дополнительной информации.

Смотрим результат.

Маршрут состоявшегося многодневного путешествия хорошо виден на одной карте, так сказать «от дома до дома»:

GPX-to-GoogleMaps-14

Удобно не только оценивать поездку на обзорном уровне масштаба, но и приближать интересующие места:

GPX-to-GoogleMaps-16

GPX-to-GoogleMaps-18

GPX-to-GoogleMaps-19

Ну и, конечно, можно показать свою поездку коллегам-путешественникам — достаточно сбросить ссылку на получившуюся карту.

P.S. А асфальтированного проезда к одному из гостевых домов действительно не было. Полтора километра дорога идет через поле:

GPX-to-GoogleMaps-17

  1. Привет, Виталий! Спасибо за толковую инструкцию, с её помощью у меня все получилось.

    Теперь здесь

    slopuhov.ru/2017/lat_2017.htm

    ссылка на карте не грузит KML, а открывает Google Maps c реальным прореженным треком.

    С уважением, Сергей.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>