А АWednesday, 5 October 2011

Домашняя картография

   Буквально вчера была заметка про возможность привязки панорамы к картам Гугла или Яндекса. Т.е. сказал, что можно, но не показал как. А читатель спрашивает ! Оказывается не простое это дело. Вот, к примеру, Google для этого разработал свой язык – KML.

   KML (Keyhole Markup Language — язык разметки Keyhole) – это формат файлов, который используется для отображения географических данных в программах Google Планета Земля и Карты Google. KML использует основанную на тегах структуру с вложенными элементами и атрибутами и создан на основе стандарта XML. Для создания файлов KML можно использовать программу Google Планета Земля (Google Earth), редактор XML или обычный текстовый редактор. Файлы KML и связанные с ними изображения (при наличии) можно сжимать с помощью формата ZIP в архивы KMZ.
   С помощью файлов KML можно:
• устанавливать различные значки и делать подписи для обозначения мест на поверхности Земли,
• создавать различные ракурсы для выбранных объектов, изменяя положение камеры,
• использовать различные накладываемые изображения,
• определять стили для настройки отображения объекта, применять код HTML для создания гиперссылок и встроенных изображений,
• использовать папки для иерархической группировки элементов,
• динамически получать и обновлять файлы KML из удаленных или локальных узлов сети,
• получать данные KML в соответствии с изменениями в средстве трехмерного просмотра,
• отображать текстурные трехмерные объекты COLLADA.

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

   Первая попытка изучения KML на чужом примере было в моей заметке "Летайте самолетами Аэрогугла".
   Изучение материала показало, что накладываемые изображения экрана нельзя создавать непосредственно в программе Google Планета Земля, поэтому процесс их создания сложнее по сравнению с накладываемыми изображениями поверхности Земли.
Для одного изображения используется следующий код KML:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <ScreenOverlay>
    <name>Absolute Positioning: Top left</name>
    <Icon>
      <href>http://code.google.com/apis/kml/documentation/top_left.jpg</href>
    </Icon>
    <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/>
    <screenXY x="0" y="1" xunits="fraction" yunits="fraction"/>
    <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>

    <size x="0" y="0" xunits="fraction" yunits="fraction"/>
  </ScreenOverlay>
</kml>
   Расположение контролируется путем связывания точки на изображении, указанной с помощью , с точкой на экране, заданной с помощью . В этом случае верхний левый угол изображения (0,1) был совмещен с такой же точкой на экране.

   Однако, как оказалось, это совершенно не предел, и можно через код KML описать серию изображений, а результат потом превратить в… анимацию !
Именно так создается «история изображений» в Гугл.Земля.
Фрагмент кода:
<folder>
<name>Bell 407</name>
<open>1</open>
<description>Done by Nyukers</description>
<screenoverlay>
<name>2</name>
<timespan>
<begin>2009-12-31T12:00:00Z</begin>
<end>2009-12-31T12:00:01Z</end></timespan>
<icon>
<href>files/11.png</href>
<viewboundscale>0.75</viewboundscale></icon>
<overlayxy x="0.5" xunits="fraction" y="0.4" yunits="fraction"></overlayxy>
<screenxy x="0.5" xunits="fraction" y="0.4" yunits="fraction"></screenxy>
<rotationxy x="0.5" xunits="fraction" y="0.5" yunits="fraction"></rotationxy>
<size x="800" xunits="pixels" y="530" yunits="pixels"></size></screenoverlay>
<screenoverlay>
<name>3</name>
<timespan>
<begin>2009-12-31T12:00:02Z</begin>
<end>2009-12-31T12:00:03Z</end></timespan>
<icon>
<href>files/12.png</href>
<viewboundscale>0.75</viewboundscale></icon>
<overlayxy x="0.5" xunits="fraction" y="0.4" yunits="fraction"></overlayxy>
<screenxy x="0.5" xunits="fraction" y="0.4" yunits="fraction"></screenxy>
<rotationxy x="0.5" xunits="fraction" y="0.5" yunits="fraction"></rotationxy>
<size x="800" xunits="pixels" y="530" yunits="pixels"></size></screenoverlay>
...
<draworder>99</draworder>
</folder>

А вот живой пример что из этого может получится


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

Дерзайте !)


No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное