Язык географической разметки kml

Руководство по KML

KML – это формат файлов, который используется для отображения географических данных в геобраузерах, таких как Google Планета Земля, Google Карты и Google Карты для мобильных устройств. KML создан на основе стандарта XML и использует основанную на тегах структуру с вложенными элементами и атрибутами. Регистр тегов учитывается, поэтому их необходимо указывать точно в той форме, в какой они приведены в Справке по KML, где также указано, какие теги обязательны, а какие – нет. Теги внутри элемента должны располагаться в том порядке, который приведен в Справке.

Если вы никогда не работали с KML, начните с изучения этой страницы и прилагаемых файлов с примерами (SamplesInEarth и SamplesInMaps), чтобы ознакомиться со структурой KML-файла и основными тегами. В первом разделе описаны компоненты, которые можно создать в пользовательском интерфейсе Google Планеты Земля, включая метки, описания, наложения на земную поверхность, пути и многоугольники. Во втором разделе описаны компоненты, для определения которых потребуется текстовый редактор. Текстовый файл, сохраненный с расширением .kml или .kmz, распознается геобраузерами.

Совет. Чтобы получить KML-код компонента из Google Планеты Земля, нажмите на него правой кнопкой мыши в окне 3D-просмотра и выберите «Копировать», а затем вставьте содержание буфера обмена в любой текстовый редактор. Компонент, отображаемый в геобраузере, будет преобразован в KML-код. Рекомендуем попробовать эту функцию в действии.

Все примеры, которые приводятся на этой странице, можно найти в файле KML_Samples. Прежде чем продолжать, загрузите его, чтобы просматривать примеры в интерфейсе Google Планеты Земля.

Дополнительная информация

В Справке по KML 2.2 формат KML описан более подробно. Если вы уже работали с XML-кодом, рекомендуем ознакомиться со схемой KML 2.2.

Инструкции по применению отдельных компонентов KML можно найти в Руководстве разработчика.

Содержание

Простые KML-документы

Самые простые KML-документы можно создавать прямо в интерфейсе Google Планеты Земля; для этого даже не потребуется текстовый редактор. Таким способом можно создавать и изменять метки, наложения на земную поверхность, пути и многоугольники.

Метки

Метка является одним из самых часто используемых компонентов в Google Планете Земля. Она служит для указания положения на земной поверхности и представлена значком булавки желтого цвета. В самом простом варианте метка содержит только элемент

, который определяет ее положение. Вы также можете указать ее название и персонализированный значок или добавить другие элементы.

Откройте файл KML_Samples в Google Планете Земля и перейдите в папку Placemarks. В ней представлены три типа меток: проcтая, плавающая и выдавленная. Ниже показан KML-код простой метки.

Рассмотрим структуру этого файла.

Если вы не можете найти эту метку на карте, подсказываем: она расположена прямо на 41-м корпусе Google – именно там разрабатывалась Google Планета Земля.

То, что пользователи Google Планеты Земля видят как метку, является элементом

с дочерним элементом

в формате KML. Это единственный способ отобразить метку с ярлыком в окне 3D-просмотра. По умолчанию метка имеет вид уже знакомой вам желтой булавки. В KML-коде элемент

может содержать один или несколько геометрических элементов, таких как ломаные линии (LineString), многоугольники (Polygon) или модели (Model), но только

с дочерним элементом

может отображаться как метка с ярлыком. Элемент

служит для правильного размещения метки на карте, но сам не имеет графического представления.

Описательный HTML в метках

В файле KML_Samples приведены исчерпывающие примеры форматирования текста метки, включая добавление ссылок, изменение размера и стиля шрифта, выравнивание и использование таблиц. Чтобы просмотреть полный список возможностей, скопируйте и вставьте в текстовый редактор пример Descriptive HTML (в папке Styles and Markup).

Авторазметка в Google Планете Земля 4.0 и более поздних версий

Использование элемента CDATA

Теперь посмотрим, как оформляется без тегов CDATA.

Наложения на земную поверхность

Наложения на земную поверхность позволяют «накрыть» рельеф местности определенным изображением. Элемент содержит ссылку на JPG-файл изображения. Ниже приведен пример из файла KML_Samples, показывающий извержение Этны в 2001 году.

Обратите внимание на то, что первые две строки файла точно такие же, как в первом примере: XML-заголовок и декларация пространства имен KML.

Для группировки и обозначения содержания в примере используется папка Ground Overlays. Обратите внимание на то, что она появляется в панели «Метки», как только вы загружаете файл KML_Samples в Google Планету Земля.

