Kirjoitin eilen siitä,
miten pääsee helposti tutkimaan iPhonen muistista löytyvää paikkatietoa. Minulle, ja monelle muullekin syntynyt mielikuva oli, että iPhone tallettaa omistajansa liikkuessa tietoa ympäristöstä kuuluvista verkoista ja lähettää liikkumistiedot myöhemmin emoyhtiölle paikannustiedon parantamiseksi. Käyttäjän liikkeistä kerätyt tietokannat olisivat puhelimessa (ja tietokoneessa olevissa varmuuskopioissa) odottamassa paremmalla ajalla tapahtuvaa eteenpäin toimittamista.
Nyt alan olla kuitenkin vakuuttunut siitä, että tämä on väärä mielikuva.
Kerronpa koko tarinan. Selaillessani Google Fusion Tablesin karttakäyttöliittymän avulla iPhonestani löytyvää paikkatietoa kiinnitin huomiota muutamiin outouksiin. Kartalta löytyi tallennettua paikkatietoa eksoottisista paikoista ympäri maailmaa, aina Kanadaa ja Australiaa myöten. Paikoista, joissa en ole koskaan eläessäni käynyt.
Ajattelin aluksi, että nämä ovat harmittomia bugeja. Esimerkiksi Afrikan kainalossa oleva punainen piste on koordinaattipisteissä 0,0. Jos GPS jostain syystä sekoilee ja palauttaa sijainniksi pelkkiä nollia, löytyy maailmankartan origo Atlantin valtamereltä. Ehkäpä muutkin paikat selittyvät vastaavanlaisilla virhelukemilla. GPS on antanut vahingossa väärän sijaintitiedon ja se on tallentunut kartalle, arvatenkin keskelle merta tai metsää.
Mutta sitten tutkiskelin toissapäivänä tekemäämme pääsiäisreissua Pohjanmaalle. Matkan varrelta oli kerääntynyt paljon tuoreita paikkahavaintoja, mutta joukossa oli myös pallosia paikoissa, joissa emme käyneet. Esimerkiksi kolmostien lähistöllä sijaitseva Kihniö oli kartalla ihan sen näköinen kuin olisimme ajaneet kylän läpi. Aikaleimatkin täsmäsivät matkaan. Mutta me emme käyneet Kihniössä vaan ajoimme sen ohi kolmostietä pitkin, parinkymmenen kilometrin päästä.
Tämä oli jo hämmentävää. Kihniö on kolmostiestä niin kaukana, että yksikään WLAN-tukiasema ei kuulu kilometrikaupalla jatkuvan metsän läpi. iPhoneni ei ole mitenkään voinut kuulla kihniöläisiä wlaneja eikä siten tallentaa niiden tietoja. Tarkempi zoomaus kartalle näytti kuitenkin siltä, että kyseessä ei ollut kuitenkaan myöskään GPS:n virhetoiminto. Kartalla sijaitsevat pallot sijaitsivat kuitenkin teiden varsilla, juuri sellaisissa kohdissa missä oikeasti on asutusta (ja tukiasemia).
Puhelimeni muistiin oli siis ilmestynyt oikeanmuotoista paikkatietoa paikoista, joissa en ollut takuuvarmasti käynyt.
Kun tutkin tarkemmin havaintojen aikaleimoja, huomasin asian, johon olin kiinnittänyt jo aiemminkin huomiota: paikkatietojen aikaleimat eivät edenneet tasaisesti maantietä pitkin kiitävän automme liikkeen mukaisesti, vaan sen sijaan puhelimeen ilmestyi lyhyen hetken sisällä suuri määrä havaintoja. Kokeilin seuraavaksi suodattaa karttaa siten, että ainoastaan kyseisellä hetkellä puhelimeen tallentuneet havainnot tulivat näkyviin. Tulos näytti mielenkiintoiselta.
Puhelimeen oli ilmestynyt lauantaina iltapäivällä parissa sekunnissa suuri määrä paikkadataa Pohjois-Pirkanmaalta – sekä WLAN-tukiasemahavaintoja että kännykkämastohavaintoja. Kaikki paikkadata oli samoilta seuduilta – Ikaalisten, Parkanon, Hämeenkyrön ja Kihniön liepeiltä. Tämä tieto oli aikaleimojen mukaan ilmestynyt kännykkään suurin piirtein samalla hetkellä kun olimme ajelleet autollamme jossain Ylöjärvellä.
Tästä ei voinut vetää kuin yhden johtopäätöksen: puhelin ei ole kerännyt tietoja minun liikkumisestani, vaan ladannut tukiasematiedot muistiinsa jostain muualta. Muistiin ladatut havainnot ovat jonkun muun (tai muiden) keräämiä ja ne ovat yhteydessä omaan liikkumiseeni vain erittäin karkealla tasolla.
Tutkin myös muita kartalta löytyviä paikkoja. Etelä-Australialainen kaupunki, jossa en ole koskaan käynyt, oli ilmestynyt tietokantaan eräänä sunnuntaiaamuna. Käydessäni Oslossa puhelimeen oli ilmestynyt sekuntien sisällä kolme suurta rypästä tukiasematietoa kaupungista – suurinpiirtein samoihin aikoihin kun olin avannut nettiyhteyksiä hotellissa, toimistossa ja ravintolassa.
Sitten jo tajusinkin, mistä oli kysymys.
Kerrataanpa vielä ensin, miten paikkatiedon avulla paikantaminen tapahtuu. Jos olet joskus seurannut, miten iPhone sijoittaa sinut kartalle, olet varmasti huomannut kuinka kartalle ilmestyy nopeasti sijaintisi karkeana arviona ja muutaman hetken päästä sijaintitieto muuttuu tarkemmaksi. Se, mitä näiden hetkien aikana tapahtuu, menee jotenkuten seuraavasti (disclaimer: en ole koskaan työskennellyt paikannusteknologian kanssa, joten kaikki pohjautuu omiin päättelyihini – paremmin tietävät oikaiskoot).
Ensin puhelin hakee sillä hetkellä kuuluvat verkot. Tämä on sellaista tietoa, joka kännykällä on hallussaan jatkuvasti – muuten se ei voisi toimia matkapuhelimena. Sanotaan vaikka että puhelin saa selville seuraavat asiat:
- Tukiasema jonka koodi on 244:91:5011:781835 on n. kilometrin päässä (etäisyyden voi laskea signaalivoimakkuudesta)
- Tukiasema jonka koodi on 244:91:6102:1782 on n. kilometrin päässä
- WLAN-tukiasema jonka koodi on 00:15:2b:34:f9:a0 on n. 750 metrin päässä
Jotta tämän tiedon perusteella voi paikantaa puhelimen, tarvitaan tukiasemien sijaintitiedot. Kun tukiasemien sijainti tiedetään, oman sijainnin voi laskea kolmiomittauksen avulla. Alla olevasta kuvasta näet, miten kolmiomittaus toimii. Kun jokainen tukiasema on sijoitettu kartalle ja ympärille on piirretty rengas arvioidun etäisyyden päähän, oma sijaintisi on näiden renkaiden risteyskohdassa. Piirsin kahden kännykkätukiaseman ympärille kilometrin säteisen renkaan ja WLAN-tukiaseman ympärille 750-metrisen renkaan. Lopuksi merkitsin renkaiden risteyskohdan punaisella.
Puhelin tekee tämän saman laskutoimituksen sekunnin murto-osassa ja pystyy sen jälkeen näyttämään kartalla karkean arvion omasta sijainnista. Sitten kun GPS-vastaanotin on käynnistynyt ja saanut yhteyden satelliitteihin (tähän kuluu joitain sekunteja), sijainti muuttuu tarkaksi.
Ja mistä puhelin tietää tukiasemien sijainnit? Senhän me jo tiedämmekin. Puhelinvalmistaja on kerännyt tietoa juuri tätä tarkoitusta varten. Applella, Googlella, Skyhookilla ja varmasti monilla muillakin valmistajilla on valtaisa tietokanta, joka sisältää tuhansien ja taas tuhansien kännykkä- ja WLAN-tukiasemien sijaintitietoja.
Miten tämä liittyy puhelimen muistista löytyvään sijaintitietoon? Aiemmin siis havaitsin että ajellessani kolmostietä kohti Pohjanmaata, jossain Pohjois-Pirkanmaalla puhelimeni latasi (oletettavasti) Applen palvelimelta muistiinsa ison kasan tukiasematietoa.
Oletan, että puhelin teki tämän siltä varalta, jos sattuisin poikkeamaan vaikka Kihniöön ja haluaisin käyttää siellä ollessani karttaa. Kun tukiasemien sijaintitieto on ladattu valmiiksi puhelimen muistiin, karttapaikannus tapahtuu sekunnin murto-osissa vaikka nettiyhteys olisikin hidas tai jopa kokonaan poikki.
Tässä siis yksinkertainen selitys iPhonen muistista löytyville sijaintitiedoille. Ne ovat puhelimen muistiin ladattuja otoksia Applen tukiasematietokannasta – puhelimen muistiin siksi, että karttapaikannus tapahtuisi mahdollisimman nopeasti ja riippumatta nettiyhteyden laadusta.
Kun puhelimen kanssa liikutaan, se lataa ennakolta valmiiksi lähialueiden tukiasematietoa. Ennakkolatauksesta ei ole käyttäjälle juuri minkäänlaista haittaa, sillä kaikki muistiin vuoden aikana ladattu paikkatieto vie puhelimesta tilaa vain noin parin mp3-biisin verran. Yhden paikkatietoryppään lataaminen vastaa tiedonsiirtokapasiteetiltaan paria sähköpostia. Tästä samasta syystä ladattuja tietoja ei kannata heittää pois – Kihniön tukiasematiedot odottavat muistissa jos vaikka jonain kauniina päivänä sattuisin poikkeamaan sinne.
Edelleen on toki avoimena kysymys siitä, miten Apple on alunperin kerännyt nämä tiedot. Kuten eilen todettiin, Apple sai ennen tietoa yhteistyökumppaneilta mutta siirtyi n. vuosi sitten käyttämään itse keräämäänsä tietokantaa. En edelleenkään hämmästyisi, jos kävisi ilmi että puhelin suorittaa samalla myös tiedonkeruuta ja lähettää tietoa uusista ennen havaitsemattomista tukiasemista Applelle. Jostainhan tiedon on tultava, ja kuten eilen mainitsin, tähän on varauduttu myös käyttöehdoissa.
Ja entäpä tietokannasta löytyvät kaukaiset eksoottiset kaupungit? Sille en keksinyt vielä muuta selitystä kuin paikannusvirheet – puhelin kuvittelee pienen hetken olevansa Australiassa ja lataa saman tien paikkatietoryppään ympäröivästä seudusta.
.