Tiempo y animación

Índice

Introducción

En KML, cualquier elemento de recurso (Feature) puede tener asociados datos de tiempo. Estos datos de tiempo restringen la visibilidad del conjunto de datos a un determinado punto o período de tiempo. Aunque al cargar el archivo KML se extrae el conjunto completo de datos, el deslizador de tiempo de la interfaz del usuario de Google Earth controla qué partes de los datos son visibles.

KML tiene dos elementos derivados del elemento original de tiempo (TimePrimitive).

  • TimeStamp (marca de tiempo): especifica un único momento en el tiempo para un elemento Feature determinado.
  • TimeSpan (intervalo de tiempo): especifica un atributo de inicio <begin> y otro de final <end> para un elemento Feature determinado.

Estos elementos también se copian en el espacio de nombres de extensiones de Google, por ejemplo:

  • gx:TimeStamp
  • gx:TimeSpan

Esto permite su inclusión como elementos secundarios de elementos de vista abstracta (AbstractView). Para obtener más información, consulta la sección sobre El tiempo con vistas abstractas que aparece a continuación.

Cuando Google Earth abre un archivo KML que contiene un elemento Feature con un elemento TimePrimitive, muestra un deslizador de tiempo (Google Earth selecciona automáticamente las unidades de inicio y final del deslizador de tiempo en base a los datos de tiempo más antiguos y más recientes que se encuentran en los recursos KML de un archivo concreto). Mediante el deslizador y el botón de reproducción, el usuario puede "reproducir" la secuencia completa o puede seleccionar períodos de tiempo específicos para mostrarlos.

Para habilitar el deslizador de tiempo en Google Earth, accede a Ver > Mostrar controles de tiempo y, a continuación, selecciona Automáticamente o Siempre (el valor predeterminado es Automáticamente). En estos ejemplos, se supone que la opción para restringir el tiempo a la carpeta seleccionada actualmente está desactivada (valor predeterminado).

Marcas de tiempo y datos GPS

Generalmente, un elemento TimeStamp se asocia a la marca de posición de un punto. Si se muestra brevemente el icono de marca de posición en cada posición a lo largo de la ruta, la marca de posición se anima. Esta técnica resulta especialmente útil a la hora de crear visualizaciones KML de datos importados de un dispositivo de seguimiento GPS. Para conseguir el mejor efecto, los elementos TimeStamp de un conjunto de datos determinado se deberían tomarse en intervalos regulares.

Los elementos TimeStamp se suelen utilizar para conjuntos de datos de tamaño reducido que se muestran en varias ubicaciones como, por ejemplo, las marcas de posición de una ruta. En esos casos, es frecuente que se visualicen varios elementos Feature al mismo tiempo ya que se muestran en distintas ubicaciones y en momentos diferentes. El deslizador de tiempo de la interfaz de usuario de Google Earth incluye una ventana de tiempo que selecciona parte del deslizador de tiempo y se desplaza desde el principio hasta el final de ese período.

Mediante esta técnica, el Colegio alemán europeo de Singapur etiquetó un tiburón ballena, al que llamaban cariñosamente "Schroeder", gracias a un dispositivo GPS y después siguieron su trayectoria por el océano Índico hacia el continente africano durante meses. Los usuarios interesados pudieron ver la trayectoria de Schroeder valiéndose de Google Earth para ver los archivos KMZ publicados en el sitio web del grupo de investigadores.

En este archivo KML, la ruta roja muestra los viajes de Schroeder hasta que dejó de tener contacto con el equipo. Los puntos amarillos (iconos de marcas de posición) se animan a lo largo de esta ruta según la línea de tiempo que se muestra en la parte superior de la pantalla. Las flechas azules son parte de la superposición de suelo que muestra la dirección de los patrones de oleaje. Los investigadores creen que los patrones de oleaje causaron el repentino cambio de dirección de Schroeder, puesto que estos determinan el flujo de plancton, la principal fuente de alimentación del animal.

En este ejemplo, las marcas de posición de punto contienen el elemento <TimeStamp>. La cadena de líneas (LineString) roja y la superposición de suelo (GroundOverlay) azul no tienen elementos de tiempo asociados (siempre son actuales).

Icono de KML whale_shark.kml (utilizado con permiso del equipo de Seeadlerpost, del Colegio alemán europeo de Singapur)

Intervalos de tiempo

Para visualizar superposiciones de imágenes y polígonos que pasen de una a otra al instante, puedes especificar el inicio y el final de un período de tiempo mediante el objeto TimeSpan. Esta técnica se utiliza normalmente para mostrar los cambios en polígonos e imágenes, como en las superposiciones de suelo, por ejemplo, para mostrar cómo se reducen los glaciares, cómo se esparce la ceniza volcánica y la extensión de las talas a lo largo de los años.