Наложения на экране

В отличие от наложений на земную поверхность, наложения на экране нельзя создавать в интерфейсе Google Планеты Земля. Примеры можно найти в папке Screen Overlays файла KML_Samples.

В качестве иллюстрации включите папку Absolute Positioning: Top left файла KML_Samples. В левом верхнем углу окна просмотра появится наложение. Ниже показан его KML-код.

Просмотрите другие примеры в папке, чтобы лучше понять принцип определения фиксированных изображений и изображений, размер которых меняется в зависимости от размера экрана. Обратите внимание на то, что для большей точности вместо xunits и yunits можно использовать пиксели. Подробные сведения приведены в Справке по KML 2.2.

Сетевые ссылки

Элемент может указывать на расположение любого из следующих файлов:

Такой файл может располагаться локально или на удаленном сервере. В самом простом варианте сетевые ссылки помогают разделить крупный KML-файл на несколько меньших файлов на одном и том же компьютере, чтобы с ними было удобнее работать.

До сих пор мы рассматривали только случаи, в которых KML-код передается в Google Планету Земля с локального компьютера. Сетевые ссылки позволяют получать содержание с удаленных серверов и, как правило, используются для предоставления данных большому количеству пользователей. Таким образом, если в содержание необходимо внести изменения, достаточно сделать это в файле источника, и все пользователи автоматически увидят обновленную версию.

CGI-скрипты для KML

Элемент сетевой ссылки может не только указывать на файлы со статическими данными, но и на динамическое содержание, генерируемое, например, CGI-скриптом на сетевом сервере. При наличии базовых навыков программирования программирования на языках PHP, Python или Perl вы сможете написать скрипт для передачи потоковых данных (или файлов) в формате KML по сетевым ссылкам.

Чтобы передавать KML-код с помощью сетевого CGI-скрипта, должны выполняться два условия.

Когда клиент (Google Планета Земля) отправляет запрос на сервер, сервер должен, во-первых, возвратить код ответа HTTP 200, а во-вторых, предоставить содержание типа text/plain или application/vnd.google-earth.kml+xml.

Ответ должен содержать действительный KML-код. Чем сложнее приложение, тем важнее предусмотреть правильную обработку ошибок.

В примерах ниже используется Python, однако то же самое можно написать на любом другом языке.

Создание случайной метки

Ниже показан скрипт на языке Python, генерирующий случайные значения широты (latitude) и долготы (longitude) и добавляющий их в элемент элемента

. При обновлении сетевой ссылки скрипт запускается снова и генерирует KML-код с новыми значениями широты и долготы.

Теперь рассмотрим пример KML-файла с сетевой ссылкой, по которой загружается скрипт Python.

Запросы на обновление при просмотре

Стандартная сетевая ссылка работает только в одном направлении: данные поступают с севера в Google Планету Земля. Обновление при просмотре позволяет передавать данные в обоих направлениях, причем Google Планета Земля в определенный момент времени возвращает серверу координаты области просмотра. Это может происходить каждые n секунд, минут или часов либо по истечении определенного времени после того, как область просмотра перестала смещаться. Подробные сведения приведены в разделе Справки по KML 2.2.

Координаты возвращаются серверу с помощью метода HTTP GET, который добавляет их в следующем виде (показана информация в заданном квадрате поиска):

Если запрос выполняется в тот момент, когда пользователь рассматривает область Сан-Франциско, координаты могут выглядеть так:

Эту функцию можно использовать для самых разных целей, однако для начала рассмотрим простой пример.

Определение точки в центре области просмотра

Ниже показан выполняемый на стороне сервера скрипт Python, который анализирует сообщение, возвращаемое Google Планетой Земля, и в ответ размещает метку в центре экрана. Новая метка генерируется при каждом обновлении сетевой ссылки.

А так выглядит KML-код сетевой ссылки, которая загружает показанный выше скрипт:

Этот принцип можно использовать и для более сложных задач. Например, если у вас есть база данных с географической информацией, можно получить координаты области просмотра, отправить в базу данных запрос на информацию об этой области и в ответ передать в Google Планету Земля KML-код.

Типы MIME в KML

Когда KML-сервер отвечает на запрос Google Планеты Земля (или любого другого геобраузера), должен быть соблюден ряд правил, иначе геобраузер не сможет правильно интерпретировать ответ.

В случае успеха сервер должен возвратить код ответа HTTP 200 и указать для содержания ответа подходящий тип MIME, как описано ниже.

Google Планета Земля поддерживает файлы в форматах KML и KMZ. Для KML-файлов необходимо указать следующий тип MIME:

