Tempo e animação

Sumário

Introdução

Qualquer elemento em KML pode ter dados de tempo associados a ele. Esses dados de tempo têm o efeito de restringir a visibilidade do conjunto de dados a um determinado período ou ponto no tempo. Embora o conjunto de dados completo seja obtido quando o arquivo KML é carregado, o controle deslizante de tempo na interface de usuário do Google Earth controla quais partes dos dados ficam visíveis.

O KML tem dois elementos de tempo, derivados de TimePrimitive:

  • TimeStamp - especifica um único momento no tempo para um elemento específico
  • TimeSpan - especifica um horário <begin> e um horário <end> para um elemento específico

Esses elementos também são copiados no namespace de extensão do Google, como:

  • gx:TimeStamp
  • gx:TimeSpan

Isso permite sua inclusão como filhos de elementos AbstractView. Saiba mais na seção Tempo com AbstractViews a seguir.

Quando o Google Earth abre um arquivo KML que contém um elemento com TimePrimitive, ele exibe um controle deslizante de tempo. O Google Earth seleciona automaticamente as unidades de início e de fim para o controle deslizante de tempo com base nos horários iniciais e finais encontrados nos elementos KML em um arquivo específico. Usando o controle deslizante de tempo e o botão de reprodução, o usuário pode "reproduzir" toda a sequência ou pode selecionar períodos de tempo individuais para exibição.

Para ativar o controle deslizante de tempo no Google Earth, vá para "Exibir" > "Mostrar hora" e selecione Automaticamente ou Sempre. O padrão é Automaticamente. Essas amostras supõem que a opção "Restringir o tempo à pasta selecionada atualmente" esteja DESATIVADA (padrão).

Carimbos de hora e dados de GPS

Um TimeStamp normalmente é associado a um marcador de ponto. A exibição breve do ícone do marcador em cada posição ao longo do caminho tem o efeito de animar o marcador. Essa técnica é especialmente útil para a criação de exibições de KML de dados importados de um dispositivo de rastreamento de GPS. Para obter o melhor efeito, os TimeStamps de determinado conjunto de dados devem ser obtidos em intervalos regulares.

TimeStamps são normalmente usados ​​para conjuntos de dados leves exibidos em vários locais (por exemplo, marcadores se movendo ao longo de um caminho). Nesses casos, frequentemente vários elementos ficam na visualização ao mesmo tempo em que são exibidos em diferentes locais e horários. O controle deslizante de tempo da interface de usuário do Google Earth inclui uma janela de tempo que seleciona uma "fatia" do controle deslizante de tempo e muda do início para o final do período de tempo.

Usando essa técnica, a German European School Singapore marcou um tubarão-baleia, carinhosamente chamado "Schroeder", com um dispositivo GPS e rastreou o progresso do tubarão pelo Oceano Índico rumo ao continente da África durante meses. Os visualizadores interessados podiam ver o progresso de Schroeder usando o Google Earth para visualizar os arquivos KMZ postados no website do grupo de pesquisa.

Nesse arquivo KML, o caminho vermelho mostra as viagens de Schroeder até perder o contato com a equipe. Os pontos amarelos (ícones de marcador) são animados ao longo desse caminho de acordo com a linha de tempo exibida na parte superior da tela.  As setas azuis fazem parte de uma superposição de solo que mostra a direção dos padrões de onda. Os pesquisadores acreditam que a mudança súbita de direção de Schroeder foi afetada pelos padrões de onda, que direcionaram o fluxo de plâncton, sua principal fonte de nutrição.

Nesse exemplo, os marcadores de ponto contêm o elemento <TimeStamp>. A LineString vermelha e o GroundOverlay azul não têm elementos de tempo associados (estão sempre presentes).

Ícone de KML whale_shark.kml (usado com permissão da Equipe Seeadlerpost, German European School Singapore)

Intervalos de tempo