Los elementos TimeSpan se utilizan en casos en los que se está visualizando solo un elemento Feature en un tiempo determinado y se quiere que las imágenes pasen de unas a otras al instante. Asegúrate de que los intervalos de tiempo sean contiguos y no se superpongan. El deslizador de tiempo de la interfaz de usuario de Google Earth incluye para los datos con elementos TimeSpan un puntero que se mueve fácilmente sobre él desde el inicio hasta el final del período. El paso de un recurso al siguiente es un cambio instantáneo.

Brian Flood creó una interesante presentación KML en la que se mostraba el crecimiento de Estados Unidos a medida que se incorporaban nuevos estados. El archivo KML que se muestra a continuación utiliza objetos TimeSpan solo con un punto de inicio para que así el estado (elemento Polygon) permanezca en la visualización una vez que se haya añadido.

Icono de KML us_states.kml (utilizado con permiso de Brian Flood)

Cómo animar un modelo

Otro ejemplo de uso del elemento TimeSpan es la animación del London Eye, creada por James Stafford. Esta visualización utiliza un modelo de la noria gigante conocida como London Eye. A este modelo se hace referencia en una serie de elementos Placemark y cada uno de ellos utiliza una rotación incremental diferente para el modelo y un elemento TimeSpan que indica el tiempo de visualización de dicho elemento Placemark.

Icono de KML london_eye.kmz (utilizado con permiso de James Stafford)

Cómo especificar el tiempo

El valor del elemento de fecha y hora dateTime se basa en el tiempo del esquema XML (consulta la segunda parte del esquema XML sobre los tipos de datos, segunda edición). El valor se puede expresar como aaaa-mm-ddThh:mm:sszzzzzz, donde T es el separador entre la fecha y la hora. La zona horaria es Z (para UTC) o zzzzzz, que representa ±hh:mm con respecto a UTC. Este valor también se puede expresar simplemente como una fecha. Consulta el elemento <TimeStamp> en la Referencia de KML 2.2 para ver ejemplos.

El tiempo con vistas abstractas

Google Earth 5.0 admite el espacio de nombres de la extensión de Google, que incluye los elementos <gx:TimeSpan> y <gx:TimeStamp>. Estas son copias de los elementos <TimeSpan> y <TimeStamp> y se pueden utilizar para añadir información de tiempo a los elementos <LookAt> y <Camera>.

La inclusión de información de tiempo en vistas abstractas (AbstractViews) afecta a los recursos que se están mostrando, a la luz solar y a las imágenes históricas. En un elemento AbstractView, puedes utilizar <gx:TimeSpan> o <gx:TimeStamp> para volar hasta una ubicación específica en el espacio y el tiempo en Google Earth.

Una vez se haya especificado el tiempo, Google Earth sigue utilizando ese tiempo al decidir qué imágenes, recursos y luz solar debe mostrar hasta que se especifique otro tiempo. KML no admite el concepto de "ahora", así que para regresar al tiempo actual en Google Earth, deberías especificar un elemento <when>2999</when> (o cualquier otra fecha futura) en el elemento <gx:TimeStamp>.

Cuando utilices elementos en el espacio de nombres de extensiones de Google, primero debes añadir el URI de espacio de nombres correcto al elemento <kml> de inicio en tu archivo KML:

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

Ten en cuenta que es posible que el espacio de nombres de extensiones con el prefijo gx no sea compatible con todos los navegadores geográficos, pero sí es compatible con Google Earth 5.0.

Ejemplo

Icono 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>

Ejemplo: cómo mostrar el movimiento de un punto a lo largo de una ruta

El siguiente ejemplo muestra el uso de un elemento TimeStamp para mostrar el movimiento de una marca de posición a lo largo de una ruta. Los elementos TimeStamp se ejemplifican específicamente para que el icono de la marca de posición se anime a lo largo de la ruta al reproducir el archivo KML.

Icono 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>

Cómo ocultar los elementos secundarios de la animación

Normalmente, en ejemplos de este tipo, es útil incluir un elemento de estilo de lista (ListStyle) en el documento y especificar la opción checkHideChildren para que las marcas de posición individuales no aparezcan en la visualización de la lista. El siguiente código incluye este elemento adicional. Ten en cuenta que aunque el documento define el elemento de estilo (Style), también necesita hacer referencia a ListStyle en un 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>

Ejemplo: cómo animar las superposiciones de suelo

Para animar polígonos y superposiciones de suelo, generalmente se utiliza un elemento de intervalo TimeSpan, tal como se muestra en el siguiente ejemplo. Este archivo KML contiene una imagen GroundOverlay para cada mes que permite reproducir la animación y ver cómo cambia el paisaje con el cambio de estación. A continuación se muestra un fragmento de código que muestra los tres primeros meses del año:

<?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>
Icono de KML TimeSpan_example.kml (datos cedidos por la NASA)

Esta es una captura de pantalla del ejemplo:

Volver al principio