Apple vastaa paikkatietokohuun

Apple julkaisi tänään lehdistötiedotteen, jossa he kertoivat yksityiskohtia paikkatiedon tallennuksesta. Ja asiahan oli juuri niinkuin arvailinkin pari päivää sitten

Lehdistötiedotteessa luvattiin lähitulevaisuudessa julkaistavaksi päivityksen, joka poistaa varmuuskopioista nämä välimuistitietokannat. Jos olet kiinnostunut tukiasematietokannoista, nyt kannattaa ottaa itselle talteen oma varmuuskopio tulevia tutkiskeluita varten.

.

Lisää paikkatiedon tallennuksesta: Apple ei olekaan kiinnostunut sijainnistasi

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.

Screen_shot_2011-04-26_at_0

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ä.

Screen_shot_2011-04-26_at_0

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).

Screen_shot_2011-04-26_at_0

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.

Screen_shot_2011-04-26_at_0 Screen_shot_2011-04-26_at_0

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. 

Kolmiomittaus

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.

.

Näin tutkit iPhonen tallentamaa paikkatietoa

Viime päivinä on kohuttu runsaasti siitä, miten iPhone tallentaa muistiinsa runsaasti omistajansa liikkeisiin liikkuvaa paikkatietoa. En käsittele tässä yksityisyydensuojaan tai sen puutteisiin liittyviä asioita – muut voivat hoitaa tästä asiasta huolestumisen. 

Minua sen sijaan kiinnostaa enemmänkin tallennetun datan tutkiminen! 

Tallennetun tiedon ensimmäisenä löytäneen Pete Wardenin sivuilta löytyvällä iPhoneTracker-ohjelmalla saa piirrettyä hienoja kuvia oman puhelimensa muistiin tallennetusta liikedatasta. Ohjelma kuitenkin vähentää melko radikaalisti näyttämänsä tiedon tarkkuutta joten sillä ei näe parasta mahdollista tallennettua tietoa. 

On aika kääriä hihat ja pureutua dataan itse. Pikku nettisurffailun jälkeen löytyikin joukko hyviä vinkkejä ja ohjeita datan tutkimiseen ja ajattelinkin nyt jakaa ne teille kaikille.

Tässä kerron miten data kaivetaan esiin ja miten siitä saa näkösälle mielenkiintoisia visualisointeja. Kerron tiedonkaivuun yksityiskohdista niin että voit kokeilla samaa myös omalla koneellasi. Nämä ohjeet ovat Macille, Windows-käyttäjät ovat valitettavasti oman onnensa nojassa. Lisäksi tarvitset hieman Unix-tuntemusta. 

Lähdetään liikkeelle ja etsitään varsinainen data. Ihan ensiksi kannattaa kytkeä puhelin kiinni tietokoneeseen ja odottaa että se ottaa backupin. Tällä tavalla saat itsellesi tuoreimman paikkatiedon, sillä tallennettu paikkatieto sijaitsee iPhonen varmuuskopioissa. Huom: jos olet kytkenyt iTunesista päälle varmuuskopioiden salauksen, nämä ohjeet eivät toimi. Tiedot ovat silloin salattuja, ja siten hyvässä turvassa. Ota salaus pois päältä siksi aikaa kun haluat katsella paikkatietojasi.

iPhonen varmuuskopiot löytyvät kansiosta ~/Library/Application Support/MobileSync/Backup. Jokainen varmuuskopio on omassa hakemistossaan. Hakemistojen nimet ovat kirjain- ja numerokoodeja, joten tuorein backup löytyy parhaiten katsomalla tiedostojen päiväyksiä. Kun oikea hakemisto löytyy, siirry sinne:

Screen_shot_2011-04-25_at_1

Hakemisto sisältää joukon SQLite-tietokantoja, joiden selailuun tarvitaan sopiva ohjelmisto. Näppärin vaihtoehto on Firefox-selaimelle löytyvä SQLiteManager. Sitten täytyy löytää myös oikea tiedosto. Tähän tarvitset Stackoverflow-blogin kommenteista löytyvän Python-skriptin. Macistasi pitäisi löytyä Python-tulkki – jos sitä ei löydy, asenna ensin Python. Kopioi skripti ja laita se vaikkapa kotihakemistoosi tiedostoon nimeltään iphonels.py. Anna skriptille ajo-oikeudet. Tämän jälkeen voit ko. skriptiä käyttäen etsiä tietokannan nimeltään “consolidated”:

