KML is a file format used to display geographic data in an Earth browser such as Google Earth. KML uses a tag-based structure with nested elements and attributes and is based on the XML standard. All tags are case-sensitive and must appear exactly as they are listed in the . The Reference indicates which tags are optional. Within a given element, tags must appear in the order shown in the Reference. If you"re new to KML, explore this document and the accompanying samples files () to begin learning about the basic structure of a KML file and the most commonly used tags. The first section describes features that can be created with the Google Earth user interface. These features include placemarks, descriptions, ground overlays, paths, and polygons. The second section describes features that require authoring KML with a text editor. When a text file is saved with a .kml or .kmz extension, Earth browsers know how to display it. |
Tip: To see the KML "code" for a feature in Google Earth, you can simply right-click the feature in the 3D Viewer of Google Earth and select Copy. Then Paste the contents of the clipboard into any text editor. The visual feature displayed in Google Earth is converted into its KML text equivalent. Be sure to experiment with this feature.
For a discussion of how to use some of the key features in KML, see the .
Table of Contents
Basic KML Documents
The simplest kind of KML documents are those that can be authored directly in Google Earth—that is, you don"t need to edit or create any KML in a text editor. Placemarks, ground overlays, paths, and polygons can all be authored directly in Google Earth.
Placemarks
A Placemark is one of the most commonly used features in Google Earth. It marks a position on the Earth"s surface, using a yellow pushpin as the icon. The simplest Placemark includes only a
As an example, enable the "Absolute Positioning: Top left" folder in the file and you will see a screen overlay at the top left of the view window. This was created with the following KML code:
Positioning is controlled by mapping a point in the image specified
by
Check the other examples in the folder to see how it is possible to obtain other fixed positions, and to create images that size dynamically with screen size. (Note that xunits and yunits can also be specified as "pixels" for precision control.) For further detail, see the .
Network Links
A network link contains a element with an
The
- An image file used by icons in icon styles, ground overlays, and screen overlays
- A model file used in the
element - A KML or KMZ file loaded by a Network Link
The specified file can be either a local file or a file on a remote server. In their simplest form, network links are a useful way to split one large KML file into smaller, more manageable files on the same computer.
So far, all of our examples have required that the KML code be delivered to Google Earth from the local machine. Network links give you the power to serve content from a remote location and are commonly used to distribute data to large numbers of users. In this way, if the data needs to be amended, it has to be changed only at the source location, and all users receive the updated data automatically.
CGI Scripting for KML
In addition to pointing to files containing static data, a network link"s
Two things are necessary for delivering KML through a network CGI:
When a call is made from the client (Google Earth) to the server, the server must (1) return a response code of HTTP 200 and (2) set the response"s content type to text/plain or application/vnd.google-earth.kml+xml.
The response must be valid KML. For complex applications, proper error handling is very important.
Tip:
A simple way to handle errors is to parse the
server"s error as the text for a folder name. For example, you could
have the server return
The following examples use Python, but they are equally valid in any other scripting language.
Generating a Random Placemark
The following Python script generates random integer values for latitude
and longitude
and then inserts those values into the
#!/usr/bin/python
import random
latitude = random.randrange(-90, 90)
longitude = random.randrange(-180, 180)
kml = ("\n"
"
Here is an example of a KML file containing a Network Link that loads this Python script:
placemark on each call
View-Based Refresh Queries
A standard network link is a uni-directional link: data flows only from the server to Google Earth. The view-based refresh enables bi-directional communication. When the view-based refresh is active, Google Earth returns the view coordinates to the server at a specified time. This may be every n seconds, minutes, or hours, or once a certain amount of time has elapsed since the view stopped moving. See in the KML 2.2 Reference.
The coordinates are returned to the server by means of an HTTP GET that appends the coordinates as follows (this is the default bounding box information):
GET /path/to/sever/script/query?BBOX= HTTP/1.1
If the request were made while the user was looking down on San Francisco, the coordinates might look as follows:
GET /path/to/server/script/query?BBOX=-122.497790,37.730385,-122.380087,37.812331 HTTP/1.1
This feature can be used for some very creative applications, but to get you started, a simple example is presented below.
Tracking a Point Directly Under Your View
The following server-side Python script parses the return message sent by Google Earth and responds with a Placemark at the center of the screen. Each time the Network Link is refreshed, a new Placemark is generated.
#!/usr/bin/python
import cgi
url = cgi.FieldStorage()
bbox = url["BBOX"].value
bbox = bbox.split(",")
west = float(bbox)
south = float(bbox)
east = float(bbox)
north = float(bbox)
center_lng = ((east - west) / 2) + west
center_lat = ((north - south) / 2) + south
kml = ("\n"
"
And here is the KML for the Network Link that loads the Python script:
the center of your screen and return a placemark.
The principle illustrated in this example can be used for some very complex applications. For example, if you have a database of geographic information, you can extract the coordinates of the viewer, make a call to the database for the data specific to the view, and return it to Google Earth as KML.
3 KML MIME Types
When responding to a request from Google Earth (or any Earth browser), a KML server must follow a certain set of rules so that Google Earth can correctly interpret its responses.
Upon success, the server must return a response code of HTTP 200 and set the response"s content-type to a suitable MIME type, as described here.
Google Earth reads KML and KMZ files. The MIME type for KML files is
- application/vnd.google-earth.kml+xml
The MIME type for KMZ files is
- application/vnd.google-earth.kmz
For Apache, add these lines to the httpd.conf file:
- AddType application/vnd.google-earth.kml+xml .kml
- AddType application/vnd.google-earth.kmz .kmz
See the Microsoft documentation for details on setting up MIME types on Microsoft"s IIS.
The body of the response must contain valid KML data, including the XML declaration (). If the server returns invalid KML, the Network Link will stop, deactivate, and output an error message.
What"s Next?
Ready for more? Check out the , which describes key KML features. Also, browse the for information on specific elements.
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 our . Java is a registered trademark of Oracle and/or its affiliates.
Файл KMZ содержит геолокационные данные, например метку о местоположении, и в основном используется в картографических приложениях. Часто такой информацией могут обмениваться пользователи по всему миру и поэтому вопрос открытия данного формата является актуальным.
Итак, в данной статье подробно рассмотрим приложения для Windows, которые поддерживают работу с KMZ.
Способ 1: Google Earth
После запуска Глобал Маппер выбираем пункт «Open Data File(s)» в меню «File» .
В Проводнике перемещаемся в каталог с искомым объектом, выделяем его и кликаем на кнопку «Открыть» .
Можно еще перетащить файл в окно программы с папки Проводника.
В результате действия загружается информация о местонахождении объекта, которая отображается на карте в виде метки.
Способ 4: ArcGIS Explorer
Приложение является настольной версией геоинформационной платформы ArcGIS Server. KMZ здесь используется для задания координат объекта.
Эксплорер может импортировать формат KMZ по принципу drag-and-drop. Перетаскиваем исходный файл с папки Проводника в область программы.
Открытый файл.
Как показал обзор, все способы открывают формат KMZ. В то время как Google Earth и Global Mapper лишь отображают местонахождение объекта, SketchUp использует KMZ как дополнение к 3D-модели. В случае с ArcGIS Explorer указанное расширение может применяться для точного определения координат инженерных коммуникаций и объектов земляного кадастра.
Что такое KMZ-файл?
В KMZ-файл входит основной KML-файл и, как правило, связанные с ним ресурсы, сжатые с помощью архиватора в единый архив . KMZ-архив можно хранить на диске или отправлять по почте как единый файл. По сетевой ссылке KMZ-файл можно получить с веб-сервера. Перед сжатием основной KML -документ и связанные с ним ресурсы представляют с собой отдельные файлы с собственными именами и расширениями, организованные по каталогам. Формат KMZ служит не только для архивирования, но и для сжатия, поэтому в архив можно включить только один большой KML-файл. Размер файла обычно удается сократить в десять раз (в зависимости от содержания). Таким образом, KML-файл размером 10 КБ можно превратить в KMZ-файл размером 1 КБ.
Google Планета Земля и Google Карты распознают форматы KML и KMZ, а также поддерживают сохранение KMZ-файлов. По умолчанию основному KML-файлу присваивается имя doc.kml .
Примечание . Для ясности мы также будем называть основной KML-файл в KMZ-архиве doc.kml . В реальности он может называться как угодно, главное – он должен иметь расширение KML и быть единым KML -файлом в архиве.
Если размер файла doc.kml превышает 10 КБ или если в нем содержатся ссылки на другие ресурсы (картинки, звуковые фрагменты, модели или текстуры), необходимо создать KMZ-архив.
В этом разделе содержится несколько советов по созданию KML- и KMZ-файлов. Пример, который мы используем, заимствован с сайта Джимми Баффета , где формат KML используется для отображения гастрольных маршрутов и связанной с ними информации в Google Планете Земля.
Загрузите KMZ-файл с информацией об этом турне (используется с разрешения владельца).
Примечание . Чтобы относительные ссылки на KMZ-файлы правильно обрабатывались Google Планетой Земля 6.0, необходимо соблюсти все приведенные ниже инструкции (обратите особое внимание на пункт 4). В более ранних версиях геобраузера правила обработки относительных ссылок были менее строги, поэтому некоторые ссылки, которые работали в Google Планете Земля до версии 5.2 включительно, могут не работать в версии 6.0 и более поздних.
Чтобы создать KMZ-файл, выполните указанные ниже действия.
В примере ниже показана структура папок в KMZ-архиве гастрольного тура Джимми Баффета.
Так как дополнительных файлов всего пять, все они объединены в подпапку files
. Если загрузить файл в Google Планету Земля, а затем скопировать и вставить его содержание в текстовый редактор, будет видно, что во всех элементах
Ссылки на внешние файлы
В файле doc.kml
обычно содержатся ссылки на другие файлы: картинки, значки, модели, текстуры и звуковые фрагменты. Они включаются в атрибут href (или в элемент
- в элементе (или в элементе
); - (дочерний элемент , или );
- и в элементе .
Ссылки на внешние файлы могут быть абсолютными
или относительными
– этому посвящен следующий раздел. Они могут указывать на файлы внутри того же KMZ-архива, внутри других KMZ-архивов или на внешних веб-серверах. Относительные ссылки всегда определяются исходя из расположения файла doc.kml
, как описано в разделе . Исключением является только
Абсолютные и относительные ссылки
Абсолютная ссылка содержит URL файла целиком. Такие ссылки однозначны и, как правило, указывают на файлы, которые хранятся на внешних серверах. Абсолютная ссылка на локально сохраненный файл перестанет работать после того, как он будет перемещен в другую систему. Чтобы этого избежать, рекомендуется пользоваться относительными ссылками.
Обработка относительных ссылок
Относительные ссылки обрабатываются исходя из расположения файла doc.kml , т. е. любой относительный путь начинается в корневой папке KMZ-архива. В примере выше основной URL имеет следующий вид (он может отличаться в зависимости от того, откуда вы загрузили KMZ-архив):
Buffetthawaiitour.kmz
Чтобы сослаться на файл, находящийся в другом KMZ-архиве (например, images/jimmyphoto.jpg в margaritavillealbum.kmz ) используется обозначение "..", соответствующее переходу на один уровень вверх (выходу из текущего KMZ-архива (buffetthawaiitour.kmz ).
Примечание . Правила обработки относительных ссылок в KMZ-архиве основаны на требованиях стандарта RFC 3986 (Раздел 5). Основной URL определяется расположением файла doc.kml , а все относительные URL обрабатываются на его основе.
Исключение: внутри элемента
Элемент
Создание KMZ-архива
Чтобы создать ZIP-архив, воспользуйтесь приложением Windows Explorer или Mac Finder. Выделите содержание папки, в которой расположен файл doc.kml и связанные с ним ресурсы, и нажмите WinZip > Добавить в ZIP-файл . Библиотека Java в формате JAR также содержит ZIP-библиотеку для создания и извлечения ZIP-архивов, а в Linux предусмотрены соответствующие инструкции командной строки.
Примечание . При создании ZIP-архива необходимо выделить содержание папки с файлом doc.kml , а не саму папку.
Измените расширение созданного архива с ZIP на KMZ . Если потребуется извлечь файлы, достаточно снова изменить расширение на ZIP , после чего можно будет воспользоваться стандартной программой для распаковки ZIP-архивов.
KMZ-архивы в Google Планете Земля
Использование элемента
Большинство HTML-элементов во всплывающих окнах с описанием в KML обрабатывается в 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 our . Java is a registered trademark of Oracle and/or its affiliates.
Обновлено Январь 10, 2014
После описания Гарминовской инструкции по созданию растровых карт возникает немало вопросов, а именно:-Как закачать спутниковые карты, чтоб в них отсутствовали служебные символы и рисунки "Планеты Земля"
-Как разбить карты на фрагменты размером 1024*1024 максимум каждый, а также контролировать максимальное количество этих файлов
-Как автоматизировать процесс создания фрагментов и их привязки в программе "Планета Земля"
Естественно это вопросы появились в попытках ответить людям на возникающие вопросы, очередная такая работа заставила задуматься и попробовать написать по свежим следам воспоминаний небольшую инструкцию....
Почему сразу не написал? Да все просто, программы которые раньше использовал меняются, кое-где появляются новые возможности, в общем на данном этапе сей процесс у меня выглядит так.
1. Закачка картинок и создание kmz файла
Есть такая совершенно бесплатная програмка, называется SASPlanet. Находятся она тут http://sasgis.org/download/ и скачать ее можно там-же.
Прелесть данной програмки в том, что она позволяет скачивать снимки не только
Google карт, но и с кучи разных других источников. Причем скачивает
их с возможностью задать на сколько фрагментов делить, и создавать ли дополнительные файлы привязки!!! Вот эти картинки совершенно лишены лишней информации, они закачиваются пакетом, т.е. сразу можно качать приличные объемы, можно задать уровень детализации, сгенерируются базовые файлы привязки, которыми можем воспользоваться, а главное может сразу создать kmz файл для навигатора!!!
Посему, качаем програмку, а точнее архив и распаковываем его на своем компьютере. Запускаем SASPlanet и первое что необходимо сделать, это выставить параметр в меню "Источник\Интернет и кеш", т.е. чтобы карты брались и с интернета, если они отсутствуют, и из кеша, если они уже были закачаны на компьютер.
Далее следует поиграть с програмкой, т.е. посмотреть карты, какие они с того или иного источника (меняя меню "Карты") дабы определиться что Вам больше всего подходит. Во многом работа с программой схожа с Планетой Земля.
Вот если вы определились с какой картой Вам интереснее и какой именно участок Вам нужен в навигатор, то тогда:
Поувеличивайте карту, чтобы понять какой уровень детализации вам необходим, уровень детализации отображается в нижнем правом углу программы, на данной картинке, как видно, он составляет 5x, запомнили это число.
Отмечаем выбранный участок, для этого выбираем меню выделения прямоугольной области, карту при этом можно увеличить или уменьшить, главное чтоб отмечать было удобно.
Выделяем на карте нужную нам область
Появится вот такое меню
Выставляем тип карты на тот тип который вам понравился.
Масштаб ставим на число, которое мы запомнили как уровень детализации.
Проверьте что пункт "Пытаться загружать отсутствующие тайлы" отмечен галочкой.
Теперь нам немного надо подумать. Мы видим, что ниже под типом карты, программа нам дала разрешение картинки, в данном примере оно составляет 14336x12800 точек. У нас существуют в навигаторе следующие ограничения: размер файла может быть не больше 1024x1024 (естественно меньше можно, к примеру 900x200), общее количество таких файлов может быть не более 100.
Т.е. в данном конкретном случае, мы никоим образом не влазим в действующие ограничения. Тут два выхода, либо пометить меньшую территорию, либо выбрать более слабый уровень детализации. Если я сейчас установлю детализацию на один уровень меньше, т.е. 13, то получу разрешение картинки равное 7168x6400.
Вот 7168x6400 всполне подходят, ибо если мы картинку поделим например по горизонтали на 8 частей, а по вертикали на 7, то получим 896x915, что вполне влазиит в ограничение по размеру файлов, а количество файлов получится 7*8=56, что удовлетворяет условию, когда количество файлов должно быть не более 100.
Итак мы определились с размерами, масштабами и готовы дать команду загрузки из интернета всех необходимых снимков! Нажимаем кнопку "Начать"
Потребуется определенное время, иногда немалое, пока программа загрузит все данные с сервиса карт на локальный диск.
Появится вот такое меню, после окончания загрузки просто нажмите "Выход"
Мы закачали все нужные нам карты, теперь продолжаем, для этого надо снова вернуться к помеченой области, для этого просто выберите меню "Предыдущее выделение"
и, таким образом, мы вернулись к знакомому нам диалоговому меню
В этом диалоге выбираем закладку "Склеить"
Выберите результирующий формат как показано, т.е. создание "Kmz для Garmin".
Укажите путь сохранения и имя файла.
Выставьте правильный масштаб.
Поехали! Нажимаем "Начать" и програмка создаст kmz файл, внутри которого будут содержаться картинки карт, разбитые на части!!!
Все!!! То, что нам нужно было от программы SASPlanet мы получили, осталось лишь скопировать файл карт в навигатор (каталог /Garmin/CustomMaps/).
Единственно отмечу, не стоит давать kmz файлу имя русскими буквами, такой файл навигатор просто не увидит.
2. Редактирование карты
Есть ситуации, когда необходимо подправить картинки карт. У меня, например, получилась карта, дома которая выглядела нормально, а реально на водоеме
ее читаемость оставляла желать лучшего, и в следующий раз я просто обрисовал сушу коричневым, а воду голубым, тем самым увеличив контрастность между объектами и повысив читаемость. Подобных причин может быть множество.
Поэтому приведу руководство, как-же поредактировать готовый kmz файл.
Kmz файл представяет собой обычный Zip архив. Нужно настроить оболочку Windows, чтобы она позволяла видеть и изменять расширения файлов. Меняем расширение нашего файла на zip, и тогда файл можно открыть как архив и вытащить из него все содержимое.
Разархивируем наш файл в пустой каталог. Мы получим в нем:
doc.kml - текстовый XML файл привязок картинок к координатам.
files - каталог, в котором содержатся все картинки в формате jpg
Вот теперь берем и редактируем любые картинки в каталоге files. Главное не изменять имена файлов и не изменить размер картинок.
Для проверки как это будит выглядеть, можно программой Планета Земля открыть файл doc.kml, а он загрузит картинки. Как только, мы убедимся, что все
нужные изменения сделаны, достаточно запаковать в zip архив файл doc.kml и каталог files с содержимым, после чего изменить расширение архива с zip на kmz.
KMZ файлы хранят местонахождение на карте для просмотра в Google Earth, глобальной программы отображения. Они обеспечивают вид с высоты птичьего полета местах по всей территории США и других регионах мира. Меток может включать в себя пользовательское имя и координаты широты и долготы местоположения. KML файлы очень часто распространяются в KMZ файлы, которые запакованы в формате KML файлы с расширением.kmz. Кихол Markup Language (KML) является XML-нотация для выражения географической аннотацию и визуализации в Интернет на основе, двумерных карт и трехмерных браузеров Земли. KML был разработан для использования с Google Earth, который первоначально был назван Keyhole Earth Viewer. Она была создана Keyhole, Inc, которая была приобретена компанией Google в 2004 году KMZ файлы могут быть открыты разархивированием их с утилитой сжатия, таких как WinZip на Windows, MacZip для пользователей Macintosh, и Zip и разархивировать для систем UNIX.