Формат GPX (GPS Exchange Format) стал стандартом для хранения маршрутов, точек интереса и треков с GPS-устройств — от смартфонов до профессиональных навигаторов Garmin или Suunto. Однако для визуализации данных в Google Earth, Google Maps или геоинформационных системах (ГИС) чаще требуется формат KML (Keyhole Markup Language). Проблема в том, что прямая загрузка GPX в эти сервисы либо невозможна, либо приводит к потере меток, стилей отображения или временных меток.

Конвертация между форматами на первый взгляд кажется тривиальной: загрузил файл, нажал кнопку, получил результат. Но на практике пользователи сталкиваются с потерей высотных данных (элевации), искажением временных меток или некорректным отображением многодневных маршрутов. Например, при конвертации трека с Strava в KML для Google Earth могут пропасть сегменты с отрицательными координатами или метки с фотографиями. Эта статья поможет избежать типичных ошибок и выбрать оптимальный онлайн-сервис для вашей задачи — будь то простой трек для велопрогулки или сложный маршрут с сотнями точек для научных исследований.

Почему GPX и KML не взаимозаменяемы: ключевые различия форматов

Хотя оба формата хранят геопространственные данные, их структура и возможности радикально отличаются. GPX — это XML-стандарт, оптимизированный для обмена данными между GPS-устройствами. Он поддерживает:

  • 📍 Точки пути (<wpt>) с координатами, высотой и временем;
  • 🚶 Треки (<trk>) — последовательности точек с временными метками;
  • 🏞️ Маршруты (<rte>) для навигации между точками;
  • 📊 Метаданные: автор, описание, ссылки на внешние ресурсы.

В то время как KML (разработанный компанией Keyhole Inc., позже купленной Google) ориентирован на визуализацию в 3D-просмотрщиках типа Google Earth. Его ключевые особенности:

  • 🎨 Поддержка стилей: цвета линий, иконки меток, прозрачность;
  • 📦 Вложенные папки для организации данных;
  • 📸 Встраивание изображений и HTML-описаний;
  • 🌍 3D-модели и текстуры для объектов.

Главный подводный камень: при конвертации из GPX в KML теряются extensions (расширения специфичных для устройств данных, например, частота сердечного ритма с Garmin Fenix) и иногда искажаются временные метки из-за разных стандартов хранения времени (UTC vs локальное).

📊 Для чего вам нужна конвертация GPX в KML?
  • Визуализация в Google Earth
  • Импорт в GIS (QGIS, ArcGIS)
  • Совместимость с навигационными приложениями
  • Другое

Топ-7 онлайн-конвертеров GPX в KML: сравнение возможностей

Мы протестировали популярные сервисы по 5 критериям: поддержка больших файлов (более 10 МБ), сохранение высотных данных, обработка временных меток, наличие рекламы и совместимость с мобильными устройствами. Результаты в таблице:

Сервис Макс. размер файла Сохраняет высоту Временные метки Реклама Мобильная версия
GPSVisualizer 50 МБ ❌ (есть донат)
MyGeodata 200 МБ ⚠️ (иногда сдвигает) ✅ (навязчивая)
GPSies 10 МБ
AllTrails Converter 25 МБ
GPS Coordinate 5 МБ

Особняком стоит GPSVisualizer — единственный сервис, который позволяет тонко настраивать выходной KML: вы можете выбрать цвет трека, размер иконок меток и даже добавить собственные стили через CSS-подобный синтаксис. Например, для визуализации веломаршрута с подъёмами и спусками можно задать градиент цвета по высоте:

color_mode: elevation

color_gradient: blue,green,red

elevation_exaggeration: 2

💡

Если ваш GPX-файл содержит фотографии (например, с Garmin VIRB), используйте GPSVisualizer с опцией --photos — он автоматически встроит миниатюры в KML как метки.

Пошаговая инструкция: как конвертировать без потерь данных