Para exibir polígonos e superposições de imagem que fazem a transição instantânea de um para o próximo, é possível especificar o início e o fim de um período de tempo, usando o objeto TimeSpan. Essa técnica é normalmente usada para mostrar as alterações em polígonos e imagens, como superposições de solo, por exemplo, para mostrar o recuo das geleiras, o alcance das cinzas vulcânicas e a extensão dos esforços de exploração florestal ao longo dos anos.

TimeSpans são usados em casos em que apenas um elemento esteja sendo visualizado em determinado momento, e você queira uma transição instantânea de uma imagem para a seguinte. Certifique-se de que os TimeSpans sejam contíguos e não se sobreponham. Para conjuntos de dados com TimeSpans, o controle deslizante de tempo da interface de usuário do Google Earth inclui um ponteiro que se movimenta suavemente pelo controle deslizante do início até o final do período de tempo. A transição de um elemento para o seguinte é uma alteração instantânea.

Brian Flood criou uma apresentação de KML interessante mostrando o crescimento dos Estados Unidos à medida que os estados foram adicionados à união. O arquivo KML mostrado aqui usa objetos TimeSpan com somente um ponto inicial, de modo que um estado (polígono) permaneça na exibição após ser adicionado.

Ícone de KML us_states.kml (usado com permissão de Brian Flood)

Como animar um modelo

Outro exemplo do uso do elemento TimeSpan é a animação da London Eye, criada por James Stafford. Essa exibição usa um modelo da roda gigante London Eye. O modelo é referenciado em uma série de marcadores, cada um usando uma rotação incremental diferente para o modelo e um TimeSpan que indica por quanto tempo esse marcador deve ser exibido.

Ícone de KML london_eye.kmz (usado com permissão de James Stafford)

Como especificar o tempo

O elemento dateTime baseia-se no horário do Esquema XML (consulte XML Schema Part 2: Datatypes Second Edition). O valor pode ser expresso como aaaa-mm-ddThh:mm:sszzzzzz, em que T é o separador entre a data e a hora, e o fuso horário é Z (para UTC) ou zzzzzz,, que representa ±hh:mm em relação ao UTC. Além disso, o valor pode ser expresso somente como uma data. Consulte o elemento <TimeStamp> na Referência de KML 2.2 para obter exemplos.

Tempo com AbstractViews

O Google Earth 5.0 suporta o namespace de extensão do Google, que inclui elementos <gx:TimeSpan> e <gx:TimeStamp>. Eles são cópias dos elementos <TimeSpan> e <TimeStamp> e podem ser usados para adicionar informações de tempo aos elementos <LookAt> e <Camera>.

A inclusão de informações de tempo no AbstractViews afeta os elementos exibidos, a luz do sol e as imagens históricas. O uso de <gx:TimeSpan> ou <gx:TimeStamp> em um AbstractView permite voar até um local específico no espaço e tempo no Google Earth.

Assim que um horário tiver sido especificado, o Google Earth continuará usando esse horário ao decidir quais imagens, elementos e luz do sol devem ser exibidos, até que outro horário seja especificado. O KML não suporta o conceito de "agora"; portanto, para voltar ao horário atual no Google Earth, especifique um <when>2999</when> (ou qualquer outra data no futuro) em <gx:TimeStamp>.

Ao usar elementos no namespace de extensão do Google, primeiro você deve adicionar o URI do namespace correto ao elemento de abertura <kml> em seu arquivo KML:

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

O namespace de extensão com o prefixo gx pode não ser suportado por todos os navegadores geográficos. Ele é suportado pelo Google Earth 5.0.

Exemplo

