Формат 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 локальное).
- Визуализация в 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 — самого гибкого инструмента. Следуйте этому алгоритму, чтобы избежать типичных ошибок:
- Подготовка файла: Убедитесь, что ваш GPX-файл не содержит битых меток. Откройте его в текстовом редакторе и проверьте наличие тегов
<trkpt>или<wpt>с координатами. Если файл повреждён, восстановите его через GPX Editor. - Выбор параметров: На странице конвертера загрузите файл и в разделе
Output optionsвыберите:- 📌 Формат:
KML (Google Earth); - 🎨 Стиль:
color by elevation(если нужна визуализация рельефа); - ⏱️ Временная зона:
UTC(если метки времени критичны).
- 📌 Формат:
--simplify 0.0001 # Упрощение трека (в градусах)
--split 1000 # Разбивка на сегменты по 1000 точек
- 🔍 Сохранность всех точек (особенно в местах с частыми поворотами);
- ⏰ Корректность временных меток (проверьте первую и последнюю точку);
- 📏 Масштаб высот (если рельеф выглядит неестественно плоским).
☑️ Проверка качества конвертации
Если вы работаете с треками от 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 gpxpypython3 -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 с сохранением всех атрибутов. Подходит для обработки сотен файлов. Инструкция:
- Установите QGIS с официального сайта;
- Активируйте плагин через
Плагины → Управление плагинами → GPS Tools; - Импортируйте GPX как слой, затем экспортируйте в KML через
Правка → Сохранить как.
- 🐍 Python-скрипты: Библиотека
gpxpy+simplekmlдаёт полный контроль над конвертацией. Пример кода для сохранения высот и времени:import gpxpyimport 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";
- Добавьте шаг "Выполнить код" с Python-скриптом конвертации;
- Настройте загрузку результата в выбранную папку Google Drive.
Для автоматизации процесса (например, если вам нужно еженедельно конвертировать треки с Strava) можно использовать Zapier или Make (ex-Integromat). Эти сервисы позволяют создать цепочку: Strava → Конвертация GPX→KML → Загрузка в 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", что приподнимает трек над рельефом. Исправьте вручную:
- Откройте KML в текстовом редакторе;
- Найдите тег
<LineString>или<Point>; - Добавьте атрибут
altitudeMode="absolute"; - Убедитесь, что координаты содержат высоту (третья цифра в
<coordinates>).
Если высотных данных нет, воспользуйтесь сервисом GPSVisualizer с опцией --elevation=add — он достроит высоты по модели рельефа SRTM.
Как конвертировать GPX с нескольких устройств в один KML?
Для объединения треков:
- Сконвертируйте каждый GPX в KML отдельно;
- Откройте файлы в Google Earth Pro;
- Создайте новую папку и перетащите туда все треки;
- Экспортируйте папку как единый 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;
- Временные метки могут сдвигаться из-за зоны времени устройства.