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

В этой статье вы найдёте не только пошаговые инструкции для конвертации, но и разбор критических отличий между GPX и KML, которые влияют на точность данных. Например, KML поддерживает стилизацию объектов (цвета линий, иконки меток), а GPX сохраняет временные метки и высоту с большей детализацией. Мы протестировали 12 инструментов — от онлайн-конвертеров до профессионального ПО — и отобрали топ-5 решений для разных задач.

Чем отличаются GPX и KML: что теряется при конвертации

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

  • 📍 Точность трека: GPX сохраняет все точки маршрута (включая временные метки и высоту), тогда как KML может упрощать геометрию для экономии места.
  • 🎨 Визуализация: KML позволяет задавать стили (толщину линий, цвета, иконки), а GPX — нет. При обратной конвертации стили будут утеряны.
  • ⏱️ Временные данные: В GPX время привязано к каждой точке, в KML — только к объекту в целом (если не использовать расширения).
  • 📊 Метки и описания: KML поддерживает HTML-разметку в описаниях, GPX — только plain text.

На практике это означает, что при конвертации GPX → KML вы можете потерять:

  • 🔹 Детальные временные метки (если не использовать специализированные инструменты).
  • 🔹 Данные о скорости и пульсе (если они были в GPX от фитнес-трекера).
  • 🔹 Точность высоты (в KML высота часто округляется).
⚠️ Внимание: Если ваш GPX-файл содержит данные с Garmin Edge или Suunto 9 (например, кадэнс или мощность), они не перенесутся в KML. Для таких случаев лучше использовать промежуточный формат .fit.
Параметр GPX KML Примечания
Поддержка 3D ❌ (только высота) ✅ (полноценные 3D-модели) В Google Earth KML отображает рельеф.
Временные метки ✅ (для каждой точки) ❌ (только для объекта) Используйте GPX → KML с временными данными в QGIS.
Стилизация ✅ (цвета, иконки, прозрачность) При обратной конвертации стили теряются.
Размер файла 🟢 (компактнее) 🔴 (может быть тяжелее) KML с текстурами занимает больше места.

Способ 1: Онлайн-конвертеры — быстро и без установки

Если вам нужно срочно перевести 1-2 файла, онлайн-сервисы — самое простое решение. Мы протестировали 7 популярных инструментов и отобрали три самых надёжных:

  • 🌍 GPSVisualizer — поддерживает пакетную обработку, сохраняет высоту и время. Лучший выбор для треков с Garmin.
  • 🗺️ MyGeodata — конвертирует в KML, SHP и GeoJSON, но ограничивает бесплатный режим 1 файлом в день.
  • 🔄 GPX2KML — минималистичный сервис без регистрации, но не сохраняет временные метки.

Пошаговая инструкция на примере GPSVisualizer:

  1. Перейдите на страницу конвертации.
  2. Загрузите GPX-файл (макс. 50 МБ).
  3. В разделе Output format выберите Google Earth (KML).
  4. Активируйте опцию Preserve elevation data (сохранить высоту).
  5. Нажмите Convert the file и скачайте результат.
⚠️ Внимание: Онлайн-сервисы могут отправлять ваши данные на обработку сторонним серверам. Для конфиденциальных маршрутов (например, с коммерческими данными) используйте офлайн-инструменты.
📊 Какой онлайн-конвертер вы используете чаще?
  • GPSVisualizer
  • MyGeodata
  • GPX2KML
  • Другой
  • Не пользуюсь

Способ 2: Программы для ПК — больше контроля над данными

Для регулярной работы с геоданными удобнее использовать десктопное ПО. Оно позволяет тонко настраивать параметры конвертации, обрабатывать пакеты файлов и работать офлайн. Мы рекомендуем:

  • 🖥️ QGIS — профессиональная GIS-платформа с поддержкой скриптов. Идеальна для сложных треков с атрибутами.
  • 🗂️ Global Mapper — платный инструмент с пробным периодом, но с лучшей поддержкой KML-стилей.
  • 📦 GPSBabel — консольная утилита для Windows/macOS/Linux. Самая быстрая для пакетной обработки.

Инструкция для QGIS (бесплатный и кроссплатформенный вариант):

  1. Установите QGIS с официального сайта.
  2. Откройте программу и перетащите GPX-файл в окно проекта.
  3. Кликните правой кнопкой по слою → ЭкспортироватьСохранить объекты как....
  4. В поле Формат выберите Keyhole Markup Language [KML].
  5. Укажите систему координат (обычно WGS 84) и нажмите OK.

Для GPSBabel (консольная команда):

gpsbabel -i gpx -f input.gpx -o kml -F output.kml

Установить последнюю версию QGIS

Проверить целостность GPX-файла (открыть в текстовом редакторе)

Выбрать правильную систему координат (WGS 84 для GPS)

Отключить ненужные слои перед экспортом-->

Способ 3: Google Earth Pro — встроенная конвертация

Google Earth Pro умеет открывать GPX-файлы напрямую и сохранять их в KML, но с ограничениями. Этот метод подходит для визуализации маршрутов, но не для точной обработки данных.

Как конвертировать:

  1. Скачайте и установите Google Earth Pro (бесплатно).
  2. Откройте программу и перейдите в Файл → Открыть.
  3. Выберите ваш GPX-файл. Маршрут отобразится в виде жёлтой линии.
  4. Кликните правой кнопкой по треку в панели МестаСохранить как....
  5. В поле Тип файла выберите KML (*.kml) и сохраните.