Ícone de KML abstractviews_timeprimitive_example.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

  <Document>
    <name>Views with Time</name>
    <open>1</open>
    <description>
      In Google Earth, enable historical imagery and sunlight,
      then click on each placemark to fly to that point in time.
    </description>

    <Placemark>
      <name>Sutro Baths in 1946</name>
      <Camera>
        <gx:TimeStamp>
          <when>1946-07-29T05:00:00-08:00</when>
        </gx:TimeStamp>
        <longitude>-122.518172</longitude>
        <latitude>37.778036</latitude>
        <altitude>221.0</altitude>
        <heading>70.0</heading>
        <tilt>75.0</tilt>
      </Camera>
    </Placemark>

    <Placemark>
      <name>Palace of Fine Arts in 2002</name>
      <Camera>
        <gx:TimeStamp>
          <when>2002-07-09T19:00:00-08:00</when>
        </gx:TimeStamp>
        <longitude>-122.444633</longitude>
        <latitude>37.801899</latitude>
        <altitude>139.629438</altitude>
        <heading>-70.0</heading>
        <tilt>75</tilt>
      </Camera>
    </Placemark>

  </Document>
</kml>

Exemplo: como mostrar o movimento de um ponto ao longo de um caminho

O exemplo a seguir mostra como usar um elemento TimeStamp para mostrar o movimento de um marcador ao longo de um caminho. Os TimeStamps são rigidamente testados, de modo que o ícone de marcador seja animado ao longo do caminho quando o arquivo KML é reproduzido.

Ícone de KML TimeStamp_example.kml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Points with TimeStamps</name>
<Style id="paddle-a">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/A.png</href>
</Icon>
<hotSpot x="32" y="1" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="paddle-b">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/B.png</href>
</Icon>
<hotSpot x="32" y="1" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="hiker-icon">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/ms/icons/hiker.png</href>
</Icon>
<hotSpot x="0" y=".5" xunits="fraction" yunits="fraction"/>
</IconStyle>
</Style>
<Style id="check-hide-children">
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<styleUrl>#check-hide-children</styleUrl>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:02Z</when>
</TimeStamp>
<styleUrl>#paddle-a</styleUrl>
<Point>
<coordinates>-122.536226,37.86047,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:20Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536422,37.860303,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:43Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536688,37.860072,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:04Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536923,37.859855,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:24Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537116,37.85961000000001,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:46Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537298,37.859336,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:07Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537469,37.85907,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:27Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537635,37.858822,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:51Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537848,37.858526,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:11Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538044,37.858288,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:33Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538307,37.858064,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:56Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538601,37.857837,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:09:19Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.53887,37.857604,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:09:45Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.539052,37.857262,0</coordinates>
</Point>
</Placemark> . . .
</Document>
</kml>

Como ocultar os elementos filhos da animação

Geralmente, em exemplos como este, é útil incluir um elemento ListStyle no documento e especificar checkHideChildren de modo que os marcadores individuais não apareçam na visualização de lista. O código a seguir inclui esse elemento adicional. Embora o documento defina o elemento Style, o documento também precisa fazer referência a ListStyle em um elemento <styleUrl>.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name> . . .
<Style id="check-hide-children"> <!-- define the style for the Document -->
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<styleUrl>#check-hide-children</styleUrl> <!-- add the style to the Document -->
<Placemark>
<TimeStamp>
<when>2007-01-12</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536422,37.860303,0</coordinates>
</Point>
</Placemark> . . .
</Document>
</kml>

Exemplo: como animar superposições de solo

Para animar polígonos e superposições de solo, você normalmente usará um elemento TimeSpan, como mostra o exemplo a seguir. Esse arquivo KML contém uma imagem de GroundOverlay para cada mês, de modo que você possa reproduzir a animação e observar a mudança da paisagem com as estações. Veja um trecho de código mostrando os primeiros três meses do ano:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <!-- TimeSpan is recommended for GroundOverlays -->
<Folder>
<name>BMNG-12months</name>
<GroundOverlay>
<name>Blue Marble - Jan</name>
<TimeSpan>
<begin>2004-01</begin>
<end>2004-02</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Jan.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>Blue Marble - Feb</name>
<TimeSpan>
<begin>2004-02</begin>
<end>2004-03</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Feb.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>Blue Marble - Mar</name>
<TimeSpan>
<begin>2004-03</begin>
<end>2004-04</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Mar.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay> . . . </Folder> </kml>
Ícone de KML TimeSpan_example.kml (dados cortesia da NASA)

Veja uma captura de tela desse exemplo:

Voltar ao início