Что такое KML и KMZ, и почему их нужно конвертировать

Форматы KML (Keyhole Markup Language) и KMZ — стандартные решения для работы с геоданными в Google Earth, QGIS и других ГИС-системах. KML хранит информацию в текстовом виде (координаты, метки, полигоны), но не поддерживает вложенные файлы — например, изображения или 3D-модели. KMZ решает эту проблему, упаковывая KML вместе с дополнительными ресурсами в ZIP-архив с расширением .kmz.

Конвертация требуется, когда:

  • 🗺️ Нужно уменьшить размер файла для отправки по почте или загрузки на веб-карту.
  • 🖼️ В KML есть ссылки на внешние изображения, которые нужно встроить.
  • 🔒 Требуется защитить структуру данных от случайных изменений (KMZ сложнее редактировать вручную).
  • 🌍 Google Earth или другая программа не поддерживает раздельные файлы ресурсов.

Важно: KMZ не заменяет KML функционально — это всего лишь контейнер, который объединяет KML и связанные файлы в один архив. Если исходный KML ссылается на внешние данные (например, http://example.com/image.jpg), их придётся скачать и встроить вручную.

Способ 1: Конвертация через Google Earth (самый надёжный метод)

Программа Google Earth Pro (бесплатная для ПК) автоматически упаковывает KML в KMZ при сохранении. Этот метод гарантирует совместимость с большинством ГИС-систем и сохраняет все вложенные данные.

Инструкция:

  1. Откройте Google Earth Pro и загрузите ваш KML-файл через Файл → Открыть.
  2. Проверьте отображение данных на карте (метки, полигоны, треки).
  3. Выберите Файл → Сохранить → Сохранить место как....
  4. В поле "Тип файла" укажите KMZ и нажмите Сохранить.

Загрузить KML в программу|Проверить корректность отображения данных|Убедиться, что все внешние файлы (изображения, модели) подгрузились|Сохранить как KMZ с максимальным качеством-->

⚠️ Внимание: Если в KML используются сетевые ссылки на изображения (например, с http://), Google Earth может не встроить их в KMZ. В таком случае придётся скачать эти файлы вручную и заменить ссылки на локальные пути перед конвертацией.

💡

Чтобы ускорить процесс, отключите в настройках Google Earth опцию "Автоматически обновлять сетевые ссылки" (Инструменты → Настройки → Общие). Это предотвратит зависание при работе с большими KML-файлами.

Способ 2: Онлайн-конвертеры (быстро, но с ограничениями)

Если у вас нет доступа к Google Earth или нужно сконвертировать файл на смартфоне, можно воспользоваться онлайн-сервисами. Они подходят для простых KML без вложенных данных, но могут удалять метаданные или искажать кодировку.

Популярные сервисы:

  • 🌐 KML2KMZ — поддерживает файлы до 50 МБ, сохраняет структуру слоёв.
  • 🌐 MyGeodata — конвертирует пакетно, но требует регистрации для файлов >10 МБ.
  • 🌐 Ogre — продвинутый инструмент с поддержкой KML 2.2 и GML.

Как пользоваться:

  1. Перейдите на сайт сервиса.
  2. Загрузите KML-файл (перетащите или выберите через кнопку).
  3. Дождитесь обработки (может занять до 1–2 минут для больших файлов).
  4. Скачайте полученный KMZ.

KML2KMZ|MyGeodata|Ogre|Другой|Не пользуюсь онлайн-сервисами-->

Сервис Макс. размер файла Сохраняет вложения Требует регистрации
KML2KMZ 50 МБ ❌ Нет ❌ Нет
MyGeodata 10 МБ (бесплатно) ✅ Да ✅ Для файлов >10 МБ
Ogre 100 МБ ✅ Частично ❌ Нет

⚠️ Внимание: Онлайн-сервисы могут передавать ваши данные третьим лицам. Не загружайте KML с конфиденциальной информацией (например, координатами военных объектов или личными маршрутами).

Способ 3: Ручная упаковка KML в KMZ через ZIP-архив

KMZ — это переименованный ZIP-архив. Если у вас есть KML и все связанные файлы (изображения, модели), вы можете создать KMZ вручную:

Шаги:

  1. Поместите KML-файл и все вложенные ресурсы (например, image.jpg, model.dae) в одну папку.
  2. Выделите все файлы, кликните правой кнопкой и выберите Добавить в архив (или используйте программу вроде 7-Zip).
  3. Укажите формат архива ZIP и максимальный уровень сжатия.
  4. Переименуйте полученный .zip в .kmz.

Пример структуры папки перед архивацией:


my_project/

├── data.kml # Основной файл

├── icons/

│ ├── marker.png # Значки для меток

│ └── route.png # Изображение маршрута

└── models/

└── building.dae # 3D-модель

⚠️ Внимание: Если в KML используются абсолютные пути (например, C:\Users\...\image.jpg), после архивации они станут недействительными. Замените их на относительные (например, icons/marker.png) до создания KMZ.

Как проверить корректность KMZ после ручной упаковки?

Разархивируйте KMZ обратно в ZIP и откройте KML в текстовом редакторе. Убедитесь, что все пути к файлам указывают на правильные относительные адреса (например, icons/marker.png вместо /home/user/...). Также проверьте целостность архива через Google Earth или QGIS.

Способ 4: Конвертация через QGIS (для профессионалов)

QGIS — бесплатная ГИС-платформа с поддержкой KML/KMZ. Она подходит для сложных файлов с множеством слоёв и атрибутов, но требует навыков работы с программой.

Инструкция:

  1. Откройте QGIS и импортируйте KML через Слой → Добавить слой → Добавить векторный слой.
  2. При необходимости отредактируйте данные (например, исправьте координаты или атрибуты).
  3. Экспортируйте слой в KMZ: кликните правой кнопкой на слое → Экспортировать → Сохранить объекты как....
  4. В поле "Формат" выберите Keyhole Markup Language [KMZ] и укажите путь для сохранения.

Преимущества метода:

  • 🔧 Поддержка сложных геометрий (мультиполигоны, 3D-объекты).
  • 📊 Возможность редактировать атрибуты перед конвертацией.
  • 🌍 Совместимость с другими ГИС-форматами (SHP, GeoJSON).
💡

QGIS позволяет конвертировать KML в KMZ с сохранением всех атрибутов и стилей, но требует больше времени на настройку, чем Google Earth или онлайн-сервисы.

Способ 5: Автоматизация через Python (для разработчиков)

Если вам нужно конвертировать сотни KML-файлов, можно написать скрипт на Python с использованием библиотек zipfile и lxml. Этот метод подходит для интеграции в пакетную обработку данных.

Пример скрипта:

import zipfile

import os

def kml_to_kmz(kml_path, kmz_path):

with zipfile.ZipFile(kmz_path, 'w') as kmz:

kmz.write(kml_path, arcname=os.path.basename(kml_path))

# Добавляем вложенные файлы (например, из папки "resources")

for root, _, files in os.walk('resources'):

for file in files:

kmz.write(os.path.join(root, file),

arcname=os.path.join('resources', file))

kml_to_kmz('data.kml', 'output.kmz')

Что нужно учесть:

  • 🐍 Установите зависимости: pip install lxml (для парсинга KML при необходимости).
  • 📁 Скрипт автоматически упакует KML и все файлы из папки resources.
  • 🔄 Для рекурсивной обработки папок используйте os.walk.

⚠️ Внимание: При работе с большими KML (>100 МБ) скрипт может потреблять много оперативной памяти. Для оптимизации используйте потоковую обработку или разбивайте файлы на части.

Частые ошибки и как их избежать

Даже при правильной конвертации KMZ может не открываться или отображаться некорректно. Рассмотрим типичные проблемы и решения:

1. KMZ не открывается в Google Earth

  • 🔍 Причина: Файл повреждён или имеет неправильную структуру.
  • 🛠️ Решение: Переименуйте .kmz в .zip, проверьте содержимое архива. Внутри должен быть doc.kml (или ваш исходный KML) и папка с ресурсами.

2. Пропадают изображения или модели

  • 🔍 Причина: В KML указаны абсолютные пути или ссылки на внешние ресурсы.
  • 🛠️ Решение: Откройте KML в текстовом редакторе и замените все пути на относительные (например, icons/marker.png).

3. KMZ весит больше, чем исходный KML

  • 🔍 Причина: В архив попали ненужные файлы или не было применено сжатие.
  • 🛠️ Решение: Упакуйте KMZ заново с максимальным уровнем сжатия (в 7-Zip выберите "Ultra").
💡

Если KMZ не открывается, попробуйте создать его заново через Google Earth — это самый надёжный способ проверки корректности файла.

FAQ: Ответы на популярные вопросы

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

Да. Переименуйте .kmz в .zip, распакуйте архив и извлеките из него doc.kml (или файл с оригинальным именем). Вложенные ресурсы (изображения, модели) останутся в папках внутри архива.

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

Вероятно, в KML используются нестандартные стили или координаты за пределами видимой области. Проверьте:

  1. Открывается ли исходный KML в Google Earth.
  2. Нет ли в файле ошибок (откройте KML в текстовом редакторе и поищите теги без закрытия).
  3. Совпадают ли системы координат (KML должен использовать WGS84, EPSG:4326).
Как конвертировать KML в KMZ на Mac?

Используйте Google Earth Pro (доступен для macOS) или терминал:

zip -r output.kmz data.kml resources/

Где data.kml — ваш файл, а resources/ — папка с вложениями.

Можно ли редактировать KMZ без распаковки?

Нет. KMZ — это архив, и для редактирования нужно:

  1. Переименовать в ZIP и распаковать.
  2. Отредактировать KML и/или вложенные файлы.
  3. Запаковать обратно в ZIP и переименовать в KMZ.

Для удобства используйте Google Earth или QGIS.

Какой формат лучше для веб-карт: KML или KMZ?

KMZ предпочтительнее, так как:

  • 🚀 Быстрее загружается (один файл вместо множества).
  • 🛡️ Защищён от случайного изменения структуры.
  • 🌐 Поддерживается большинством онлайн-карт (Google Maps, Leaflet с плагинами).

Исключение: если вам нужно динамически обновлять данные на карте, используйте KML с внешними ссылками.