Screen_shot_2011-04-25_at_1

Suluista löytyvä kirjain-numero-koodisarja on sen tiedoston nimi, jossa etsimämme SQLite-tietokanta sijaitsee. Ota esiin SQLiteManager ja lataa ko. tietokanta siihen. 

Screen_shot_2011-04-25_at_1

Tietokanta sisältää 40 eri taulua. Liiketiedon sisältävän tietokantataulun nimi on CellLocation. Voit purkaa sen sisältämän tiedon valitsemalla listasta ko. taulun. Siirry sitten kohtaan Execute SQL ja anna komento SELECT * FROM CellLocation, joka valitsee kaikki ko. taulun rivit. Pura ne vielä levylle CSV-tiedostoon Actions-valikon kohdalla Save Result (CSV) to File:

Screen_shot_2011-04-25_at_1

Tiedoston tallennus kestää pienen hetken ja tämän jälkeen sinulla on levyllä kaikki tarkat sijaintihavainnot sisältävä tiedosto.

Tiedoston visualisointiin on useita tapoja, mutta näppärin niistä lienee Google Fusion Tables. Lataa luomasi CSV-tiedosto GFT:hen New Table / Import Table -toiminnolla:

Screen_shot_2011-04-25_at_1

CSV-tiedostossa ei ole kenttien otsikoita, joten ne täytyy lisätä käsin. Valitse Column names are in a row: None ja kirjoita jokaiselle kentälle otsikko (katso mallia SQLiteManagerin ikkunasta). Kaikkia kenttiä ei ole pakko tuoda, mutta täytä ainakin Latitude ja Longitude. 

Screen_shot_2011-04-25_at_1

Tässä kohtaa voisi katsoa hieman tarkemmin, mitä eri kentät ovat. Tietokannan jokainen rivihän kuvastaa siis iPhonen tekemää tukiasemahavaintoa. MCC, MNC, LAC ja CI ovat kännykkäverkkotermistöä ja tarkoittavat havaitun tukiaseman maakoodia (244=Suomi), verkkokoodia (5=Elisa, 91=Sonera), aluekoodia ja yksittäisen tukiaseman (lähettimen?) koodia. Latitude ja Longitude ovat ainakin minun päätelmieni mukaan koordinaatit tukiaseman arvioidulle sijainnille. Siis ei omalle sijainnillesi!  Horizontal Accuracy kertoo paikka-arvion tarkkuuden (metreinä?) ja Confidence olettaakseni sen, miten hyvänä iPhone itse on pitänyt ko. havaintoa.

Taulukon tuominen kestää jonkin aikaa. Kun se on valmis, kenttien merkityksiä täytyy vielä hieman säätää, jotta saadaan aikaan hienoja visualisointeja. Valitse GFT:ssä Edit / Modify columns. Valitse sitten kenttä Latitude, muuta sen tyypiksi Location ja rastita vielä Two column location -kohta. Varmista että Latitude- ja Longitude-valikoiden nimet vastaavat niitä mitkä annoit kentille tuontivaiheessa.

Screen_shot_2011-04-25_at_1

Nyt tuomasi kanta on valmis, ja voit alkaa leikkiä varsinaisilla visualisoinneilla! Valitse Visualize-valikosta kohta Map ja ihastele syntyvää karttaa. Jokainen kartalle piirtyvä pallo on iPhonen tekemä havainto kännykkätukiasemasta ja arvaus tukiaseman paikasta. Jotkut arvaukset ovat tarkkoja, jotkut epätarkkoja. Kaikki havainnot on kuitenkin laitettu talteen myöhempää käyttöä varten.

Screen_shot_2011-04-25_at_1

Pallukoiden väriä voi muuttaa Configure styles -kohdasta. Esim. tässä näkyvään karttaan minä väritin pallot Accuracy-arvon mukaan siten, että tarkemmat havainnot saivat lämpimämmän värin ja epätarkat havainnot olivat kylmän sinisiä.

Screen_shot_2011-04-25_at_1

