Vencimiento

De forma predeterminada, los datos se cargan una sola vez en Google Earth mediante elementos de enlace (Link). Para evitar que los datos KML se queden obsoletos, puedes especificar un modo de actualización (refreshMode) del elemento de vencimiento (onExpire) para cualquier dato cargado a través de un elemento de referencia de hipertexto (<href>), tanto en un elemento de enlace (Link) como en un icono (Icon). De forma predeterminada, los encabezados de vencimiento HTTP especifican la hora de vencimiento. Ahora, también puedes especificar una hora de vencimiento en un elemento de control de enlaces de red (NetworkLinkControl) KML. La hora se expresa como un valor de fecha y hora (dateTime) XML. Consulta la segunda parte del esquema XML sobre los tipos de datos, segunda edición. Si se especifican horas de vencimiento para los encabezados HTTP y KML, prevalecerá la hora de vencimiento de KML.

Ejemplo 1: vencimiento mediante la hora de vencimiento del servidor HTTP

Este ejemplo tiene un fin meramente informativo. En él aparece una superposición de suelo (GroundOverlay) con un elemento Icon que establece un elemento refreshMode en el valor onExpire. Como no se ha establecido una hora de vencimiento KML, este ejemplo utiliza la hora de vencimiento del servidor HTTP.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>refreshMode onExpire</name>
<Snippet maxLines="10">
La imagen se vuelve a cargar automáticamente según el
vencimiento del servidor http.
</Snippet>
<GroundOverlay>
<Icon>
<href>http://www.someserver.com/image.jpeg</href>
<refreshMode>onExpire</refreshMode>
</Icon>
<LatLonBox>
<!-- from edit session in earth -->
<!-- The roof of a building in the Presidio -->
<north>37.80385180177469</north>
<east>-122.4558710620651</east>
<south>37.80337403503347</south>
<west>-122.4564295653771</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>

Ejemplo 2: Ejemplo de uso de la hora de vencimiento KML

En el siguiente ejemplo aparece una marca de posición (Placemark) en unas coordenadas elegidas de forma aleatoria. Este ejemplo incluye un enlace con un elemento refreshMode establecido en onExpire. En este caso, la fecha y la hora de vencimiento se especifican (en una secuencia de comandos Python), mediante el nuevo elemento KML <expires>. Esta hora de vencimiento KML prevalece sobre cualquier hora que se pueda haber especificado en los encabezados HTTP.

Este es un ejemplo de enlace de red (NetworkLinK) KML que incluye un enlace (Link) con los elementos <href> y <refreshMode>.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<NetworkLink>
<Link>
<href>http://dev.someserver.com/cgi-bin/expires.py</href>
<refreshMode>onExpire</refreshMode>
</Link>
</NetworkLink>
</Document>
</kml>

Esta es una secuencia de comandos Python que establece una hora de vencimiento de [ahora + 11 segundos] y actualiza las coordenadas del elemento Placemark:

#!/usr/bin/python

import random
import time
lat = random.random() * 180. - 90.
lon = random.random() * 360. - 180.
now = time.time()
future = time.gmtime(now + 11)
y = future[0]
mo = future[1]
d = future[2]
h = future[3]
mi = future[4]
s = future[5]
iso8601 = '%04d-%02d-%02dT%02d:%02d:%02dZ' % (y,mo,d,h,mi,s)
print 'Content-type: application/vnd.google-earth.kml+xml'
print
print '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'
print '<kml xmlns=\"http://www.opengis.net/kml/2.2\">'
# must be child of <kml>
print '<NetworkLinkControl>'
print '<expires>%s</expires>' % iso8601
print '</NetworkLinkControl>'
print '<Placemark>'
print '<name>placemark expires %s</name>' % iso8601
print '<Point>'
print '<coordinates>%f,%f,0</coordinates>' % (lon,lat)
print '</Point>'
print '</Placemark>'
print '</kml>'

Volver al principio