Форматы 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:
- Перейдите на страницу конвертации.
- Загрузите GPX-файл (макс. 50 МБ).
- В разделе
Output formatвыберитеGoogle Earth (KML). - Активируйте опцию
Preserve elevation data(сохранить высоту). - Нажмите
Convert the fileи скачайте результат.
⚠️ Внимание: Онлайн-сервисы могут отправлять ваши данные на обработку сторонним серверам. Для конфиденциальных маршрутов (например, с коммерческими данными) используйте офлайн-инструменты.
- GPSVisualizer
- MyGeodata
- GPX2KML
- Другой
- Не пользуюсь
Способ 2: Программы для ПК — больше контроля над данными
Для регулярной работы с геоданными удобнее использовать десктопное ПО. Оно позволяет тонко настраивать параметры конвертации, обрабатывать пакеты файлов и работать офлайн. Мы рекомендуем:
- 🖥️ QGIS — профессиональная GIS-платформа с поддержкой скриптов. Идеальна для сложных треков с атрибутами.
- 🗂️ Global Mapper — платный инструмент с пробным периодом, но с лучшей поддержкой KML-стилей.
- 📦 GPSBabel — консольная утилита для Windows/macOS/Linux. Самая быстрая для пакетной обработки.
Инструкция для QGIS (бесплатный и кроссплатформенный вариант):
- Установите QGIS с официального сайта.
- Откройте программу и перетащите GPX-файл в окно проекта.
- Кликните правой кнопкой по слою →
Экспортировать→Сохранить объекты как.... - В поле
ФорматвыберитеKeyhole Markup Language [KML]. - Укажите систему координат (обычно
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, но с ограничениями. Этот метод подходит для визуализации маршрутов, но не для точной обработки данных.
Как конвертировать:
- Скачайте и установите Google Earth Pro (бесплатно).
- Откройте программу и перейдите в
Файл → Открыть. - Выберите ваш GPX-файл. Маршрут отобразится в виде жёлтой линии.
- Кликните правой кнопкой по треку в панели
Места→Сохранить как.... - В поле
Тип файлавыберите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:
- Импортируйте GPX-файл через
Меню → Импорт. - Откройте трек на карте и нажмите
⋮ → Экспорт. - Выберите формат
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:
- Импортируйте GPX с фотографиями (они должны быть в тегах
<link>). - Экспортируйте в KML с опцией
Сохранить пути к файлам. - Загрузите фотографии на облачный диск и замените локальные пути на 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.