KML (Keyhole Markup Language) – это язык разметки данных, который используется для описания геоинформационных данных и визуализации их на карте. KML обычно используется в ГИС (геоинформационных системах), САПР и веб-картах для отображения местоположения объектов, маршрутов, границ и других географических элементов.
KML поддерживает различные типы данных, такие как точки, линии, полигоны, изображения, текстовые метки и многое другое. Он также позволяет добавлять стили и метаданные к данным, что делает отображение информации более наглядным и информативным.
KML файлы могут быть открыты и просмотрены с помощью различных программ, реализующих геоинформационные технологии,таких как Google Earth, Google Maps, ArcGIS и другие. Они могут быть созданы вручную с использованием текстового редактора или с помощью специализированных программ для создания геоданных. KML создан на основе стандарта XML и использует основанную на тегах структуру с вложенными элементами и атрибутами. Регистр тегов учитывается, поэтому их необходимо указывать точно в той же форме, в какой они приведены в Справке по KML, где также указано, какие теги обязательны, а какие – нет. Теги внутри элемента должны располагаться именно в том порядке, который приведен в Справке.
KML-файл определяет один или несколько объектов для отображения в Google Earth. Этими объектами могут быть:
- Пометки на карте. Задаётся значок, отображаемый в некотором месте на карте, и его относительная величина, а также текст и цвет и величина надписи, отображаемой возле значка. Есть возможность создать пометку без значка. Например, поставить номера домов района. Для этого нужно просто в стиле создать пустую ссылку на значок: <Icon><href></href></Icon>
- Многоугольник или набор линий. Определяется цвет линий и цвет подписи.
- Изображение. Определяется положение изображения на поверхности Земли, а также его масштаб. Также можно разместить изображение на экране, не перемещающееся вместе с картой — например, логотип.
- Трёхмерная модель. Версия языка KML 2.1 (которая соответствует четвёртой версии программы Google Earth) позволяет подключать описание трёхмерных объектов (например, зданий и сооружений). Трёхмерную модель можно задать двумя способами: заданием высоты плоских фигур (вытягиванием) и ссылкой на полноценную модель в формате Collada.
Кроме упомянутых характеристик, для каждого объекта также задаются основные геоинформационные свойства (географическая широта и долгота, а также высота либо над уровнем моря, либо над уровнем поверхности Земли). Может быть приведено краткое описание объекта (которое в дальнейшем отображается во всплывающей подсказке по запросу пользователя). Может быть указан рекомендуемый ракурс наблюдения отмеченного на карте места, то есть рекомендуемая высота, азимут и угол наклона «виртуальной камеры».
Объекты внутри KML-файла можно организовать в иерархические структуры папок и подпапок, чтобы было удобнее совместно включать и отключать отображение логически взаимосвязанных групп объектов.
KML-файл может содержать (в URL-форме) ссылки на другие файлы в формате KML или KMZ, расположенные где-либо в Сети, и задавать условия и регулярность загрузки и отображения данных из этих внешних источников. Такая сетевая ссылка также видна в качестве своеобразной подпапки.
Для работы с документами формата KML созданы следующие библиотеки:
1. GDAL (Geospatial Data Abstraction Library) – библиотека для работы с различными геопространственными форматами данных, включая KML.
2. Google Earth API – API, который позволяет работать с данными в формате KML и взаимодействовать с картами Google Earth.
3. PyKML – библиотека для работы с данными KML на языке программирования Python.
4. libkml – библиотека для чтения, записи и манипуляций с данными KML.
5. OGR (Simple Features Library) – библиотека для работы с геопространственными данными, включая поддержку формата KML.