Для KMZ-файлов необходимо указать следующий тип MIME:

Если используется сервер Apache, добавьте в файл httpd.conf следующие строки:

Инструкции по настройке типов MIME в службе Microsoft IIS можно найти в документации Microsoft.

Тело ответа должно содержать действительный KML-код, включая декларацию XML ( ). Если сервер возвратит недействительный KML-код, передача данных по сетевой ссылке будет прекращена, ссылка будет деактивирована, и будет показано сообщение об ошибке.

Дополнительные ресурсы

Подробные сведения об основных компонентах KML можно найти в Руководстве разработчика, а информацию об отдельных элементах – в Справке по KML.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Источник

Часто задаваемые вопросы о KML

Начало работы

Геометрические объекты в KML

Расширенные функции KML

Веб-функции KML

Относительные пути в KMZ-файлах

Другие вопросы

KML – это формат файлов, который используется для отображения географических данных в геобраузерах, таких как Google Планета Земля, Google Карты и Google Карты для мобильных устройств. С помощью KML-файлов можно добавлять на карту метки или наложенные изображения и отображать расширенные географические данные. KML является международным стандартом, поддерживаемым организацией Open Geospatial Consortium (OGC).

Для кого предназначен KML?

Сообщество KML весьма разнообразно. Чтобы в этом убедиться, достаточно посетить форум сообщества Google Планеты Земля. Обычные пользователи с помощью KML могут обозначать на карте свои дома, маршруты пеших или велосипедных путешествий. Ученым KML позволяет создавать подробные карты минеральных ресурсов, моделировать вулканические извержения, землетрясения, движение воздушных масс и другие природные явления. Риелторам, архитекторам и специалистам по градоустройству KML помогает представлять планы и строительные проекты. Учащиеся и преподаватели используют KML для проведения демографических исследований, а также наглядной демонстрации исторических и современных мест и событий. Такие организации, как National Geographic, ЮНЕСКО и Смитсоновский институт отображают с помощью KML специализированную информацию.

Как создать KML-файл?

KML-можно создать тремя способами, которые описаны ниже.

Создайте один из перечисленных объектов, выберите его в панели «Метки» и нажмите «Копировать». Скопированное содержание затем можно вставить в текстовый редактор или редактор XML.

Существует также множество инструментов, созданных участниками сообщества Google Планеты Земля. Посетите группу поддержки KML-разработчиков.

Как открыть KMZ-файл?

KMZ-файл – это архив, состоящий из одного или нескольких файлов, предназначенных для отображения в Google Планете Земля. Файлы сжимаются в формате ZIP и могут быть распакованы с помощью любого ZIP-архиватора, такого как WinZip, 7-Zip, инструмента Windows XP Compressed Folders Tool (в ОС Windows), Stuffit (в Mac OS) или команды zip (в Mac OS или Linux). Чтобы открыть файлы с помощью ZIP-архиватора, может потребоваться изменить расширение пакета с KMZ на ZIP. Не забудьте снова присвоить файлу расширение KMZ, прежде чем загружать его в геобраузер.

Как создать KML-файл с астрономическими данными?

В KML-файл можно включить астрономические данные для загрузки в Google Небо или Microsoft WorldWide Telescope. Подробные сведения приведены в статье Данные Google Неба в KML.

Какие теги KML поддерживает Google Планета Земля?

Google Планета Земля поддерживает абсолютно все теги, предусмотренные в KML. Их список можно найти в Спецификации KML.

Какие теги KML поддерживают Google Карты?

Google Карты поддерживают некоторые теги KML.

Где найти Руководство разработчика?

Почему исчезают линии?

Если для компонента LineString задано значение высоты clampToGround, он всегда остается на земной поверхности. Если же задано значение relativeToGround, может потребоваться добавить дополнительные точки, поскольку слишком длинные прямые отрезки пересекаются с рельефом местности.

Приведем пример кода для компонента LineString: отрезки определенной им прямой линии будут скрыты под землей.

Если добавить дополнительные точки, под землю будет уходить меньше линий. Чтобы линия копировала рельеф местности, установите для поля значение 1.

Можно ли нарисовать круг в KML?

В KML не предусмотрена геометрия круга, однако с помощью ломаных линий (компонентов LineString) можно создать нечто подобное (см. пример).

Можно ли сделать ломаную линию пунктирной или добавить к ней стрелки?

Как скрыть ярлыки меток?

Из-за чего возникает ошибка синтаксического анализа?

Ошибки синтаксического анализа обычно возникают по одной из двух причин.

