Google Earth inizia con la fotografia, moltissimo. Google mescola le immagini satellitari scattate dai suoi partner con riprese aeree più convenzionali e le unisce in un’unica enorme “trama virtuale” che copre il globo. La fotografia utilizzata in questo “livello di base” varia. Le risoluzioni raggiungeranno fino a 0,15 m per pixel nelle aree più dettagliate. L’Inghilterra è ora scesa a 0,5 m per pixel, ma l’Antartide viene catturata con un decimo di quella fedeltà.
Le immagini vengono aggiornate regolarmente, man mano che nuovi provider o satelliti entrano online, ma possono trascorrere da uno a tre anni prima che un’immagine venga elaborata e aggiunta al livello di base. La parte intelligente è come queste immagini vengono mappate sul globo virtuale sul tuo PC. Mappare la Terra non è un’impresa da poco. Secondo i calcoli di uno degli ingegneri che hanno costruito Google Earth, se memorizzassi un solo pixel di dati sui colori per ogni km quadrato della superficie terrestre, ritroveresti comunque un’immagine da 2,4 GB che misura 40.000 x 20.000 pixel, e questo sarebbe in grado di risolvere solo caratteristiche larghe 2 km. Nessun PC o scheda grafica potrebbe far fronte a qualcosa di queste dimensioni e, quando tieni presente che Google Earth ha bisogno di risolvere funzionalità inferiori a un metro, inizi a comprendere la portata dell’archiviazione, dello streaming e dell’elaborazione.
Quindi come lo gestisce Google Earth? Il software prende la gigantesca trama del livello base multi-terabyte e utilizza una funzionalità derivata dalla mappatura mip per trasmettere in streaming solo gli elementi più rilevanti di essa al tuo PC. La mappatura Mip è nata agli albori della grafica 3D come un modo per risparmiare larghezza di banda e potenza di elaborazione durante il processo di rendering in tempo reale. Quando vedi da vicino una superficie mappata in mip, vedi la trama in tutta la sua gloria ad alta risoluzione. Tuttavia, poiché quella superficie si allontana in lontananza, il processo sostituisce la trama con varianti meno dettagliate, salvando la scheda grafica dal disegnare una trama che comunque non vedresti correttamente.
Google Earth fa qualcosa di simile, utilizzando una pila di mappe mip che rappresentano la superficie della terra vista da diverse distanze e disegnando solo una colonna stretta di questa pila in qualsiasi momento. Intorno al punto focale della finestra, ottieni la texture con la risoluzione più alta quando ingrandisci, ma al di fuori di quel punto focale utilizza in modo intelligente le mip-map a risoluzione inferiore in un modo che bilancia la qualità dell’immagine e le prestazioni. Mentre il tuo punto di vista si sposta attraverso il pianeta, l’algoritmo risolve dove hai bisogno delle trame virtuali più grandi e le pagine dal server al disco rigido dalla memoria di sistema alla memoria delle texture. Ciò garantisce che solo i livelli di dettaglio più utili vengano inviati alla scheda grafica in qualsiasi momento.
Mentre ciò accade, Google Earth si sovrappone alla grafica vettoriale, al testo e alla grafica bitmap contenuta nei vari livelli di dati. Questi overlay sono controllati da KML, una variante di XML che presenta la stessa struttura basata su tag, elementi nidificati e attributi. KML può specificare icone ed etichette, posizioni e persino punti di vista e può indicare all’app Google Earth di sovrapporre un’immagine, recuperare dati da un database online o da una pagina Web o visualizzare un oggetto 3D strutturato. Queste funzionalità consentono a Google di integrare i dati dai propri database di ricerca, ma consentono anche a terzi di lavorare con i propri database o contenuti online. Poiché KML non è un grande salto per chi è abituato a lavorare con XML, consente anche agli utenti avanzati di utilizzare Google Earth come base per i propri sistemi di informazioni geografiche, app o mashup.
Vedere http://earth.google.com/gallery/index.html per alcuni esempi.