Наиболее часто встречаемой проблемой, из-за которой пользователи не могут открыть этот файл, является неверно назначенная программа. Чтобы исправить это в ОС Windows вам необходимо нажать правой кнопкой на файле, в контекстном меню навести мышь на пункт "Открыть с помощью", а выпадающем меню выбрать пункт "Выбрать программу...". В результате вы увидите список установленных программ на вашем компьютере, и сможете выбрать подходящую. Рекомендуем также поставить галочку напротив пункта "Использовать это приложение для всех файлов KML".
Другая проблема, с которой наши пользователи также встречаются довольно часто - файл KML поврежден. Такая ситуация может возникнуть в массе случаев. Например: файл был скачан не польностью в результате ошибки сервера, файл был поврежден изначально и пр. Для устранения данной проблемы воспользуйтесь одной из рекомендаций:
- Попробуйте найти нужный файл в другом источнике в сети интернет. Возможно вам повезет найти более подходящую версию. Пример поиска в Google: "Файл filetype:KML" . Просто замените слово "файл" на нужное вам название;
- Попросите прислать вам исходный файл еще раз, возможно он был поврежден при передаче;
Файл KML хранит данные о геомоделировании в формате XML. Он содержит точки, линии и изображения. Используют XML для выражения географической аннотации и визуализации путем хранения местоположений, наложения изображений, видео-ссылок и информации моделирования, таких как линии, фигуры, 3D-изображения и точки. Различные геопространственные программные решения используют формат KML, чтобы поместить данные в формат, который могут легко использовать другие программы и веб-службы.
Введение
Keyhole Markup Language — XML-обозначение для выражения географической аннотации и визуализации в двумерных картах и трехмерных браузерах. KML был разработан для использования с Google Earth, который изначально назывался Keyhole Earth Viewer. Он был создан Keyhole. Inc, который был приобретен Google в 2004 году. Данный формат стал международным стандартом Open Geospatial Consortium в 2008 году.
Google Earth была первой программой, способной просматривать и графически редактировать подобные файлы. Другие проекты, такие как Marble, также начали развивать поддержку KML.
Применение: как создать формат KML?
Вы можете открыть файл с данным расширением в "Google Картах". Для этого необходимо разместить его местоположение онлайн, а затем ввести URL-адрес в поисковое поле "Карт Google".
Google Earth была первой программой, которая могла просматривать и редактировать данные файлы, и она по-прежнему остается одним из самых популярных способов для работы с геоданными в Интернете. Открыв веб-страницу, используйте пункт меню «Мои места» (значок закладки) для загрузки файла KML со своего компьютера или учетной записи Google Диска.
Вы также можете открыть файлы с помощью любого текстового редактора (например, Notepad ++). Это позволит увидеть текстовую версию, которая включает в себя координаты, ссылки на изображения, углы наклона камеры и временные метки.
Если вы хотите конвертировать KML в XML, вам не нужно делать конверсию. Поскольку формат на самом деле является просто использует расширение формата KML), вы можете переименовать.KML в.XML, чтобы он был открыт в вашем средстве просмотра XML.
Вы также можете импортировать файл прямо в Карты Google. Это делается на странице Google Мои карты при добавлении контента на новый слой карты. Открыв карту, выберите «Импорт» на любом уровне, чтобы загрузить файл с вашего компьютера или Google Диска. Вы можете создать новый слой с помощью кнопки «Добавить слой».
Также вы можете самостоятельно создать KML-файл и его URL-адрес в Google Картах, предварительно связав URL-адрес вашего файла с помощью http://maps.google.com/maps?q=. Например, чтобы открыть тот же самый адрес, вы можете использовать следующий URL: http://maps.google.com/maps?q=http://mywebsite.com/myfile.kml.
Данная операция работает и для Google Earth — трехмерного плагина просмотра нашей планеты, который можно добавить в веб-браузер.
Структура
Формат KML-файла указывает набор функций (метки, изображения, полигоны, 3D-модели, текстовые описания) для отображения в Google Картах, Google Earth, Maps, на мобильных устройствах или любом другом геопространственном программном обеспечении, реализующем кодировку KML. Каждое местоположение имеет долготу и широту. Данный формат разделяет некоторые из тех же структурных грамматик, что и GML. Некоторая информация не может быть просмотрена в Картах Google или на мобильных устройствах.
Данные очень часто распространяются в формате KMZ, которые являются зашифрованными файлами KML с расширением.kmz. Они должны быть совместимы с устаревшим (ZIP 2.0) сжатием, иначе файл.kmz может не распаковываться.
Геодезические системы отсчета в KML
Для своей системы отсчета KML использует 3D-географические координаты: долготу, широту и высоту. Долготы, широтные компоненты (десятичные градусы) определены в соответствии с Мировой геодезической системой 1984 года (WGS84). Вертикальная составляющая (высота) измеряется в метрах от вертикальной базы геоида WGS84 EGM96 Geoid. Если высота не указана в координатной строке (например, -77.03647, 38.89763), то для компонента высоты предполагается значение по умолчанию 0 (приблизительно уровень моря), то есть (-77.03647, 38.89763, 0).
Формальное определение системы координат (закодировано как GML), используемое в KML, содержится в спецификации OGC KML 2.2. Это определение ссылается на компоненты EPSG CRS.
Документация
Спецификация KML 2.2 была представлена в открытом геопространственном консорциуме, чтобы обеспечить его статус открытого стандарта для всех геообъектов. В ноябре 2007 года в рамках OGC была создана новая рабочая группа для формализации стандарта. Были запрошены комментарии по предлагаемому стандарту до 4 января 2008 года, и он стал официальным стандартом OGC 14 апреля 2008 года.
Рабочая группа стандартов завершила работу над запросами на изменение KML 2.2 и включила принятые изменения. Официальный стандарт OGC KML 2.3 был опубликован 4 августа 2015 года.
Первым вариантом, при помощи которого можно открывать формат KMZ, является приложение Google Earth. Это универсальная картографическая программа от всемирно известной компании.
Все что вам придется сделать - это в запущенном ПО выбрать пункт меню «Файл» - «Открыть». На следующем этапе выбираете папку, в которой находится сам файл, выделяете его и нажимаете кнопку «Открыть».
Еще один способ - перетаскивание файла из «Проводника» в область, где отображаются карты.
Использование приложения Google SketchUp
Данная программа используется для трехмерного моделирования, а в файле с расширением KMZ могут храниться всевозможные 3D-модели объектов, необходимые для реалистичной демонстрации местности.
Для его открытия жмем Import-File. Как и в предыдущем случае, находим нужную папку, выбираем в ней нужный файл и жмем Import.
Геоинформационное ПО Global Mapper
Эта программа поддерживает большое количество картографических форматов, в том числе и упомянутый в данной статье. Благодаря приложению содержащиеся в нем данные можно не только редактировать, но и преобразовывать.
Открытие осуществляется при помощи пункта меню Open Data File(s) - File. Далее все аналогично предыдущим вариантам.
Геоинформационная платформа ArcGIS Server
Мы будем использовать ее настольную версию - ArcGIS Explorer. Файл KMZ, который тоже используют в данном приложении, помогает задавать координаты необходимого объекта.
Открыть его можно путем перетаскивания из «Проводника» Windows непосредственно в рабочую область ПО.
Создание KML в ArcGIS for Desktop – это простой процесс, состоящий из трех основных шагов:
- Создание пользователем слоев и карт в одном из приложений ArcGIS for Desktop : ArcMap , ArcGlobe и ArcScene .
- Подготовка слоев и карт к конвертации в KML путем задания данным конкретных свойств и атрибутов, в результате чего создаваемый файл KML будет максимально соответствовать вашим требованиям, удобен в использовании и хорошо оформлен.
- Создание файла KML с помощью одного из двух инструментов конвертации KML: Слой в KML или Карта в KML . Также у вас есть возможность создать KML из класса пространственных 3D-объектов типа мультипатч с помощью инструмента Мультипатч в COLLADA .
Создание слоев и карт
Как векторные, так и растровые слои , а также документы карты ArcMap (.mxd ) могут быть преобразованы в формат KML. Перед конвертацией в KML классы пространственных объектов и наборы растровых данных сначала должны быть добавлены к отображению (автоматическое создание слоя из источников данных) или преобразованы в слой с помощью инструментов Создать векторный слой или Создать растровый слой .
KML, созданный в ArcGIS for Desktop , представляет собой "снимок" слоев и карт в момент их преобразования в KML. Внешний вид слоев в ArcGIS for Desktop в основном совпадает с внешним видом KML; например, если вы хотите отображать KML с помощью определенного символа или цвета, используйте ArcMap , чтобы присвоить слою необходимые условные обозначения, после чего экспортируйте их в KML.
Подготовка слоев и карт к конвертации в KML
Слои
Много различных особенностей и свойств слоев, созданных в среде ArcGIS for Desktop , учитывается при конвертации в KML, включая видимые атрибутивные поля, прозрачность, подписи, настройки всплывающей информации и символы отображения. При установке свойств слоя и атрибутов данных необходимо убедиться, что создаваемый набор данных KML соответствует вашим требованиям и является удобным в использовании и хорошо оформленным. Кроме некоторых исключений, указанных ниже, правило конвертирования слоя или карты в KML звучит "what you see is what you get (что видишь, то и получишь)". В следующей таблице приводится ряд действий, которые вам необходимо произвести в процессе подготовки ваших слоев к их конвертации в KML.
Свойства слоя и конвертация KML
Свойство | Внешний вид | Описание |
---|---|---|
Векторный слой ArcGIS станет папкой после конвертации в формат KML. Имя слоя будет использовано в качестве названия папки KML. |
||
Описание слоя | ![]() | Описание слоя будет отображаться в качестве всплывающей информации для папки. |
Символы слоя | ![]() | Набор условных обозначений слоя будет использоваться в KML. Для работы с векторными слоями не все символы ArcGIS поддерживаются форматом KML. Что касается линейных объектов, поддерживаются только простые символы со стандартными настройками цвета и толщины символа; дополнительные эффекты, такие как штрихи, стрелки, а также многоуровневые и многослойные символы не поддерживаются. Для отображения полигональных объектов могут использоваться только простые заливки цветом и линии границ; рисунки, штриховки, градиентные заливки не поддерживаются, а к отображению линий границ полигонов применимы ограничения, установленные для отображения линейных объектов. Если для слоя требуются не только простые символы, используйте параметр Возвращает одно составное изображение в инструментах Слой в KML или Карта в KML для конвертации объектов с символами в растровое изображение, содержащее сложные символы. |
Имя объекта | ![]() | Если надписи объектов включены, в качестве источника имени будет использовано поле надписи или выражение. Если надписи объектов включены, в качестве источника имени будет использовано отображаемое поле надписи или выражение. Если ни одно из этих свойств слоя не задано, будут использованы значения из поля Name . |
Надпись объекта | ![]() | Если надписи слоя включены, в качестве источника имен для всех объектов KML будет использовано поле надписи или выражение. Примечание:Только точечные объекты будут надписаны. Для линейных и полигональных объектов могут быть созданы и надписаны центроиды для достижения эффекта надписывания. |
Фрагмент объекта | ![]() | Фрагмент объекта можно задать, изменив псевдоним поля на KMLSnippet . Значения в поле Snippet векторного слоя иначе будут использованы в качестве фрагментов для всех объектов KML. |
Всплывающее окно с информацией по объекту | ![]() | По умолчанию во всплывающем окне отображается информация из всех видимых полей слоя. Всплывающая информация для слоя KML может быть также установлена с помощью Свойств всплывающей информации HTML . Если всплывающие окна HTML отключены, значения в поле PopupInfo векторного слоя будут отображаться с использованием всплывающей информации при щелчке на объекте KML. Эти значения могут представлять собой числовые или текстовые атрибуты, а также сохраненный в текстовом поле HTML-код. |
Папки и подпапки | ![]() | Если слой имеет поле FolderPath , значения этого поля будут использоваться для создания структуры папок и подпапок KML. В этом поле, в качестве разделителя папок и подпапок используется символ прямой косой черты (/). Если слой не содержит поля FolderPath , можно задать структуру папок и подпапок с помощью составных слоев . Укажите сам составной слой в качестве входных данных для инструмента Слой в KML , чтобы получить в выходном KML его структуру. |
Высота объекта | ![]() | KML может быть создан в 3D-формате, если слой пространственных объектов поддерживает значения Z и имеет такие значения в геометрии объектов. Также, если слой имеет 3D эффекты отображения, использующиеся в ArcGlobe или ArcScene (базовые высоты или вытягивание), эти 3D эффекты будут сохранены в выходном KML. Если никакие из этих эффектов слоя не применяются, для управления 3D эффектами используются атрибуты полей. Более подробные описание приводится в следующем разделе, посвященном созданию 3D изображений. |
Создание 3D-изображений
Следующие атрибуты полей (все целочисленные) используются для управления размещением и свойствами объектов в 3D-пространстве (на поверхности или над ней).
Внимание:
KML использует систему координат WGS84 и метры в качестве единиц измерения. При создании KML предполагается, что значения высот даются в метрах.
Свойства слоя для 3D-конвертации
Поле | Значение: | Объяснение |
---|---|---|
AltMode | Значение 0 задает абсолютную высоту в KML и должно использоваться, если объекты имеют z-значения. Значение -1 позволяет размещать объекты относительно поверхности земли. |
|
Base | Любое числовое значение | Может использоваться любое числовое значение. Если значение используется в относительном размещении (AltMode=-1), оно управляет высотой объекта над поверхностью земли. Внимание:Если объекты имеют z-значение 100 и находятся в области, где высота поверхности земли выше 100, использование абсолютных значений приведет к тому, что объекты окажутся под поверхностью земли. |
Extruded | Значение 0 – без вытягивания, -1 – с эффектом вытягивания. Вытягивание объектов превращает полигоны в подобие блоков, стороны которых опускаются вниз, к поверхности земли. |
Полигоны зеленого цвета в левой части сзади являются объектами без высот, или Z-значений , красные и серые объекты впереди справа имеют значения высот. Похожие эффекты могут применяться к объектам с и без z-значений. Например, зеленые вытянутые полигоны не имеют z-значений, но у них есть следующие поля: AltMode = -1, Base = 25 и Extruded = -1. Красные вытянутые полигоны имеют z-значение 1300 и следующие поля: AltMode = 0, Base = 0 и Extruded = -1. Поскольку красные объекты имеют значения высот, их положение задано как абсолютное, и к ним применено только вытягивание.
![](https://i1.wp.com/desktop.arcgis.com/ru/arcmap/10.3/manage-data/kml/GUID-CB81B64E-3AD7-4D96-B69A-C3447F799E02-web.png)
Примечание:
Дополнительный параметр инструмента Слой в KML , Зафиксировать объекты на земле , игнорирует настройки 3D, поверхность земли будет драпирована объектами. Этот параметр удобен при создании KML из объектов с z-значениями, находящимися ниже уровня земли, для которых эффект 3D не требуется. Вы также можете использовать поле Clamped со значением -1 , чтобы получить тот же эффект, но для каждого объекта в отдельности.
Карты
Существуют также свойства карты, которые вы можете использовать для проверки, как будут выглядеть и вести себя документы, конвертированные в KML. В следующей таблице приводится ряд действий, которые вам необходимо произвести в процессе подготовки ваших карт к их конвертации в KML.
Свойства карты и конвертация KML
Параметр | Внешний вид | Описание |
---|---|---|
Имя фрейма данных карты | ![]() | Одновременно в KML можно экспортировать только один фрейм данных. Имя фрейма данных карты будет использоваться в качество имени верхнего уровня в данных KML. |
Описание фрейма данных карты | ![]() | Описание фрейма данных будет отображено с помощью всплывающей для информации о KML-объекте высшего уровня. |
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.