Что такое 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 при сохранении. Этот метод гарантирует совместимость с большинством ГИС-систем и сохраняет все вложенные данные.
Инструкция:
- Откройте Google Earth Pro и загрузите ваш KML-файл через
Файл → Открыть. - Проверьте отображение данных на карте (метки, полигоны, треки).
- Выберите
Файл → Сохранить → Сохранить место как.... - В поле "Тип файла" укажите KMZ и нажмите
Сохранить.
Загрузить KML в программу|Проверить корректность отображения данных|Убедиться, что все внешние файлы (изображения, модели) подгрузились|Сохранить как KMZ с максимальным качеством-->
⚠️ Внимание: Если в KML используются сетевые ссылки на изображения (например, с http://), Google Earth может не встроить их в KMZ. В таком случае придётся скачать эти файлы вручную и заменить ссылки на локальные пути перед конвертацией.
Чтобы ускорить процесс, отключите в настройках Google Earth опцию "Автоматически обновлять сетевые ссылки" (Инструменты → Настройки → Общие). Это предотвратит зависание при работе с большими KML-файлами.
Способ 2: Онлайн-конвертеры (быстро, но с ограничениями)
Если у вас нет доступа к Google Earth или нужно сконвертировать файл на смартфоне, можно воспользоваться онлайн-сервисами. Они подходят для простых KML без вложенных данных, но могут удалять метаданные или искажать кодировку.
Популярные сервисы:
- 🌐 KML2KMZ — поддерживает файлы до 50 МБ, сохраняет структуру слоёв.
- 🌐 MyGeodata — конвертирует пакетно, но требует регистрации для файлов >10 МБ.
- 🌐 Ogre — продвинутый инструмент с поддержкой
KML 2.2иGML.
Как пользоваться:
- Перейдите на сайт сервиса.
- Загрузите KML-файл (перетащите или выберите через кнопку).
- Дождитесь обработки (может занять до 1–2 минут для больших файлов).
- Скачайте полученный KMZ.
KML2KMZ|MyGeodata|Ogre|Другой|Не пользуюсь онлайн-сервисами-->
| Сервис | Макс. размер файла | Сохраняет вложения | Требует регистрации |
|---|---|---|---|
| KML2KMZ | 50 МБ | ❌ Нет | ❌ Нет |
| MyGeodata | 10 МБ (бесплатно) | ✅ Да | ✅ Для файлов >10 МБ |
| Ogre | 100 МБ | ✅ Частично | ❌ Нет |
⚠️ Внимание: Онлайн-сервисы могут передавать ваши данные третьим лицам. Не загружайте KML с конфиденциальной информацией (например, координатами военных объектов или личными маршрутами).
Способ 3: Ручная упаковка KML в KMZ через ZIP-архив
KMZ — это переименованный ZIP-архив. Если у вас есть KML и все связанные файлы (изображения, модели), вы можете создать KMZ вручную:
Шаги:
- Поместите KML-файл и все вложенные ресурсы (например,
image.jpg,model.dae) в одну папку. - Выделите все файлы, кликните правой кнопкой и выберите
Добавить в архив(или используйте программу вроде 7-Zip). - Укажите формат архива ZIP и максимальный уровень сжатия.
- Переименуйте полученный
.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. Она подходит для сложных файлов с множеством слоёв и атрибутов, но требует навыков работы с программой.
Инструкция:
- Откройте QGIS и импортируйте KML через
Слой → Добавить слой → Добавить векторный слой. - При необходимости отредактируйте данные (например, исправьте координаты или атрибуты).
- Экспортируйте слой в KMZ: кликните правой кнопкой на слое →
Экспортировать → Сохранить объекты как.... - В поле "Формат" выберите 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 используются нестандартные стили или координаты за пределами видимой области. Проверьте:
- Открывается ли исходный KML в Google Earth.
- Нет ли в файле ошибок (откройте KML в текстовом редакторе и поищите теги без закрытия).
- Совпадают ли системы координат (KML должен использовать WGS84, EPSG:4326).
Как конвертировать KML в KMZ на Mac?
Используйте Google Earth Pro (доступен для macOS) или терминал:
zip -r output.kmz data.kml resources/
Где data.kml — ваш файл, а resources/ — папка с вложениями.
Можно ли редактировать KMZ без распаковки?
Нет. KMZ — это архив, и для редактирования нужно:
- Переименовать в ZIP и распаковать.
- Отредактировать KML и/или вложенные файлы.
- Запаковать обратно в ZIP и переименовать в KMZ.
Для удобства используйте Google Earth или QGIS.
Какой формат лучше для веб-карт: KML или KMZ?
KMZ предпочтительнее, так как:
- 🚀 Быстрее загружается (один файл вместо множества).
- 🛡️ Защищён от случайного изменения структуры.
- 🌐 Поддерживается большинством онлайн-карт (Google Maps, Leaflet с плагинами).
Исключение: если вам нужно динамически обновлять данные на карте, используйте KML с внешними ссылками.