Примеры:
Омск – верно;
Омск – неверно;
– неверно;
– неверно.

Как проверить правильность созданного KML-файла?

KML – это язык разметки на основе XML. Проверить правильность XML-кода можно несколькими способами.

Для этих целей используются регионы (компоненты Region). Рекомендуем ознакомиться со следующими ресурсами:

MultiGeometry объединяет несколько геометрических объектов в единую метку (компонент Placemark). Благодаря этому к ним можно применять единый стиль и отображать их как единый объект, например в панели «Места» в Google Планете Земля.

Стили задаются на уровне компонента Placemark с помощью элемента styleUrl или Style. Таким образом, отдельные геометрические объекты внутри метки не могут иметь собственные стили.

Это правило можно обойти, создав отдельный компонент Placemark для каждого геометрического объекта и определив для него собственный стиль. Чтобы элементов не получилось слишком много, объедините их в компонент Folder, определите для него ListStyle и задайте для его элемента listItemType значение checkHideChildren. Все объединенные таким образом компоненты Placemark будут представлены как единый элемент в панели «Места» в Google Планете Земля, и отображать их по отдельности не потребуется.

Можно ли открывать всплывающее окно одновременно с KML-файлом?

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

Можно ли оставлять всплывающее окно открытым при обновлении сетевой ссылки?

В настоящее время KML не сохраняет состояние всплывающего окна при обновлении сетевой ссылки.

Можно ли просматривать KML-код, созданный пользователями моего домена?

В настоящее время по сетевым ссылкам нельзя отследить KML-код, создаваемый пользователями в Google Планете Земля или Google Картах. Тем не менее, можно использовать API Google Планеты Земля или API Google Карт в качестве инструмента создания KML-файлов и передавать информацию обратно на сервер (см. пример GeoDataStore).

Можно ли контролировать ползунок времени средствами KML?

Как добавить в KML-файлы интерактивные функции? Можно ли использовать HTML-формы во всплывающих окнах с описаниями?

В настоящее время KML в Google Планете Земля поддерживает только функции HTML, служащие для представления содержания; интерактивные функции HTML не поддерживаются. В Google Картах KML позволяет программировать формы.

Однако KML в Google Планете Земля поддерживаются Flash-формы. Чтобы добавить такую форму, вставьте Flash-приложение в HTML-код, который отображается во всплывающем окне с описанием. В Google Картах этот способ не работает.

Можно ли автоматически преобразовать таблицу в KML-файл?

Да. Это можно сделать одним из указанных ниже способов.

Веб-серверу необходимо сообщать, какие файлы он предоставляет. Некоторые браузеры, например Firefox, делают предположения относительно типов файлов. Другие, например Internet Explorer, пользуются настройками типа MIME на веб-сервере.

Если у вас сервер Apache, в httpd.conf следует включить следующие две строки:

Если у вас сервер Microsoft Internet Information Server, потребуется выполнить инструкции по ссылкам ниже.

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

Почему во всплывающем окне написано, что URL изображений могут быть отформатированы неверно?

Недавно в Google Планету Земля были внесены изменения, в результате которых ссылки во всплывающих окнах стали обрабатываться иначе. Изменения нацелены на оптимизацию работы всего механизма. В результате, если нажать в KMZ-файле на ссылку с неправильной структурой, откроется страница с надписью «Ссылка, по которой вы перешли на эту страницу, не работает из-за неверного форматирования. Чтобы воспользоваться предыдущей версией, нажмите на ссылку ниже». Если появляется это сообщение, необходимо изменить KML- или KMZ-код так, чтобы он был совместим с последующими версиями Google Планеты Земля.

Подробные сведения о требованиях к структуре KMZ-кода можно найти здесь.

На какое содержание влияют новые правила определения относительных путей?

В настоящее время эти правила влияют только на URL во всплывающих окнах (ссылки в тегах и

в элементах ). Однако в будущем в Google Планету Земля могут быть внесены дальнейшие изменения, направленные на повышение стабильности работы, поэтому уже сейчас не рекомендуется использовать родительский каталог в качестве базового URL, к которому привязываются ссылки в KMZ-архиве.

Отправляются ли KML-файлы из «Моих меток» в Google Планете Земля на серверы Google?

Нет. KML-файлы, созданные в интерфейсе Google Планеты Земля или загруженные пользователем, не отправляются в Google. Все данные хранятся и обрабатываются локально.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Источник

Поделиться с друзьями
admin
Оцените автора
( Пока оценок нет )
Как переводится?
Adblock
detector