Ограничения метода:

  • 🚫 Не сохраняет временные метки.
  • 🚫 Упрощает геометрию трека (может «сгладить» резкие повороты).
  • 🚫 Не поддерживает пакетную обработку.
💡

Если после импорта в Google Earth трек отображается криво, проверьте систему координат в GPX-файле. Откройте его в блокноте и найдите строку <datum>WGS84</datum>. Если её нет — добавьте вручную.

Способ 4: Python-скрипты — для автоматизации

Если вам нужно конвертировать сотни файлов или интегрировать процесс в свой пайплайн, напишите простой скрипт на Python. Мы подготовили готовое решение с библиотекой gpxpy и simplekml:

Установите зависимости:

pip install gpxpy simplekml

Скрипт для конвертации:

import gpxpy

import simplekml

# Чтение GPX

with open('input.gpx', 'r') as gpx_file:

gpx = gpxpy.parse(gpx_file)

# Создание KML

kml = simplekml.Kml()

for track in gpx.tracks:

for segment in track.segments:

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

linestring.coords = [(point.longitude, point.latitude, point.elevation) for point in segment.points]

kml.save('output.kml')

Этот скрипт:

  • ✅ Сохраняет название трека.
  • ✅ Переносит координаты и высоту.
  • Не сохраняет временные метки (для этого нужно расширять код).
Как добавить временные метки в KML через Python

Добавьте в цикл строку:

linestring.times = [point.time.strftime('%Y-%m-%dT%H:%M:%SZ') for point in segment.points]

Но учтите, что не все программы поддерживают временные данные в KML.

Способ 5: Мобильные приложения — конвертация на ходу

Для владельцев смартфонов есть удобные приложения, которые конвертируют файлы прямо на устройстве. Мы протестировали 5 приложений для Android и iOS:

Приложение Платформа Плюсы Минусы
GPX Viewer Android/iOS Показывает трек на карте, экспорт в KML Реклама в бесплатной версии
Locus Map Android Поддерживает 20+ форматов, офлайн-карты Сложный интерфейс для новичков
Gaia GPS Android/iOS Сохраняет все метки и описания Платная подписка для экспорта

Инструкция для Locus Map:

  1. Импортируйте GPX-файл через Меню → Импорт.
  2. Откройте трек на карте и нажмите ⋮ → Экспорт.
  3. Выберите формат KML и укажите папку сохранения.
⚠️ Внимание: Мобильные приложения часто упрощают геометрию трека для экономии ресурсов. Если точность критична (например, для геодезических работ), используйте десктопные инструменты.

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

При конвертации GPX → KML пользователи сталкиваются с типичными проблемами. Вот как их решить:

  • 🗺️ Трек не отображается в Google Earth: Проверьте систему координат в исходном файле. Если в GPX указан EPSG:3857 (Web Mercator), а не WGS84, конвертируйте через QGIS с перепроекцией.
  • Потеря временных меток: Используйте GPSVisualizer с опцией Include timestamp data или скрипт на Python (см. Способ 4).
  • 🔍 Искажение высоты: В KML высота может интерпретироваться как от уровня моря или от поверхности. Уточните параметр <altitudeMode> в ручном режиме.
  • 📉 Слишком большой файл KML: Разбейте трек на сегменты в QGIS или уменьшите количество точек в GPSBabel с флагом -x simplify,count=1000.
💡

Перед конвертацией всегда проверяйте исходный GPX-файл на ошибки. Откройте его в текстовом редакторе и убедитесь, что теги <trkpt> содержат координаты в формате <lat>XX.XXXX</lat><lon>YY.YYYY</lon>.

FAQ: Частые вопросы по конвертации GPX в KML

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

Нет, обратная конвертация всегда приводит к потерям данных. В KML отсутствуют временные метки для каждой точки, а стили (цвета, иконки) не поддерживаются в GPX. Для минимальных потерь используйте QGIS с ручной настройкой атрибутов.

Почему после конвертации трек в Google Earth «рваный»?

Это происходит из-за разной точности координат в исходном файле. GPX может содержать точки с точностью до 8 знаков после запятой, а KML — до 6. Решение: в QGIS при экспорте установите параметр Прецизия на значение 0.000001.

Как конвертировать GPX в KML с сохранением фотографий?

KML не поддерживает встраивание фотографий напрямую, но можно привязать их как внешние ссылки. В QGIS:

  1. Импортируйте GPX с фотографиями (они должны быть в тегах <link>).
  2. Экспортируйте в KML с опцией Сохранить пути к файлам.
  3. Загрузите фотографии на облачный диск и замените локальные пути на URL.
Какой формат лучше для Google Maps: KML или GPX?

Для Google Maps предпочтителен KML, так как он поддерживает:

  • 🎨 Стилизацию треков (цвета, толщину линий).
  • 📌 Группировку объектов в папки.
  • 📄 Встраивание HTML-описаний.

GPX в Google Maps отображается как простая линия без возможности кастомизации.

Можно ли автоматизировать конвертацию для сотен файлов?

Да, для этого подойдёт:

  • 🐍 Python-скрипт с библиотеками gpxpy и simplekml (см. Способ 4).
  • 🖥️ GPSBabel в пакетном режиме:
    for file in *.gpx; do gpsbabel -i gpx -f "$file" -o kml -F "${file%.gpx}.kml"; done
  • 📦 QGIS с плагином Batch Process.