Google Earth börjar med fotografering – väldigt mycket av det. Google blandar satellitbilder tagna av sina partners med mer konventionella flygbilder och sammanfogar dem till en enorm ”virtuell textur” som täcker världen. Fotograferingen som används i detta ”baslager” varierar. Upplösningarna når så höga som 0,15 m per pixel i de mest detaljerade områdena. England är nu nere på 0,5 m per pixel, men Antarktis fångas med en tiondel av den troheten.
Bildmaterialet uppdateras regelbundet, eftersom nya leverantörer eller satelliter kommer online, men det kan ta ett till tre år innan en bild bearbetas och läggs till basskiktet. Det smarta är hur dessa bilder kartläggs på den virtuella jordklotet på din PC. Att kartlägga jorden är ingen liten bedrift. Enligt beräkningar av en av ingenjörerna som byggde Google Earth, om du bara lagrade en pixel färgdata för varje kvadratkilometer av jordens yta, skulle du fortfarande få en 2,4 GB bild som mäter 40 000 x 20 000 pixlar, och detta skulle bara kunna lösa funktioner som är 2 km breda. Ingen dator eller grafikkort skulle klara av något av den här storleken och när du tänker på att Google Earth behöver lösa funktioner på mindre än en meter börjar du förstå omfattningen av lagring, streaming och bearbetning.
Så hur hanterar Google Earth det? Programvaran tar den gigantiska basskiktsstrukturen med flera terabyte och använder en funktion som härrör från mip-mappning för att bara strömma de mest relevanta delarna av den till din PC. Mip-mappning uppstod i början av 3D-grafik som ett sätt att spara bandbredd och processorkraft under realtidsrenderingsprocessen. När du ser en mip-mappad yta på nära håll ser du texturen i all sin högupplösta glans. Men när den ytan sjunker i fjärran byter processen ut texturen mot färre detaljerade varianter, vilket gör att grafikkortet inte ritar en textur som du ändå inte skulle se ordentligt.
Google Earth gör något liknande, genom att använda en stapel med mip-kartor som representerar jordens yta sett från olika avstånd, och bara ritar en smal kolumn av denna stapel när som helst. Runt fönstrets brännpunkt får du den högsta upplösningsstrukturen när du zoomar in, men utanför den brännpunkten använder den på ett intelligent sätt de lägre upplösta mip-kartorna på ett sätt som balanserar bildkvalitet och prestanda. När din synvinkel rör sig över planeten, räknar algoritmen ut var du behöver de största virtuella texturerna och bläddrar dem från servern till hårddisken till systemminne till texturminne. Detta säkerställer att endast de mest användbara detaljnivåerna skickas till grafikkortet när som helst.
Medan detta händer överlagrar Google Earth vektorgrafik, text och bitmappsgrafik som finns i de olika datalagren. Dessa överlägg styrs av KML, en variant av XML med samma taggbaserade struktur, kapslade element och attribut. KML kan ange ikoner och etiketter, platser och till och med synpunkter, och kan berätta för Google Earth-appen att lägga över en bild, hämta data från en onlinedatabas eller webbsida eller visa ett strukturerat 3D-objekt. Dessa funktioner gör det möjligt för Google att integrera data från sina egna sökdatabaser, men de tillåter också tredje part att arbeta med sina egna databaser eller onlineinnehåll. Eftersom KML inte är ett stort hopp för dem som är vana vid att arbeta med XML, gör det också möjligt för avancerade användare att använda Google Earth som grund för sina egna geografiska informationssystem, appar eller mashups. Ser http://earth.google.com/gallery/index.html för några exempel.