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:
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”:
Suluista löytyvä kirjain-numero-koodisarja on sen tiedoston nimi, jossa etsimämme SQLite-tietokanta sijaitsee. Ota esiin SQLiteManager ja lataa ko. tietokanta siihen.
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:
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:
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.
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.
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.
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ä.
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:
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ä):
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.
.