Sommario
- Introduzione
- Timestamp e dati GPS
- Intervalli di tempo
- Animazione di un modello
- Come specificare l'ora
- Tempo con AbstractViews
- Esempio: mostrare il movimento di un punto lungo un percorso
- Nascondere gli elementi secondari dell'animazione
- Esempio: animazione di overlay terrestri
Introduzione
A qualsiasi funzionalità in KML possono essere associati dati temporali. Questi dati hanno lo scopo di limitare la visibilità del set di dati a un determinato periodo di tempo o a un determinato momento. Sebbene il set di dati completo venga recuperato al caricamento del file KML, il dispositivo di scorrimento temporale nell'interfaccia di Google Earth controlla quali parti dei dati sono visibili.
Il file KML contiene due elementi temporali derivati da TimePrimitive:
- TimeStamp: specifica un momento specifico per una determinata funzionalità.
- TimeSpan: specifica un'ora <begin> e <end> per una determinata funzione
Questi elementi vengono copiati anche nello spazio dei nomi delle estensioni Google, come segue:
- gx:TimeStamp
- gx:TimeSpan
In questo modo possono essere inclusi come elementi secondari di AbstractView. Scopri di più nella sezione Time with AbstractViews di seguito.
Quando Google Earth apre un file KML contenente una funzionalità con un elemento TimePrimitive, mostra un dispositivo di scorrimento temporale. Google Earth seleziona automaticamente le unità iniziale e finale del dispositivo di scorrimento temporale in base all'ora più recente e in quella più recente delle funzionalità KML presenti in un determinato file. Utilizzando il dispositivo di scorrimento e il pulsante di riproduzione, l'utente può "riprodurre" l'intera sequenza o selezionare singoli periodi di tempo per la visualizzazione.
Per attivare il dispositivo di scorrimento temporale di Google Earth, vai a Visualizza > Mostra ora e seleziona Automaticamente o Sempre. L'impostazione predefinita è Automaticamente. Questi esempi presuppongono che l'opzione "Limita il tempo alla cartella attualmente selezionata" sia disattivata (impostazione predefinita).
Timestamp e dati GPS
Solitamente, un TimeStamp è associato a un segnaposto di un punto. La visualizzazione breve dell'icona del segnaposto in ciascuna posizione lungo un percorso ha l'effetto di animare il segnaposto. Questa tecnica è particolarmente utile nella creazione di visualizzazioni KML dei dati importati da un dispositivo di monitoraggio GPS. Per un risultato ottimale, è consigliabile utilizzare i valori TimeStamp di un determinato set di dati a intervalli regolari.
Generalmente, vengono utilizzate per i set di dati leggeri mostrati in più posizioni (ad esempio, i segnaposto che si muovono lungo un percorso). In questi casi, spesso vengono visualizzate contemporaneamente più funzionalità e contemporaneamente in posizioni diverse e in momenti diversi. Il dispositivo di scorrimento dell'interfaccia utente di Google Earth include una finestra temporale che seleziona una "sezione" del dispositivo di scorrimento dell'ora, che si sposta dall'inizio alla fine del periodo di tempo.
Utilizzando questa tecnica, la Scuola europea tedesca di Singapore ha taggato uno squalo balena, affettuosamente chiamato "Schroeder", con un dispositivo GPS, per poi monitorare i progressi dello squalo nell'Oceano Indiano verso il continente africano nel corso di diversi mesi. Gli spettatori interessati potevano vedere i progressi di Schroeder utilizzando Google Earth in modo da vedere i file YAML pubblicati sul sito web del gruppo di ricerca.
In questo file KML, il percorso rosso mostra i viaggi di Schroeder finché non ha perso il contatto con il team. I punti gialli (icone segnaposto) si animano lungo questo percorso in base alla sequenza temporale mostrata nella parte superiore dello schermo. Le frecce blu fanno parte di un overlay del suolo che mostra la direzione dei pattern delle onde. I ricercatori ritengono che l'improvviso cambiamento di direzione di Schroeder sia stato influenzato dagli schemi delle onde, che hanno indirizzato il flusso del plancton che era la sua principale fonte di alimentazione.
In questo esempio, i segnaposto di punti contengono l'elemento <TimeStamp>. Alla linea LineString rossa e a Ground Overlay blu non sono associati elementi temporali (sono sempre presenti).
![Icona KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=9&hl=it)
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/schroederPath.gif?authuser=9&hl=it)
Intervalli di tempo
Per visualizzare i poligoni e gli overlay immagine che passano istantaneamente da uno all'altro, puoi specificare l'inizio e la fine di un periodo di tempo utilizzando l'oggetto TimeSpan. Questa tecnica viene in genere utilizzata per mostrare i cambiamenti nei poligoni e nelle immagini, come gli overlay del suolo, ad esempio per mostrare il percorso di ritiro dei ghiacciai, la diffusione delle ceneri vulcaniche e l'entità degli sforzi di disboscamento nel corso degli anni.
Gli indicatori TimeSpan vengono utilizzati nei casi in cui sia visualizzata una sola funzionalità alla volta e vuoi una transizione istantanea da un'immagine all'altra. Assicurati che i timeSpan siano contigui e non si sovrappongano. Per i set di dati con riquadri TimeSpan, il dispositivo di scorrimento dell'interfaccia utente di Google Earth include un puntatore che si sposta senza problemi lungo il dispositivo di scorrimento temporale dall'inizio alla fine del periodo di tempo. Il passaggio da una funzionalità all'altra è un cambiamento istantaneo.
Brian Flood ha creato un'interessante presentazione KML che mostra la crescita degli Stati Uniti man mano che gli stati venivano aggiunti al sindacato. Il file KML mostrato qui utilizza solo oggetti TimeSpan con un punto iniziale, in modo che uno stato (poligono) rimanga sul display dopo averlo aggiunto.
![Icona KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=9&hl=it)
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/statehood.gif?authuser=9&hl=it)
Animazione di un modello
Un altro esempio di utilizzo dell'elemento TimeSpan è l'animazione del London Eye, creata da James Stafford. Questo display utilizza un modello della ruota panoramica London Eye. Il modello fa riferimento a una serie di segnaposto, ciascuno dei quali utilizza una rotazione incrementale diversa per il modello e un timeSpan che indica per quanto tempo visualizzare il segnaposto.
![Icona KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=9&hl=it)
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/londonEye.gif?authuser=9&hl=it)
Come specificare l'ora
Il valore dateTime si basa sull'ora dello schema XML (consulta la parte 2 dello schema XML: Datatypes Second Edition). Il valore può essere espresso come aaaa-mm-ggThh:mm:sszzzzzz, dove T è il separatore tra la data e l'ora, mentre il fuso orario può essere Z (per UTC) o zzzzzz, che rappresenta ±hh:mm rispetto a UTC. Inoltre, il valore può essere espresso solo come data. Per esempi, consulta l'elemento <TimeStamp> nella documentazione di riferimento di KML 2.2.
Tempo con AbstractViews
Google Earth 5.0 supporta lo spazio dei nomi delle estensioni Google, che comprende gli elementi <gx:TimeSpan>
e <gx:TimeStamp>
. Queste sono copie degli elementi <TimeSpan>
e <TimeStamp>
e possono essere utilizzate per aggiungere informazioni sull'ora agli elementi <LookAt>
e <Camera>
.
L'inclusione di informazioni sull'uso del tempo in AbstractViews influisce sugli elementi visualizzati, sulla luce solare e sulle immagini storiche. L'utilizzo di <gx:TimeSpan>
o <gx:TimeStamp>
in AbstractView consente di volare in una località specifica nello spazio e in Google Earth.
Una volta specificato un orario, Google Earth continuerà a utilizzarlo per decidere quali immagini, funzionalità e luce solare visualizzare, fino a quando non verrà specificato un altro orario. KML non supporta il concetto di "ora", quindi per tornare all'ora corrente in Google Earth devi specificare <when>2999</when>
(o qualsiasi altra data futura) in <gx:TimeStamp>
.
Quando utilizzi elementi nello spazio dei nomi delle estensioni Google, devi prima aggiungere l'URI dello spazio dei nomi corretto all'elemento <kml>
di apertura nel file KML:
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
Tieni presente che lo spazio dei nomi delle estensioni con prefisso gx potrebbe non essere supportato da tutti i browser geografici. È supportato da Google Earth 5.0.
Esempio
![Icona KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=9&hl=it)
<?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>
Esempio: mostrare il movimento di un punto lungo un percorso
L'esempio seguente mostra l'utilizzo di un elemento TimeStamp per mostrare il movimento di un segnaposto lungo un percorso. I valori TimeStamp sono strettamente campionati, quindi l'icona del segnaposto si anima lungo il percorso quando viene riprodotto il file KML.
![Icona KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=9&hl=it)
<?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>
Nascondere gli elementi secondari dell'animazione
In genere, in casi come questo è utile includere un elemento ListStyle nel documento e specificare checkHideChildren
in modo che i singoli segnaposto non vengano visualizzati nella visualizzazione elenco. Il codice seguente include questo elemento aggiuntivo. Tieni presente che anche se il documento definisce l'elemento "Style", il documento deve fare riferimento a ListStyle in 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>
Esempio: animazione di overlay terrestri
Per animare i poligoni e gli overlay del suolo, in genere utilizzerai un elemento TimeSpan come mostrato nell'esempio seguente. Questo file KML contiene un'immagine di overlay al suolo per ogni mese, perciò puoi riprodurre l'animazione e vedere come cambia il paesaggio con le stagioni. Ecco un estratto di codice che mostra i primi tre mesi dell'anno:
<?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>
![Icona KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=9&hl=it)
Ecco un'acquisizione schermo di questo esempio:
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/bluemarble.gif?authuser=9&hl=it)