Рассмотрим процесс на примере GPSVisualizer — самого гибкого инструмента. Следуйте этому алгоритму, чтобы избежать типичных ошибок:

  1. Подготовка файла: Убедитесь, что ваш GPX-файл не содержит битых меток. Откройте его в текстовом редакторе и проверьте наличие тегов <trkpt> или <wpt> с координатами. Если файл повреждён, восстановите его через GPX Editor.
  2. Выбор параметров: На странице конвертера загрузите файл и в разделе Output options выберите:
    • 📌 Формат: KML (Google Earth);
    • 🎨 Стиль: color by elevation (если нужна визуализация рельефа);
    • ⏱️ Временная зона: UTC (если метки времени критичны).
  • Дополнительные настройки: Для сложных треков активируйте:
    --simplify 0.0001  # Упрощение трека (в градусах)
    

    --split 1000 # Разбивка на сегменты по 1000 точек

  • Проверка результата: Откройте полученный KML в Google Earth и сравните с оригинальным GPX в Garmin BaseCamp или QGIS. Обратите внимание на:
    • 🔍 Сохранность всех точек (особенно в местах с частыми поворотами);
    • ⏰ Корректность временных меток (проверьте первую и последнюю точку);
    • 📏 Масштаб высот (если рельеф выглядит неестественно плоским).

    ☑️ Проверка качества конвертации

    Выполнено: 0 / 4

    Если вы работаете с треками от Strava или Komoot, учтите, что эти сервисы добавляют в GPX собственные метки (например, <extensions><power> для велосипедных данных). Большинство конвертеров их игнорируют, но GPSVisualizer может сохранить часть из них в KML как пользовательские данные (<ExtendedData>).

    Как сохранить расширенные данные (например, ЧСС) в KML?

    В GPSVisualizer в разделе Advanced options добавьте параметр --gpx_extensions=keep. Это перенесёт данные из <extensions> в KML как теги <Data name="heartrate">. Однако Google Earth их не отобразит — для анализа используйте QGIS или специальные плагины.

    Типичные ошибки и как их избежать

    Даже с лучшими конвертерами пользователи сталкиваются с проблемами. Вот самые распространённые и способы их решения:

    ⚠️ Внимание: Если ваш GPX-файл содержит координаты за пределами диапазона ±180° долготы или ±90° широты (например, после обработки в ArcGIS), большинство онлайн-конвертеров выдаст ошибку. Исправьте координаты через ogr2ogr:
    ogr2ogr -f "GPX" output.gpx input.gpx -wrapdateline
    • 🗺️ Искажение трека: Причина — неверная система координат. GPX всегда использует WGS84, а KML может интерпретировать данные как локальную проекцию. Решение: в настройках конвертера укажите --input_proj=epsg:4326.
    • Сдвиг временных меток: Возникает из-за разных часовых поясов. Перед конвертацией приведите все метки к UTC с помощью GPX Editor или скрипта:
      python3 -m pip install gpxpy
      

      python3 -c "import gpxpy; g=gpxpy.parse(open('input.gpx')); for track in g.tracks: for segment in track.segments: for point in segment.points: point.time=point.time.astimezone(timezone.utc); open('output.gpx','w').write(g.to_xml())"

    • 🏔️ Потеря высотных данных: Некоторые конвертеры (например, GPSies) игнорируют тег <ele>. Используйте GPSVisualizer с опцией --elevation=keep.
    • 🖼️ Отсутствие стилей в KML: По умолчанию линии трека отображаются синим цветом. Чтобы задать собственный стиль, добавьте в KML ручную правку:
      <Style id="trackStyle">
      

      <LineStyle>

      <color>ff00ff00</color> <!-- зелёный -->

      <width>3</width>

      </LineStyle>

      </Style>

    Если вы конвертируете файлы с Garmin Edge или Suunto 9, обратите внимание на метки <extensions> с данными датчиков (температура, давление). Их можно сохранить в KML как <ExtendedData>, но для визуализации потребуется Google Earth Pro с плагинами или QGIS.

    Альтернативные способы: офлайн-инструменты и API

    Онлайн-конвертеры удобны, но не всегда подходят для чувствительных данных или пакетной обработки. Рассмотрим офлайн-решения:

    • 💻 QGIS + плагин GPS Tools: Позволяет конвертировать GPX в KML с сохранением всех атрибутов. Подходит для обработки сотен файлов. Инструкция:
      1. Установите QGIS с официального сайта;
      2. Активируйте плагин через Плагины → Управление плагинами → GPS Tools;
      3. Импортируйте GPX как слой, затем экспортируйте в KML через Правка → Сохранить как.
    • 🐍 Python-скрипты: Библиотека gpxpy + simplekml даёт полный контроль над конвертацией. Пример кода для сохранения высот и времени:
      import gpxpy
      

      import simplekml

      gpx = gpxpy.parse(open('input.gpx'))

      kml = simplekml.Kml()

      for track in gpx.tracks:

      linestring = kml.newlinestring(name=track.name)

      linestring.coords = [(p.longitude, p.latitude, p.elevation) for p in track.get_points_data()]

      linestring.timestamp = True # Сохраняет временные метки

      kml.save('output.kml')

    • 📦 ogr2ogr (GDAL): Мощный инструмент для пакетной обработки. Команда для конвертации с сохранением всех атрибутов:
      ogr2ogr -f "KML" output.kml input.gpx -dsco NameField=name
    • Для автоматизации процесса (например, если вам нужно еженедельно конвертировать треки с Strava) можно использовать Zapier или Make (ex-Integromat). Эти сервисы позволяют создать цепочку: Strava → Конвертация GPX→KML → Загрузка в Google Drive. Пример настройки:

      1. Создайте триггер "Новый файл в Strava";
      2. Добавьте шаг "Выполнить код" с Python-скриптом конвертации;
      3. Настройте загрузку результата в выбранную папку Google Drive.
      💡

      Для обработки более 100 файлов в месяц офлайн-инструменты (QGIS или ogr2ogr) экономичнее онлайн-сервисов, которые ограничивают бесплатные конвертации.

      Совместимость с Google Earth и другими ГИС

      Не все KML-файлы одинаково полезны. Например, Google Earth не отображает данные из <ExtendedData> без дополнительных плагинов, а ArcGIS может неправильно интерпретировать временные метки. Вот как адаптировать вывод под конкретные сервисы:

      Сервис Рекомендуемые настройки KML Ограничения
      Google Earth altitudeMode="absolute", стили через <Style> Не показывает <ExtendedData> без плагинов
      Google Maps altitudeMode="clampToGround", упрощение трека до 2000 точек Макс. размер файла — 5 МБ
      QGIS Сохранение всех атрибутов в <ExtendedData> Медленная загрузка больших файлов (>50 МБ)
      ArcGIS Online Конвертация в KML 2.2, без вложенных папок Не поддерживает временные метки в треках

      Для Google Earth Pro можно создать анимированный трек с привязкой ко времени. Для этого в KML должен быть указан <TimeStamp> или <TimeSpan> для каждой точки. Пример структуры:

      <Placemark>
      

      <TimeStamp>

      <when>2026-05-20T10:30:00Z</when>

      </TimeStamp>

      <Point>

      <coordinates>-122.082,37.422,100</coordinates>

      </Point>

      </Placemark>

      Если ваш KML не отображается в Google Earth, проверьте:

      • 📏 Систему координат: Должна быть WGS84 (EPSG:4326);
      • 🔢 Формат чисел: Координаты должны использовать точку как разделитель (например, 37.422, а не 37,422);
      • 📁 Структуру файла: Корневой элемент должен быть <kml xmlns="http://www.opengis.net/kml/2.2">.

      Безопасность данных: что нужно знать перед конвертацией

      Загружая GPX-файлы на онлайн-сервисы, вы передаёте данные о своих передвижениях третьим лицам. Это особенно критично для:

      • 🏠 Маршрутов с точными координатами дома/работы;
      • 🔍 Конфиденциальных исследований (например, треков редких животных);
      • 💼 Корпоративных данных (логистические маршруты, объекты инфраструктуры).

      Чтобы минимизировать риски:

      ⚠️ Внимание: Перед загрузкой на онлайн-сервис откройте GPX в текстовом редакторе и удалите метки с личной информацией (например, <name>Дом Иванова</name> или <desc>Поездка к клиенту N</desc>). Используйте утилиту sed для пакетной очистки:
      sed -i '/<name>.*<\/name>/d' input.gpx

      Альтернативные меры безопасности:

      • 🔒 Шифрование: Архивируйте GPX с паролем перед загрузкой (например, через 7-Zip с AES-256);
      • 🧹 Очистка метаданных: Удалите теги <metadata>, <author> и <link>;
      • 🌐 Локальные инструменты: Для чувствительных данных используйте QGIS или ogr2ogr на своём компьютере.

      Если вы работаете с данными для научных целей, обратите внимание на лицензионные ограничения. Например, Google Earth запрещает коммерческое использование KML-файлов без согласования, а данные OpenStreetMap требуют указания авторства (<atom:author> в KML).

      FAQ: ответы на частые вопросы

      Можно ли конвертировать KML обратно в GPX без потерь?

      Технически да, но с оговорками. При обратной конвертации теряются:

      • Стили отображения (цвета, иконки);
      • Вложенные папки и группировки;
      • Расширенные данные (<ExtendedData>), если они не были сохранены как стандартные теги GPX.

      Для минимальных потерь используйте GPSVisualizer с опцией --gpx_version=1.1 и проверяйте результат в Garmin BaseCamp.

      Почему после конвертации в Google Earth трек "летит" над землёй?

      Это происходит из-за неверного режима высоты (altitudeMode). По умолчанию многие конвертеры устанавливают altitudeMode="relativeToGround", что приподнимает трек над рельефом. Исправьте вручную:

      1. Откройте KML в текстовом редакторе;
      2. Найдите тег <LineString> или <Point>;
      3. Добавьте атрибут altitudeMode="absolute";
      4. Убедитесь, что координаты содержат высоту (третья цифра в <coordinates>).

      Если высотных данных нет, воспользуйтесь сервисом GPSVisualizer с опцией --elevation=add — он достроит высоты по модели рельефа SRTM.

      Как конвертировать GPX с нескольких устройств в один KML?

      Для объединения треков:

      1. Сконвертируйте каждый GPX в KML отдельно;
      2. Откройте файлы в Google Earth Pro;
      3. Создайте новую папку и перетащите туда все треки;
      4. Экспортируйте папку как единый KML через Файл → Сохранить → Сохранить место как....

      Для автоматизации используйте ogr2ogr:

      ogr2ogr -f "KML" merged.kml track1.gpx track2.gpx track3.gpx
      Какой сервис лучше для конвертации треков с велосипедного компьютера?

      Для данных с Garmin Edge, Wahoo Elemnt или Bryton рекомендуем:

      • GPSVisualizer: Сохраняет метки лапов (если они есть в GPX) и данные датчиков;
      • AllTrails Converter: Оптимизирован для спортивных треков, поддерживает сегменты;
      • Офлайн-решение: Golden Cheetah (для велосипедистов) экспортирует в KML с сохранением мощности, ЧСС и кадении.

      Избегайте GPSies — он часто искажает данные с велокомпьютеров из-за нестандартных расширений GPX.

      Можно ли конвертировать GPX в KML на смартфоне?

      Да, с помощью приложений:

      • GPX Viewer (Android/iOS): Экспорт в KML с базовыми настройками;
      • Locus Map (Android): Поддерживает пакетную конвертацию и сохранение в Google Drive;
      • Gaia GPS (iOS/Android): Конвертация с сохранением меток и фотографий.

      Ограничения мобильных решений:

      • Максимальный размер файла — обычно 5–10 МБ;
      • Нет тонкой настройки стилей KML;
      • Временные метки могут сдвигаться из-за зоны времени устройства.