15 февраля 2009 в 13:37

KML — работаем профессионально. Введение.

KML — язык управления геоданными, являющийся основным для Google Earth, также поддерживается такими популярными средами как MS Virtual Earth, ArcGIS, Microstation, Autodesk… Список постоянно пополняется, KML является также одним из OGC стандартов www.opengeospatial.org/standards/kml/
Ссылки
code.google.com/intl/ru/apis/kml/ — домашняя страница руководства по KML
ru.wikipedia.org/wiki/KML — Википедия
www.eastgeology.com/neogeografia — наша коллекция KML

Методы создания и редактирования KML
  • Создание внутренними средствами Google Earth
  • Экспорт из ГИС как внутренними средствами, так и с помощью специальных расширений
  • Генерация средствами php, python и другими языками программирования
  • Генерация средствами spreadsheets, pipes, xslt и другими средствами трансформации данных
  • Прямое редактирование текста

Прямое редактирование текста



Описанию расширений и возможностей различных программных средств для генерации KML посвящено довольно много сайтов и публикаций, а о профессиональной работе непосредственно с KML текстом информация отсутствует. Поэтому начнем с редактирования.
Требуемый KML зачастую невозможно создать без прямого редактирования его текста в редакторе. Причин этому несколько:
  • Постоянно обновляются теги KML
  • Отсутствуют пользовательские средства, в полной мере поддерживающие все средства KML при создании и редактировании.

Существующие средства, как правило, ориентированы на упрощение реализации конкретных задач. Несмотря на наличие как стандартного программного обеспечения, так и собственного для работы с KML applications.geoblogspot.com/, примерно половину времени работы с KML провожу в обычном текстовом редакторе (использую Notepad++).
Одна из основных возможностей GE — копирование и вставка объектов (Ctrl+C, Ctrl+V — далее CtrlCV).
Создаем или открываем KML в GE, выделяем его в списке Places, делаем CtrlCV и видим его дубликат.
Теперь открываем редактор, делаем Ctrl+V и видим текст KML в редакторе. Неважно, работаем мы с KML или KMZ форматом, внутренним форматом GE является KML. KMZ — это архивированный ZIP архив KML и распаковывается при открытии в GE автоматически. Вы можете также распаковать (unzip) KMZ файл вручную и убедиться в этом самостоятельно.

Пример — добавление даты события (тегов времени).

Открываем GE
Копируем следующий текст KML в буфер обмена и вставляем в My Places
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name>
<Placemark>
<Point>
<coordinates>57.05104837705052,57.62926121886946,0</coordinates>
</Point>
</Placemark>
<Placemark>
<Point>
<coordinates>57.51270742269408,57.84105183908832,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

На глобусе должны появиться две точки. Теперь вставляем штамп времени. Для этого вставляем текст KML в редактор и добавляем необходимые теги. Результат примерно такой
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name>
<Placemark>
<TimeStamp> <!-- Открываем описание даты события -->
<when>2007-01-12</when> <!-- Дата события -->
</TimeStamp> <!-- Закрываем описание даты события -->
<Point>
<coordinates>57.05104837705052,57.62926121886946,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp><when>2008-01-12</when></TimeStamp> <!-- Дата другого события -->
<Point>
<coordinates>57.51270742269408,57.84105183908832,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

Копируем полученный текст в буфер обмена и в GE. Получаем KML, который содержит даты событий. Шкала времени должна появиться автоматически, и теперь с ее помощью можно управлять видимостью событий.
Результат можно сохранить локально или опубликовать в internet как KMZ файл.

Вы можете сразу загрузить в GE приведенные примеры с небольшими изменениями:
Без временной шкалы — dl.getdropbox.com/u/470962/kml/learing/Points%20without%20of%20TimeStamps.kmz — внес небольшие изменения в стили, чтобы примеры отличались друг от друга
С добавлением даты событий dl.getdropbox.com/u/470962/kml/learing/Points%20with%20TimeStamps.kmz

Кросспост в моем блоге
+4
9326
15
Valery35 34,5

Комментарии (14)

–2
pravdorub, #
Какой смысл статьи? Чтобы пользователи хабра за бесплатно начали писать для гугловских миллиардеров модули на KML? Это ж не гугл придумал KML! Че за злостный пиар?
+2
magik, #
Ну Гугл купил тех кто его придумал (Keyhole, Inc)
+1
iliar, #
а ни кто не заставляет отправлять написанные файлы отправлять в гугл (вот щас набегут параноики которые скажут что Google Earth все созданне, просмотренные пометки отправляет гуглу). Их запросто можно использовать для своих целей.
0
Valery35, #
1 KML — один из действующих стандартов
2 Вы себе противоречите, кого же я пиарю (извиняюсь, злостно пиярю!) — google или не google?
3 KML не предназначен для создания модулей
0
magik, #
Спасибо, за статью. Надеюсь вы не остановитесь на этом и опишите более сложные структуры )
Инфы по KML на русском почти нет (
0
Valery35, #
Постараюсь :)
Здесь главная мысль — что можно просто выделить и скопировать KML прямо со страницы и вставить в GE или добавить в редакторе в свой KML как фрагмент.
Это методический момент — как можно изучать KML и самый нижний уровень — здесь нам доступны все его возможности.
Сам в основном так его и изучал. Брал понравившийся KML, смотрел его в редакторе, вставлял разные элементы кода в GE и смотрел результат.
0
magik, #
Да, я тоже так свои .kml файлы делаю, благо они не особо сложные ) Правда в таком способе есть и подводный камень — не все kml файлы одинаково полезны, то есть бывает что написаны они довольно страшно )
Я не знал что копипастить прямо в GE, обычно просто открывал скачанные kml файлы в текстовом редакторе )
0
Valery35, #
Вот-вот тут мы как раз не задумываемся о том, что KML (KMZ) в итоге файл, пока не доведем его до требуемой кондиции — для нас это просто строчка в My places, пока не закончим. И еще легко можем переключаться на отдельные элементы KML и доводить уже их.
+1
magik, #
Мне кажется что именно эта мысль у вас в посте недостаточно подчёркнута… Из параграфа про копирование и вставку это не понятно. Я бы его немного переделал, чтобы было ясно, что именно в нём содержиться основная мысль — возможность онлайн редактирования, с мгновенной проверкой результата в GE (я правильно понимаю?).
0
Valery35, #
Да, спасибо. Постараюсь более удачно озвучить.
+3
iliar, #
Недавно разбирался в формате KML. И как раз ставилась цель делать пометки на карте с превязкой ко времени. И на мой взгляд, весь синтиксис интуитивно понятен из примера в мануале гугла даже не читая текста. Причем пример этот гораздо более наглядный чем в этой статье.

Поэтому особого смысла в данной статье не вижу. И считаю что она не уместна на хабре.
–2
Valery35, #
Пример со временем был взят как частный.
Основное что здесь — ручная работа с KML и классификация методов создания.
+1
iliar, #
На экране точка. ты запускаешь анимацию. точна исчезает. пользователь ждет… ждет… и еще ждет… и секунд через 20 появляется еще точка… причем так как прошло довольно много времени пользователь уже забыл где была точка.

Имхо не очень грамотный пример.
–2
Valery35, #
Это похоже у вас еще свои файлы включены с временными тегами. Если нет, то у себя еще посмотрю — у меня секунд 5 между ними.
Вообще по формату времени потом отдельно хотел главу сделать — у меня и GPS треки есть (через секунду) и палеогеография — миллиарды лет.

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