Jos sinulla on muistissa useamman operaattorin kortilla tehtyjä havaintoja, voit kokeilla myös värittää palloja MNC-kentän arvojen perusteella. Display as heat map -rasitlla voit piirtää heatmap-karttoja eniten havaintoja sisältävistä seuduista. Kerro kommenteissa, jos keksit vielä hauskempia visualisointeja.

CellLocation ei ole kuitenkaan ainoa mielenkiintoinen taulu iPhonen muistissa. Laite kerää kuuluvien kännykkätukiasemien lisäksi tietoa myös WLAN-tukiasemista! Ne löytyvät taulusta WifiLocation, jonka voi tuoda sisään Fusion Tablesiin samalla tavalla.

WifiLocation sisältää valtaisan määrän tukiasemahavaintoja:

Screen_shot_2011-04-25_at_2

Kartalla näkyvät jälleen iPhonen tekemät havainnot – tällä kertaa langattomista verkoista. Kuten aiemmin, myös tässä on sekä tarkkoja että vähemmän tarkkoja havaintoja.

Tämän kartan kanssa voi harrastaa hieman filtteröintiä. View / Filter -kohdasta saa esiin filtterivalinnat, joista voi esimerkiksi poimia vain ne tukiasemat, joiden havaintotarkkuus on alle 59 (dataa tutkimalla käy ilmi, että parhaiden havaintojen tarkkuus on n. 50 – oletan että yksikkö on metriä):

Screen_shot_2011-04-25_at_2

Tämä alkaa olla jo melko suuntaa-antava kartta siitä, mistä kaikkialta löytyy WLAN-tukiasemia.

Kuten dataa katselemalla käy ilmi, iPhone näyttäisi keräävän tietoa tarkoituksenaan arvailla mahdollisimman tarkasti kännykkä- ja WLAN-tukiasemien sijanteja. Mihin tätä tietoa sitten käytetään? Jos olet joskus käynnistänyt kännykkäsi kartan sisätiloissa, olet varmaan huomannut että laite pystyy paikallistamaan sinut ilman GPS-vastaanotinta. Jopa sellaiset iPadit, joissa ei ole laisinkaan GPS:ää osaavat paikantaa itsensä tehokkaasti kartalle. 

Tähän paikannukseen käytetään nimenomaan tukiasemien sijaintitietoja. Mitä enemmän tietoa on käytettävissä, sitä paremmin paikannus tapahtuu. Tiedon tulee olla myös ajantasaista. Ihmiset ostavat uusia WLAN-tukiasemia, siirtelevät niitä eri paikkoihin ja operaattorit päivittävät kännykkäverkkojaan. Ajan myötä kerran kerätyt tiedot vanhenevat, ellei tietoa päivitetä jatkuvasti. 

Tätä tietoa voidaan kerätä monilla eri tavoilla. Joitain vuosia sitten Apple osti tietoa Skyhook-palveluntarjoajalta ja Googlelta. Sittemmin he ovat siirtyneet käyttämään (todennäköisesti tällä systeemillä) itse keräämäänsä tietoa (kyllä, se tarkoittaa käsittääkseni sitä, että tämäkin kerätty tieto hyvin todennäköisesti siirretään tai on jo siirretty Applelle jossain vaiheessa). Netistä lukemieni arvailujen mukaan Google taas on kerännyt tukiasematietoa kamera-autojensa avulla. Samalla kun Googlen Streetview-auto on ajellut teitä pitkin, he ovat tallentaneet tukiasematietoa – aivan samalla tavalla kuin minun iPhoneni ajellessani ympäri kyliä ja kaupunkeja. Lisäksi epäilen vahvasti, että Google kerää tietoa myös kaikilta niiltä, jotka käyttävät kännykässään Google-karttoja (myös Andoid- ja Nokia-puhelimista). En yhtään hämmästyisi, vaikka Nokialla olisi vastaavia tiedonkeruuoperaatioita.

Kuten alussa sanoin, en ota sen tarkemmin kantaa siihen, miten törkeää tällainen tiedonkeruu on, mutta muistuttaisin kuitenkin että todennäköisesti hyväksyit tiedonkeruun sillä hetkellä kun aikoinaan uutta älypuhelinta käyttöön ottaessasi hyväksyit käyttöehdot. Muistatko vielä sen hetken? “Juujuu, hyväksynhyväksyn, joko pääsee leikkimään uudella lelulla???” :-)

.