Näytetään tekstit, joissa on tunniste avoin data. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste avoin data. Näytä kaikki tekstit

perjantai 8. toukokuuta 2015

Nuijamaan rajamiehillä oli todella hyvä pito

Julkaisimme Yle Uutisten sivuilla 6.5. jutun "He valvovat rajojamme", joka kertoo rajavartioiden työstä Nuijamaalla. Juttu on erikoistaitettu, jossa on annettu suuri tila kuville ja videoille. Materiaalia jutussa on paljon eli juttu on siis pitkä lukupaketti. Jutussa edettiin vierittämällä alaspäin kuten netissä on luontevaa. (Kuva 1)

Juttu Nuijamaan rajavartioista julkaistiin keskiviikkona kello 11 jälkeen. (Kuva 1)
Juttu keräsi noin 20 000 klikkausta.

Juttu jakautui kuvien, videoiden ja grafiikoiden myötä 15:sta kokonaisuuteen. Seurasimme miten pitkälle lukijat vierittivät sivua. Tallensimme tiedon kun käyttäjä saavutti kokonaisuuden alun.

Ensimmäisen kokonaisuuden alkuun vieritti noin 18 000 käyttäjää. Heti alussa menetettiin siis noin 10 % kävijöistä. Tämän jälkeen pito oli todella hyvä. Loppuun asti jutun vieritti 11 600 käyttäjää eli noin 60 %:a kävijöistä. Tämä on todella suuri osuus, koska aikaisemmin olemme nähneet lähempänä 10–20 % olevia lukuja. Toki edelleen ymmärryksemme lukujen takana perustuu pieneen otantaan. Emme ole vielä tarpeeksi usein mitanneet kuinka kuinka pitkälle tämänkaltaisia pidempiä juttuja vieritetään.

Jotain perusteluja hyvälle pidolle voidaan kuitenkin etsiä julkaisuajasta. Juttu julkaistiin selkeästi päivällä – kello 11 jälkeen – jolloin ihmiset ovat työpaikoillaan tietokoneiden ääressä. Yleinen sääntö meillä julkaisulle on, että paras julkaisuaika on heti aamulla, mutta tästä ehkä opimme, että tämänkaltaisten erikoistaitettujen juttujen kohdalla viisautta voidaan hakea myös muunlaisesta julkaisuajankohdasta.

Tilastonikkareille


Luvut ovat Google Analyticsin yksilöidyt tapahtumat -lukuja.

Jutun lukijamäärä: 20 028
  1. osion alkuun: 18 176
  2. osion alkuun: 17 340
  3. osion alkuun: 16 240
  4. osion alkuun: 15 318
  5. osion alkuun: 14 981
  6. osion alkuun: 14 512
  7. osion alkuun: 13 774
  8. osion alkuun: 13 579
  9. osion alkuun: 13 142
  10. osion alkuun: 13 074
  11. osion alkuun: 12 516
  12. osion alkuun: 12 451
  13. osion alkuun: 11 928
  14. osion alkuun: 11 702
  15. osion alkuun: 11 432

torstai 6. maaliskuuta 2014

Python hoitaa, eli kuinka Plus-deski kokeili screen scrapingia

Kun keskustelu Keva-johtaja Merja Ailuksen työsuhde-eduista oli jatkunut jo jonkin aikaa, Yle:n toimittaja Jarno Liski alkoi pyöritellä mielessään kysymyksiä: kuinka kannattava työsuhdeasunnossa asuminen on, kuka siitä todella hyötyy ja millä tavalla työsuhdeasuminen otetaan verotuksessa huomioon. Hänen lähtöoletuksensa oli, että työsuhdeasuntojen verotusarvo vastaisi huonosti asunnoista vapailla markkinoilla maksettavaa vuokraa.

Liski otti yhteyttä Plus-deskin tuottaja Juho Salmiseen, joka lähti yhdessä Teemo Tebestin kanssa viemään asiaa eteenpäin. Lopputulos on nähtävissä täällä.

Verottajan väite syyniin

Verottajan mukaan asuntojen verotusarvo vastaa keskimäärin 90-prosenttisesti asunnosta pyydettyä vuokraa. Esimerkiksi 700 eurolla vuokrattavan asunnon verotusarvon pitäisi olla noin 630 euroa. Tämä tuntui kuitenkin pitävän huonosti paikkansa. Ideana olikin tutkia, minkä suuruisia verotusarvoja asunnot todellisuudessa saavat ja kuinka hyvin verotusarvo vastaa asunnoista pyydettävää vuokraa.

Verottaja määrittelee työsuhdeasunnoille laskukaavan, jonka avulla verotusarvo määritellään asuntokohtaisesti. Verotusarvon laskennassa vaikuttavat asunnon sijainti (pääkaupunkiseutu/muu maa), pinta-ala sekä valmistumisvuosi. Työntekijä saa asuntoedusta lisähyötyä silloin, kun verotusarvo on todellista markkina-arvoa selkeästi alhaisempi, koska tällöin hänen verotuksensa on keveämpi kuin sen tulisi olla.

Teemo ja Juho pohtivat, miten asiaan pääsisi käsiksi. Verottajan kaavan pitäisi tuottaa arvo, joka on hyvin lähellä markkinahintaa. Jarno Liskin idea oli kerätä suuri määrä olemassa olevien vuokra-asuntojen tietoja ja laskea asunnoille verottajan kaavan avulla verotusarvo.

Suomessa on muutama suuri vuokra-asuntoja listaava verkkopalvelu, joiden dataa olisi mahdollista käyttää verottajan kaavan testaamiseen. Käsityönä verotusarvon ja markkina-arvon kattava vertailu ei kuitenkaan onnistuisi, sillä vuokra-asuntoja on sivustoilla tuhansia.

Oli siis kirjoitettava koodinpätkä, jonka avulla pystyttäisiin keräämään tietyn verkkopalvelun vuokra-asuntoja koskeva data, laskea niiden perusteella asunnoille verotusarvo ja analysoida saatuja arvoja. Datan keräämiseen käytettävää menetelmää kutsutaan ruudunraavinnaksi (engl. screen scraping, tuttavallisesti screippaus). Asuntojen tiedot voisi poimia miltä tahansa vuokra-asuntoja listaavalta sivustolta. Teemo käytti tässä tapauksessa Alma Median ylläpitämän Vuokraovi.com-palvelun tietoja.

Koodi ja tietokanta valmiiksi

Ruudunraapijan kirjoittamiseen Teemo päätti käyttää Python-kieltä. Screipatessa kirjoitettu koodi käy järjestelmällisesti läpi verkossa olevia nettisivuja, poimii sivulta halutut elementit ja siirtää ne tietokantaan. Tietokannaksi Teemo valitsi ennestään tutun MongoDB:n. MongoDB sopi käyttötarkoitukseen hyvin, koska noSQL-tietokannassa datalle ei tarvitse määrittää tarkkaa rakennetta etukäteen, vaan sitä voidaan täydentää ja muokata tarpeen mukaan.

Kun Teemo laittoi homman aluilleen 29. marraskuuta, Vuokraovi-palvelussa oli tarjolla noin 6 000 vuokra-asuntoa eri puolilta Suomea. Yhdelle hakutulossivulle saa näkyviin kerrallaan 10–30 vaihtoehtoa, joten tarvittavien kyselyjen määrän minimoimiseksi Teemo sääti määrän maksimiinsa. Näin screipattavaksi jäi hieman yli 200 erillistä sivua, jolla jokaisella oli 30 asuntoa. (Kuva 1)

Helmikuussa 2014 Vuokraovi-palvelussa oli tarjolla n. 8 100 vuokra-asuntoa. (Kuva 1)
Datan keräämistä mutkisti se, että kaikki tarvittavat tiedot eivät löytyneet tältä hakutulossivulta. Koodin tuli käydä läpi myös jokaisen asunnon oma sivu, sillä asunnon rakennusvuotta ei mainita kaikkien asuntojen listauksessa. Kyselyjä piti siis lopulta tehdä 200 hakutulossivuille ja 6 000 yksittäisten asuntojen omille sivuille.

Teemon ensimmäinen ajatus oli kokeilla ScraperWiki -palvelua, jota hän oli kuullut käytettävän screippaukseen. Palvelu on ollut etenkin toimittajien suosiossa ja Teemo ajatteli, että palvelun testaamisen jälkeen hän voisi opettaa sen käyttöä muille toimittajille.

ScraperWiki mahdollistaa esimerkiksi Python-koodin kirjoittamisen ilman erillisten ohjelmointiympäristöjen asentamista. Siksi palvelu sopii esimerkiksi journalisteille, joilla ei usein ole mahdollisuutta tai taitoa asentaa kaikki tarvittavia ohjelmistoja. Teemo päätyi kuitenkin tekemään toteutuksen omalla koneella omassa ympäristössä, koska tämä oli lopulta hänelle kätevämpää.

Scraper käy läpi HTML-koodia ja tallentaa määritellyt osiot talteen myöhempää käyttöä varten. (Kuva 2)
HTML-merkkauksen siivouksessa ja käsittelyssä Teemo käytti hyväkseen BeautifulSoup-nimistä Python-kirjastoa. BeautifulSoup on kirjasto, jonka avulla verkkosivuilla käytetty HTML-merkkaus voidaan muuttaa koneelle ymmärrettävään muotoon. Lopulta koodi ryömi Vuokraovi.comin sivuja muutaman tunnin ajan. Ajo tehtiin vielä uudelleen lopullista uutista varten 2. joulukuuta.>

Trouble shooting vei aikaa

Kun Teemo testasi koodia ensimmäisiä kertoja, koodi ei hakenut dataa halutulla tavalla. Vian etsintään menikin hetki. Lopulta Teemo tajusi tutkiessaan HTTP-pyyntöä, että Vuokraovi.com -sivusto asetti Internet-selaimessa tukun evästeitä, eli cookieita, joiden puute esti scraperin toiminnan. Hän päätteli, että asian korjaamiseksi samaiset evästeet tulisi asettaa myös tietokoneohjelman tekemään HTTP-pyyntöön. Tällöin HTTP-pyyntö vaikuttaisi Vuokraovi.comin näkökulmasta täysin samanlaiselta kuin jos sen tekisi esimerkiksi Google Chrome -selaimella. (Kuva 3)

HTTP-pyyntöihin liittyvät evästeet näkee Google Chrome -selaimessa Inspect Element -valikon takaa. (Kuva3)
Joskus screipatessa voi käydä niin, että jos pyyntöjä tehdään suuri määrä, palvelin voi tulkita ne vihamielisiksi ja estää ne. Vuokraoven tapauksessa reilut 6 000 pyyntöä hukkui luultavasti normaalin verkkoliikenteen sekaan. Screippausta suunnitellessa kannattaa kuitenkin miettiä, voiko rajoituksista tulla ongelmia. Esimerkiksi hakukoneyhtiö Google tunnistaa tehokkaasti koneellisesti tehtävät haut ja estää ne, koska koneellisesti tehtävät haut ovat osa heidän maksullista palveluaan.

Toteutus on ladattavissa avoimena lähdekoodina (CC-BY-SA 4.0) Ylen Github-sivulta.

Yhden päivän työ

Ennen julkaisua aineistosta siivottiin pois sellaiset kohteet, joista puuttui jokin tarvituista tiedoista, kuten rakennusvuosi, sekä autotallit ja kalustetut asunnot. Näin aineistosta saatiin vertailukelpoista. Karsimisen jälkeen pohja-aineistoksi jäi noin 5 000 vuokra-asunnon tiedot. MongoDB:stä data tulostettiin .csv-muodossa ja vietiin Googlen Spreadsheets-taulukkolaskentaohjelmaan, jossa lopullinen verotusarvolaskenta tehtiin. Aineisto on ladattavissa Ylen sivuilta Excel-muodossa.

Jutun teknisten osien toteuttaminen järjesteltävine taulukoineen kesti noin työpäivän verran, joskin homma olisi sujunut nopeammin, jos eväste-ongelman selvittämiseen ei olisi mennyt aikaa. Jatkossa vastaavanlaisia toteutuksia tehtäessä evästeet osataan ottaa paremmin huomioon.

Eräs aineistosta tehty havainto oli, että erot markkinavuokrassa suhteessa verotusarvoon olivat alueellisia. Niinpä juttu sai otsikon: Asuntoedusta hyötyy eniten Helsingissä ja kehyskunnissa – katso oman kuntasi tilanne. Jutun yhteydessä käyttäjä sai tutkia asuntojen markkinavuokran ja verotusarvon eroa sekä kunnan että postinumeroalueen perusteella.

Aineisto myös paljasti, että verotusarvon ja markkina-arvon välinen vastaavuus oli keskimäärin 73 prosenttia, siis huomattavasti verottajan edustajan ilmoittamaa 90 prosenttia pienempi.

Juttu ei ollut varsinainen yleisömenestys. Asuntoedusta nauttii Suomessa alle 20 000 henkilöä, joten kohdeyleisökään ei ollut järin suuri. Vaikuttavuutta ei voida kuitenkaan mitata pelkästään lukijamäärän perusteella.

Screippaus-kokeiluna juttu oli Plus-deskille uusi aluevaltaus ja on hyvin todennäköistä, että tulevaisuudessa tällaisia omaan datan hankintaan perustuvia "skuuppeja" tulee enemmän.

Laita siis Python töihin!

Heidi Kähkönen
Kirjoittaja on vapaa toimittaja ja datajournalismikouluttaja
Twitter:  @heidikahkonen

maanantai 9. joulukuuta 2013

Datajournalistin veropäivä

Tarkoitan veropäivällä tässä yhteydessä marraskuun ensimmäistä, jolloin suomalaisten veronmaksajien edellisen kalenterivuoden verotiedot tulevat julkisiksi. Marraskuussa julkistettiin siis kaikkien suomalaisten pääoma- ja ansiotulotiedot vuodelta 2012. Tiedot ovat julkisia ja meidän jokaisen tulotiedot ovat saatavilla verotoimistoista kysyttäessä.

Kerron aluksi hieman veropäivän taustoja ja sitten tarkemmin mitä tein itse veropäivänä.

Tiedotusvälineissä veropäivä näkyy merkittävällä tavalla. Etenkin iltapäivälehdet tekevät paljon juttuja, koskien erilaisia ryhmiä ja heidän parhaiten tienaavia yksilöitä. Esimerkiksi iltapäivälehdet tekevät veropäivänä paljon juttuja otsikkorakenteella: "Katso kuka tienasi eniten ryhmässä X". Helsingin Sanomissa verotietoihin on myös panostettu ja HS:llä onkin erityinen Verokone, josta verotietoja on mahdollista tarkastella useamman vuoden ajalta. Maakuntalehdet taas tekevät juttuja omista lähtökohdistaan keskittyen etenkin oman alueensa parhaiten tienaaviin.

Yle Uutisissa tendenssi tuntuu kulkevan aina vain vähemmän retostelevaan suuntaan. Tämä näkyy esimerkiksi niin, että yksittäisten ihmisten tuloja nostetaan aina vähenevässä määrin esille. Näiden sijaan pyritään nostamaan enemmän esille ilmiöitä, joita tulojen takaa on nähtävissä kuten tuloerojen muutokset ja alueelliset erot tuloissa.

Viime vuonna tämä näkyi siten, että julkaisimme veropäivänä jutun "Näin moni tienaa vähemmän kuin sinä – kokeile itse", josta tuloja oli mahdollista tarkastella, ei yksilötasolla, vaan alueellisesti ja demograafisesti oman kiinnostuksen mukaan. Tämä vuonna samaa teemaa jatkettiin veropäivää edeltävänä päivänä julkaisemalla vastaavanlainen juttu "Kuinka moni naapurisi tienaa vähemmän kuin sinä? Kokeile itse laskurilla". (Kuva 1)

Rakentamallamme työkalulla tuloeroja saattoi verrata postinumeroalueittain. Kuvassa Vantaalla sijaitsevan Mikkolan tulojakauma (Kuva 1)
Lisäksi olemme tietoisesti pienentäneet "katso kuka tienasi eniten" -listoille päätyvien ihmisten määrää.

Viime vuonna koko maan listalla oli 1000 nimeä ja alueiden listoilla 200. Tänä vuonna näillä listoilla esitettyjen nimien määrät putosivat koko maan osalta 100 nimeen ja alueiden osalta 30 nimeen. Määrät poikkeavat selkeästi useista muista mediataloista ja heidän julkaisemistaan määristä.

Toki Yle:lläkin tehdään edelleen myös henkilöihin kohdistuvia juttuja.

Datajournalistin veropäivä


Itse veropäivänänä 1.11.2013 minun vastuullani oli tuottaa Yle Uutisten sivuille edellä mainitut "katso kuka tienasi eniten" -listat koko maan ja alueiden (maakunnat) osalta. Vastasin siis siitä, että veropäivän aamuna verotiedot olivat luettavissa Yle Uutisten sivuilta mahdollisimman nopeasti (käytännössä muutaman minuutin varoitusajalla) niiden julkistamisesta. Tiedotusvälineet saivat ennakkoon tilaamansa aineistot verottajalta samanaikaisesti veropäivän aamuna kello 8.00.

Yle Uutisten näkökulmasta kyse on siitä, että uutistilanteessa halutaan olla ensimmäisiä tai ensimmäisten joukossa. Ja ensimmäisinä mahdollisimman hyvin lukijoita palvelevalla tavalla. Myös maakuntatasolla halusimme olla uutiskilpailussa rintarinnan maakuntalehtien kanssa. Esimerkiksi niin, että Yle Tampere saisi nettiin samaan aikaan jutun verotiedoista ja eniten tienanneista kuin Aamulehti.

Tämä mahdollisimman hyvä ja nopea tapa oli käytännössä nettiuutiseen upotettava taulukko, jota olisi mahdollista järjestää sarakkeiden perusteella ja josta tietoja olisi mahdollista etsiä.

Kantava ajatus tämän saavuttamiseksi oli, että rakennamme putken verotoimistosta nettiin siten, että tiedot kulkisivat minun kauttani. Minun tehtäväkseni siis tuli muokata alkuperäistiedostot sellaiseen muotoon, että ne on mahdollista julkaista netissä ja sitten julkaista ne.

Sain haltuuni edellisen vuoden vastaavat aineistot, jotka Yle Uutiset oli saanut ja lähdin rakentamaan ratkaisumallia niiden pohjalta. Verohallinto toimittaa tiedot .csv-tiedostoina. Tiedostot on nimetty kryptisesti numerokoodeilla, mutta tiedostot avaamalla selviää, että tiedostonimiin on koodattu maakuntanumero (.xls) sekä tieto siitä minkä tyyppistä tietoa tiedosto sisältää. (Kuva 2)

Verohallinto toimittaa verotiedot toimitusvälineille .csv-muodossa. (Kuva 2)

Olimme tilanneet tänä vuonna samat aineistot kuin aikaisempinakin vuosina eli 1000 eniten tienannutta koko maan osalta sekä 200 eniten tienannutta maakuntien osalta (julkaisimme siis vain osan). Nämä tiedot oli pyydetty sekä ansio-, pääomatulojen sekä kokonaisansioiden mukaan järjestettyinä. Yhteensä tiedostoja oli siis 60 kpl ((19 maakuntaa + koko maa) * 3 tiedostoa / alue).

Ajatukseni siis oli, että tuottaisin tästä .csv-materiaalikasasta mahdollisimman automaattisesti html-muotoiset järjestettävät listat, jotka voitaisiin julkaista Yle Uutisten sivuilla artikkeleihin upotettuina.

Lähdin toteuttamaan tätä automatisointia Python-scriptillä. Apuna käytin MondoDB-tietokantaa, joka toimi tietojen väliaikaisena tallennuspaikkana. Scriptin toimintalogiikka on seuraavanlainen:

  1. Lue kansion kaikki tiedostot (60 kpl).
  2. Avaa kansiosta yksi tiedosto kerrallaan käsiteltäväksi.
  3. Selvitä tiedostonimen perusteella mitä maakuntaa tämä tiedosto edustaa sekä sisältääkö tiedosto ihmiset järjestettynä ansiotulojen (1), pääomatuloje (2) vai kokonaistulojen (3) mukaan.
  4. Tallenna tiedot MongoDB-tietokantaan sarakkeiden mukaisesti.
  5. Kirjoita uusi .csv-tiedosto mihin on otettu alkuperäistiedoihin verrattuna mukaan vain kiinnostavat sarakkeet ja johon on lisäksi lisätty uusia kiinnostavia sarakkeita kuten henkilöiden veroprosentti. Lisäksi tässä kohtaa poistettiin tiedoista kaikkien mahdollisesti alle 18-vuotiaiden nimet.
  6. Toista prosessi aineiston seuraavalla tiedostolle.

Ennen tätä prosessia muunsin alkuperäistiedostojen merkistön UTF-8-muotoon (alunperin ISO-8859-1). Tein tämän, että pystyisin olemaan varma, että skandinaaviset kirjaimet eivät korruptoituisi prosessin aikana. UTF-8 on merkistönä tässä suhteessa parempi. Rakensin tähän erillisen Python-scriptin, joka teki muunnoksen puolestani.

Harjoittelin prosessin läpi edellisen vuoden aineistoilla läpi noin kymmenen kertaa ja sain ajettua prosessin läpi sähköpostista julkaistuksi jutuksi rauhallisessa tahdissa edeten alle kahdessa minuutissa. Eli käytännössä lukijoille hyvin merkityksettömässä ajassa.

Veropäivän aamuna tulin töihin hieman ennen seitsemää aamulla. Verotiedot julkaistiin siis kahdeksalta. Toimittajamme Mikko Naalisvaara oli Haapaniemenkadulla verotoimistossa hakemassa tilaamamme aineistoa ja hänen oli määrä lähettää se minulle sähköpostilla heti aineisto saatuaan. Konkreettisesti Mikko sai verotoimistolta muistitikun, jossa tiedot olivat, jonka hän kiinnitti omaan mukana olleeseen koneeseensa. (Kuva 3)

Verotoimistosta tilatut verotiedot sai nimetyissä muistitukuissa. Tämä Yle:n kappale löysi tiensä työpöydälleni myöhemmin iltapäivällä. (Kuva 3)

Tulin töihin ajoissa ensinnäkin, että kyseisenä päivän HSL:n junat olivat lakossa ja halusin olla erityisen varma, että pääsisin paikalle, mutta toisaalta myös, että pystyin rauhassa käymään vielä ajatustasolla läpi sen mitä olimme tekemässä.

Aamukahdeksan aikaan aloitin sähköpostini "päivitä"-painikkeen aktiivisen naputtamisen. Lopulta kello 8.09 aineisto tippui sähköpostiini. Latasin tiedostot koneelleni ennalta luotuun kansioon ja ajoin tarvittavat Python-scriptit tiedostoille. Tiesin, että hätiköinti ei tulisi säästämään kuin puoli minuuttia kun taas epäonnistuminen johtaisi helposti moninkertaiseen viivästymiseen kun koko prosessi pitäisi aloittaa alusta.

Eniten jännitystä näin koodarin toimesta aiheutti epäilys siitä, että verohallinto olisi voinut mennä muuttamaan tiedostojensa formaattia tai merkistöä jollain tavalla. Tämä luonnollisesti johtaisi joko siihen, että scriptit eivät toimisi ollenkaan tai ne toimisivat loogisesti väärin. Tätä mahdollisuutta silmällä pitäen olin kehittänyt varasuunnitelmana manuaalisesti täytettävän, mutta etukäteen rakennetun html-listan, jonka alueet heti tiedot saatuaan saattoivat itse täyttää. Tämä varasuunnitelma varmasti siis sen, että meillä olisi heti aamulla aiheesta netissä kuitenkin jotain.

Tämä varasuunnitelma oli kuitenkin lopulta etenkin alueiden näkökulmasta enemmän tilannetta sekoittava, koska koko aineiston kattava toteutukseni valmistui alueiden käsin tuottamaa listaa nopeammin. Alueet siis edelleen täyttivät etukäteen rakennettua html-listaa kun he olisivat voineet ottaa käyttöön automaattisesti tuotetun taulukon. Tämän osalta täytyy kommukaatiota ensi vuodeksi parantaa.

Scriptit siis toimivat ja ennaltaharjoiteltu prosessi mahdollisti sen, että meillä oli verkossa kello 8.14 artikkeli johon oli upotettu järjestettävä taulukko, josta oli mahdollista tarkastella eniten tienanneiden tietoja koko maan sekä alueiden osalta. Työ oli siis valmis viidessä minuutissa (josta käytimme ehkä 1–2 minuuttia tietojen tarkistamiseen) tuotettua sähköpostiin tulleista .csv-tiedostoista interaktiivisen uutisapplikaation, joka oli käytettävissä koko maan ja jokaisen yksittäisen

Toteutin scriptin pääosin maanantaina (veropäivä oli perjantai) ja käytin välissä olleet päivät lähinnä hienosäätöön. Käytännössä käytin toteutukseen siis yhden työpäivän, jonka kautta veropäivänä lukijat saivat palvelua 15 minuutissa. Tämä oli merkittävä parannus verrattuna viime vuoteen jolloin listoja on tehtaillut useampi ihminen ja viimeiset listat valmistuivat alueille käsittääkseni vasta puolen päivän aikoihin. Jo sellaisenaan varasuunnitelmana käyttämämme etukäteen rakennettu html-lista oli kehitysaskel edelliseen vuoteen, jolloin alueilla ei ollut mitään yhtenäistä tapaa toimia.

Scriptit ovat ladattavissa Yle Uutisten Github:sta. Annoin projektille nimeksi tax-data-organizer. Scripti toimii niin, että sille annetaan kansio, jossa ovat verottajalta saadut tiedostot. Scripti tallentaa sitten uuteen erilliseen kansioon muokatut versiot sille annetuista tiedostoista. Järjestettävä html-taulukko näistä muokatuista .csv-tiedoista on mahdollista tehdä esimerkiksi mukaillen niin ikään Yle Uutisten Githubista löytyvää Sorttable-projektia.

tiistai 25. kesäkuuta 2013

Pyöräilytestin tulokset

Julkaisimme viime viikon maanantaina (17.6.) pyöräilyaiheisen jutun: "Pyöräilijä: Testaa osaatko liikennesäännöt", jossa kahdeksan pyöräilyn liikennesääntöaiheisen kysymyksen avulla testasimme lukijoidemme pyöräilysääntötietoutta. (Kuva 1)

Jutussa piti vastata kahdeksaan pyöräilyaiheiseen liikennesääntökysymykseen. (Kuva 1)
Juttu oli erittäin suosittu ja vastauksia kyselyyn kerääntyikin eiliseen mennessä 64 571. Tehdessämme aiheesta keskiviikkona (19.6.) jatkojutun – jossa kerroimme tuloksista – oli vastauksia ehtinyt kerääntyä noin 52 000.

Tässä kysymysten oikeinvastausprosentit:
  • 1 kysymys: 64 %
  • 2 kysymys: 90 %
  • 3 kysymys: 92 %
  • 4 kysymys: 86 %
  • 5 kysymys: 72 %
  • 6 kysymys: 85 %
  • 7 kysymys: 75 %
  • 8 kysymys: 73 %
Ensimmäinen kysymys oli siis vaikein (kaksi kolmesta vastasi oikein) ja kolmas taas helpoin (yhdeksän kymmenestä vastasi oikein). Tässä oikeiden vastausten jakauma kysymyksittäin:
  • 0 oikein: 22 vastausta, 0,03 %
  • 1 oikein: 27 vastausta, 0,04 %
  • 2 oikein: 186 vastausta, 0,39 %
  • 3 oikein: 848 vastausta, 1,31 %
  • 4 oikein: 3 288 vastausta, 5,09 %
  • 5 oikein: 9 586 vastausta, 14,83 %
  • 6 oikein: 18 281 vastausta, 28,31 %
  • 7 oikein: 20 394 vastausta, 31,58 %
  • 8 oikein: 11 939 vastausta, 18,49 %
Tyypillinen vastaaja sai siis seitsemän oikein ja vastasi väärin ensimmäiseen kysymykseen. Vastaajien liikennetietämys ainakin näiden kysymysten valossa oli oikein hyvää. Huomionarvoista on, että alle 0,5 % vastaajista sai vain kaksi tai vähemmän oikein. Oikeiden vastausten keskiarvo oli 6,4.

Päiväkohtainen vastausten kertymä näyttää tältä:
  • maanantaina 17.6.2013: 39 731 
  • tiistaina 18.6.2013: 11 089
  • keskiviikkona 19.6.2013: 6 668
  • torstaina 20.6.2013: 2 397
  • perjantaina 21.6.2013: 828
  • lauantaina 22.6.2013: 1 020
  • sunnuntaina 23.6.2013: 948
  • maanantaina 24.6.2013: 1 890
Suurin piikki nähtiin siis julkaisupäivänä, mutta myös julkaisua seuraavina päivinä kyselyyn vastasi huomattava määrä ihmisiä. Testin perusteella saatu tulos oli mahdollista jakaa omassa sosiaalisessa mediassa Twitterin ja Facebookin kautta, joka osalta toi nostetta nimenomaan julkaisun jälkeisille päiville. Tässä luvut katsottuina SharedCount-palvelusta:
  • Facebook-tykkäyksiä: 1 656
  • Facebook-jakoja: 574
  • Facebook-kommentteja: 3 448
  • Twiittejä: 165
Mikäli olet kiinnostunut kyselyn vastausaineistosta voit ladata sen koneellesi .csv-muodossa:
Aineisto sisältää aikaleiman jolloin vastaus on lähetetty sekä kaikkien vastaajien lähettämät vastausrivit (64 571). Lisäksi otsikkoriville on kuvattu kunkin kysymyksen oikea vastaus. Aineisto on lisenssoitu CC-BY-SA 3.0. Lähteenä mainittava Yle Uutiset.

perjantai 24. toukokuuta 2013

Karttatoteutuksista ja koordinaatistoista

Olemme PlusDeskin ensimmäisten neljän kuukauden aikana toteuttaneet muiden muassa suuret määrät erilaisia karttavisualisointeja. (Kuva 1)

Olemme tehneet niin yksittäisiin pisteisiin perustuvia Google Maps -pohjaisia karttoja kuten:
kuin myös erilaisia aluisiin perustuvia Google Maps -karttoja kuten:

Kartat ovat oiva visualisointikeino kun halutaan kuvata datan spatiaalista merkitystä kuten tässä esimerkissä, jossa ilmiön voidaan keskittynyt rannikolle. (Kuva 1)
Toisinaan olemme myös piirtäneet kartalle yhtäaikaisesti yksittäisiä pisteitä ja alueita kuten Bostonin tapahtumat -jutun yhteydessä, jossa maratonin reitti piirrettiin yhtenäisenä viivana kun taas räjähdykset ja muut tapahtumapaikat yksittäisinä pisteinä.

Google Maps:n lisäksi olemme hyödyntäneet kartoissa OpenStreetMap-palvelua kuten esimerkiksi jutussa, jossa kerroimme mistä löytyy keskimäärin paras sää hiihtolomakaudella.

Mainittujen palveluiden lisäksi olemme toteuttaneet karttoja räätälöidyillä SVG-pohjaisilla ratkaisuilla kuten näissä esimerkeissä:
Räätälöidyissä toteutuksissa olemme hyödyntäneet Raphaël-nimistä JavaScript-kirjastoa, joka sopii hyvin tarpeisiimme, koska se toimii myös vanhemmilla Internet Explorer -selaimilla. Tavoitteemme kun on, että Yle Uutiset ja sen sisällöt toimivat mahdollisimman laajasti kaikilla laitteilla.

Interaktiivisten ja klikattavien karttojen lisäksi olemme julkaisset staattisia kuviin perustuvia karttoja kuten tässä euroviisupisteiden jakautumista maiden välillä kuvaavassa jutussa.

Se mitä työkalua ja ratkaisua kulloinkin hyödynnämme ohjaa ensisijaisesti se minkälaista dataa olemme visualisoimassa. Joskus toiset työkalut soveltuvat paremmin toisille datoille. Esimerkiksi käsiteltäessä suuria datamassoja on Google Maps usein toimiva työkalu.

Välillä eteen tulee tilanteita, jolloin meillä on olemassa tarvittava karttapohja (kuten sairaanhoitopiirien rajat) valmiina vain SVG-toteutusta varten, joka rajaa meitä käyttämästä Google Maps:n kaltaisia palveluita, koska ne perustuvat SVG:n käyttämien pikseleiden sijaan koordinaatistotietoon.



Julkaisimme viime maaliskuussa jutun koskien lakkautettuja kouluja Suomessa vuosina 2006–2012. Jutun taustalla on Tilastokeskukselta tilaamamme kouluaineisto, johon olimme pyytäneet mukaan koulujen paikkatiedot. Ajatuksenamme oli visualisoida lakkautettavat koulut kartalle käyttäen OpenStreetMap-palvelua. (Kuva 2)

Toteutuksesta oli mahdollista tarkastella lakkautettuja kouluja Suomen kartalta valitulla aikajaksolla ja oppilasmäärällä. (Kuva 2)
Saimme datan Excel-tiedostona, johon oli listattu kaikki lakkautetut koulut vuosittain yhdessä koordinaattitietojen kanssa. Ongelma oli, että koordinaattitiedot olivat kartastokoordinaattijärjestelmässä (KKJ), joka on erityisesti Suomeen kehitetty koordinaattijärjestelmä, jota edellä mainitut Google Maps ja OpenStreetmap-palvelut eivät tue.

KKJ jakaa Suomen neljään projektiokaistaan ja projektiokaistoilla on oma koordinaatistonsa. Projektiokaistojen tehtävä on käsittääkseni poistaa maan kaarevuudesta aiheutuvaa vääristymää. (Kuva 3)

KKJ:ssa Suomi on jaettu neljään projektiokaistaan. (Kuva 3)
KKJ-järjestelmän eri projektiokaistojen käyttäminen on siinä määrin monimutkaista etenkin rajakohdissa, että siitä on kehitetty yksinkertaistettu versio nimeltään yhtenäiskoordinaatistojärjestelmä (YKJ).

YKJ tunnetaan myös nimellä KKJ3, koska se vastaa kartastokoordinaattijärjestelmän projektiokaistaa kolme jatkettuna itään ja länteen niin, että se kattaa koko Suomen. YKJ-koordinaateille on ominaista, että kolmoskaistalle sijoittuviin koordinaatteihin ei lisätä alkuun projektiokaistan merkitsevää numeroa kolme.

YKJ-koordinaatit ovat siis muotoa:
  • p=6700000, i=3500000
tai lyhyemmin muotoa:
  • 6700000, 3500000.
Itäinen koordinaatti lasketaan metreinä keskimeridiaanille ja pohjoinen koordinaatti kertoo matkan päiväntasaajalta pohjoiseen.

Kuten sanottua ongelma KKJ- ja YKJ-koordinaatistoissa on, etteivät kartastopalvelut tue niitä. Esimerkiksi Google Maps tukee GPS:lle kehitettyä WGS84-koordinaatistojärjestelmää, ja tämän vuoksi meidän täytyi muuntaa koordinaattien järjestelmä.

Googlen avulla löysin Luonnontieteellisen keskusmuseon ylläpitämän palvelun nimeltä Luomus, joka mahdollistaa koordinaattijärjestelmien välisen muunnoksen. Palveluun on mahdollista syöttää muunnettavat YKJ:n mukaiset itä- ja pohjoiskoordinaatit, jonka jälkeen palvelu palauttaa muunnoksen tuloksen.

Esimerkiksi kysely http://www.luomus.fi/projects/coordinateservice/?orig_system=ykj&north=6982696&east=3541961 palauttaa vastauksen:

<CoordinateData>
<result>
<new_system>etrs89</new_system>
<north>62.94538003831</north>
<east>27.823170453332</east>
</result>
<orig_system>ykj</orig_system>
<version>2.0</version>
<disclaimer>
This is coordinate translation system provided by Finnish Museum of Natural History (FMNH). Copyright FMNH and National Land Survey of Finland. FMNH makes best effort to keep the data and conversions as accurate as possible.
</disclaimer>
</CoordinateData>


Vastauksen kohdista <north>62.94538003831</north> ja <east>27.823170453332</east> ovat luettavissa annettuja YKJ-koordinaatteja vastaavat WGS84-koordinaatiston mukaiset koordinaatit.

Muunnettavia koordinaattitietoja minulla oli 26 185 Excel-rivin edestä, joten rakensin Python-ohjelmointikielellä yksinkertaisen koodinpätkän, joka automatisoi tämän muunnostyön. Toteutus on saatavilla kirjoituksen lopusta. (Kuva 4)

Tekemäni koodi muunsi YKJ-koordinaatistossa olleet tasokoordinaatit WGS84-koordinaatissa oleviksi maantieellisiksi koordinaateiksi. (Kuva 4)
Mikä on kuitenkin myös luettavissa vastauksesta on kohta <new_system>etrs89</new_system>. Eli kohdejärjestelmä ei tässä siis olekaan WGS84 vaan ETRS89. Tästä seuraavaksi.



Käsiteltäessä karttatietoa koordinaatistojärjestelmät eivät ole ainoa huomioitava asia vaan koordinaatit voidaan eri järjestelmien lisäksi esittää myös eri formaateissa yhden järjestelmän sisällä. Yleisiä esitysformaatteja ovat ainakin tasokoordinaatit ja maantieteelliset koordinaatit. YKJ- ja KKJ-koordinaatit ilmoitetaan kokemuksieni mukaan yleisimmin tasokoordinaatteina kun taas Google Maps tukee maantieteellisiä koordinaatteja.

Ero tasokoordinaattien ja maantieteellisten koordinaattien välillä on esitystapa. Tasokoordinaatit kertovat matkan pohjoiseen ja itään kun maantieteelliset koordinaatit kertovat leveys- ja pituuskoordinaatit. Tasokoordinaatit ovat siis kokonaislukuja ja maantieteelliset koordinaatit asteita.

Koordinaatistoformaatteihin ja niiden muunnoksiin pääsin tutustumaan kun teimme äskettäin jutun painorajoitettavista silloista Suomessa. Saimme Liikennevirastolta tiedot 391:stä tulevaisuudessa uuden painorajoituksen saavasta sillasta ja mukana olivat siltojen paikkatiedot. Paikkatiedot olivat saamassamme Excel-tiedostossa ETRS89-koordinaatiston suomalaisen EUREF-FIN-nimisen projektion mukaisia. ETRS89-koordinaatit vastaavat käytännössä WGS84-koordinaatteja (ero on alle metrin).

Koordinaattitiedot olivat kuitenkin tasokoordinaatistoformaatissa, jotka eivät tietääkseni ole tuettuja Google Maps -työkalussa. Tässä tapauksessa minun ei kuitenkaan tarvinnut muuntaa koordinaattijärjestelmää toiseen vaan kuten edellä vaan vaihtaa vain koordinaattien esitystapa. Luomus.fi-palvelusta ei harmikseni löytynyt työkaluja formaattimuunnoksiin, mutta löysin ratkaisun Karttapaikka.fi-palvelusta Juho Salmisen avustuksella.

Karttapaikka.fi-palvelusta löytyvän Karttapaikka-nimisen työkalun avulla on mahdollista tehdä monipuolisesti erilaisia koordinaatteihin liittyviä muunnoksia. Palveluun voi syöttää koordinaatteja niin taso- kuin maantieteellisessä formaatissa, jonka jälkeen palvelu palauttaa tiedot kattavasti. Tarjolla ovat kaikki Suomessa yleisesti käytetyt koordinaatistojärjestelmät ja -formaatit.

Tein myös tässä tapauksessa samanlaisen yksinkertaisen koodinpätkän, jolla automatisoin formaattimuunnoksen tekemisen kaikille hallussani olleille koordinaateille. Tämäkin toteutus on saatavilla kirjoituksen lopusta. (Kuva 5)

Tekemäni koodi muunsi kaikki painorajoitettujen siltojen tasokoordinaatit maantieteellisiksi koordinaateiksi. (Kuva 5)
Itseasiassa ensimmäisessäkin esimerkissä lähdeaineistomme oli aluksi tasokoordinaatistoformaatissa. Eli Luomus.fi-palvelu teki itseasiassa muunnoksen niin koordinaattijärjestelmän kuin myös koordinaattiformaatin osalta.



Yhteenvetona voitaneen todeta, että paikkatieto ja sen esittäminen on melko moninaista, mutta kokemuksieni mukaan Suomessa paikkatietodata julkaistaan useimmin tasokoordinaatteina joko YKJ- tai KKJ-järjestelmässä, jotka siis ovat hankalia käytössä olevien karttapalveluiden kannalta.

2000-luvulla Suomessa on pyritty siirtymään ETRS89-järjestelmään, mutta esimerkiksi Tilastokeskuksen ruututietokanta on siirtynyt siihen vasta vuonna 2011. Suunta on kuitenkin kohti ETRS89:ää, joka vastaa siis melkein WGS84-järjestelmää. Eli ETRS89-koordinaatteja on mahdollista käyttää esimerkiksi Google Maps:ssä kunhan ne vain ovat maantieteellisessä formaatissa.



Tämän kirjoituksen myötä julkistan Yle Plus -GitHub-repositorion. Repositorion tarkoitus on toimia julkaisukanavana Yle Uutisten ja ainakin PlusDeskin tekemille avoimille lähdekoodille. (Kuva 6)

Tulemme käyttämään Yle Plus-repositoriota toteuttamiemme koodien julkaisemiseen avoimena lähdekoodina. (Kuva 6)
Ensimmäisinä työkaluina julkaisemme tässä kirjoituksessa mainittujen koordinaattimuunnosten lähdekoodit, jotka siis mahdollistavat YKJ-tasokoordinaattien muuntamisen WGS84-järjestelmän maantieteellisiksi koordinaateiksi sekä ETRS89-tasokoordinaattien muuntamisen maantieteellisiksi koordinaateiksi.

Lähdekoodit julkaistaan CC-BY-SA-lisenssillä, joka mahdollistaa koodien hyödyntämisen niin yksityisessä kuin kaupallisessakin käytössä. Ainoat rajoitteet ovat, että käytettäessä alkuperäinen lähde (Yle Uutiset) on mainittava ja että kaikki mahdolliset jatkototeutukset on jaettava samalla lisenssillä.

perjantai 8. maaliskuuta 2013

Suomen kuntien koordinaattitiedot

Olemme tekemässä PlusDesk:ssä juttua, johon tarvitsemme Suomen kuntien sijaintien koordinaattitiedot. Sijaintitiedot ilmaisevat kaupungin sijainnin maapallolla korkeus- ja leveyskoordinaattien avulla. Nämä tiedot ovat saatavilla Wikipedia:n artikkelista: Luettelo Suomen kuntien koordinaateista. Kiitos Teemu:lle vinkistä.

Wikipedia-artikkelin data ei ole kuitenkaan nykyisen kuntatilanteen mukaista ja tarvitsimme nimenomaan vuoden 2013 kuntatilanteen mukaiset koordinaattitiedot (vuonna 2013 Suomessa on 320 kuntaa).

Olisin voinut rajata Wikipedia:sta löytyneen koordinaattisisällön vastaamaan nykytilannetta, mutta päädyin sen sijaan ottamaan Google Chrome:n Scraper-lisäosalla nykyisen kuntalistauksen toisesta Wikipedia-artikkelista nimeltä Luettelo Suomen kunnista ja syöttämään tiedot GPS Visualizer -palveluun. Palvelu geokoodaa annetut osoitetiedot WGS84-muodossa oleviksi korkeus- ja leveyskoordinaateiksi valitun rajapinnan avulla (Yahoo tai Google). Syötin kuntien nimet palveluun muodossa "{Kuntanimi}, Finland", jotta välttyisin sekaannuksilta mahdollisesti muualta maailmasta löytyviin vastaavan nimisiin paikkoihin. (Kuva 1)

GPS Visualizer -palvelu hyödyntää avoimia rajapintoja osoitetietojen geokoodauksessa. (Kuva 1)
Keräämäni data, jonka oikeellisuuteen kannattaa suhtautua varauksella, on saatavilla täältä:
Tulen tarkistamaan datan oikeellisuuden vielä myöhemmässä vaiheessa, mutta yksittäiskokeilujen osalta koordinaattitiedot näyttäisivät pitävän paikkansa. Keräämäni datan avulla loin sitten pudotusvalikon, josta käyttäjän on mahdollista valita haluamansa kunta, jonka jälkeen ohessa oleva kartta tarkentuu kyseisen kunnan kohdalle. (Kuva 2)

Käyttäjän on pudotusvalikosta mahdollista tarkentaa haluamaansa kuntaan. (Kuva 2)
Pudotusvalikon HTML-koodi näyttää siis yksinkertaisuudessaan seuraavalta:

<select id="selector">
   <option value="">Valitse kunta</option>
   <option value="">- - - - </option>
   <option data-lat="61.167408" data-lon="23.867642">Akaa</option>
   <option data-lat="63.00285" data-lon="23.803185">Alajärvi</option>

   <option data-lat="64.158003" data-lon="24.299759">Alavieska</option>
   <option value="...">...</option>
</select>


Kyseistä HTML-koodia en tallenna sellaisenaan sivun lähdekoodiin vaan luon valikon lennossa oheisella JavaScript-koodilla.

$.ajax({
  url: jsonUrl + '/data/kunnat.json',
  method: "GET",
  dataType: "json",
  success: function(data) {
    $.each(data, function(index, municipality) {
      $('#selector').append('<option data-lat="' + municipality.lat + '" data-lon="' + municipality.lon + '">' + municipality.m + '</option>');
    });
  }
});


Tämä pienentää sivun kokoa eli painoa ja pienentää siten latausaikaa, mutta toisaalta toki lisää selaimelle aiheutuvaa prosessointi kuormaa. Sivun pieni paino on kuitenkin tärkeämpää etenkin mobiilikäytössä. Nykyisille selaimille ja laitteille kyseisenkaltainen prosessointi on hyvin kevyttä.

(Muokkaus klo 8:26: JSON-muodossa data on ~16 kilotavua kun vastaava HTML-muotoinen data olisi ollut ~21 kilotavua. Ero on siis etenkin prosentuaalisesta näkökulmasta merkittävä. Toki myös pyyntöjen määrä olisi hyvä minimoida kuten @Duukkis osuvasti huomioi.)

Koodissa näkyvä kunnat.json on luotu aiemmin mainitusta Google-dokumentista lataamalla se .csv-muodossa koneelle ja syöttämällä tämä .csv-muotoinen data Mr. Data Converter -palveluun. JSON on yleisesti verkossa tiedon välitykseen käytetty tiedostomuoto. Kuntien koordinaattitiedot sisältävä .json-tiedosto näyttää seuraavalta:

{"m":"Akaa","lat":61.167408,"lon":23.867642},
{"m":"Alajärvi","lat":63.00285,"lon":23.803185},
{"m":"Alavieska","lat":64.158003,"lon":24.299759},
{"m":"Alavus","lat":62.586607,"lon":23.617282},
...


Tässä hieman valoa siihen miten käsittelen ja hyödynnän dataa. Julkaisemme itse toteutuksen, jossa käytämme tätä pudotusvalikkoa toivottavasti ensi viikon aikana, joten siitä kuulette vasta sitten.

keskiviikko 27. helmikuuta 2013

Euroopan maiden rajat KML-formaatissa

Kun on kertaalleen päässyt vauhtiin ei kannata lopettaa. Eli tässä aikaisempien Suomen kuntarajat 2013 ja Suomen maakuntarajat datojen rinnalle Euroopan maiden rajat KML-formaatissa:
Rajat eivät noudattele kovinkaan tarkasti rantaviivoja, mutta kaikki maat ovat silti helposti tunnistettavissa ja käytettävissä esimerkiksi datajournalistisissa projekteissa. (Kuva 1)

Euroopan maiden rajat KML-formaatissa. (Kuva 1)
Mukana on 45 maan rajat, joka täsmää Wikipedian "Euroopan valtion" -luokassa olevien sivujen lukumäärään kun huomioidaan, että Venäjän rajat puuttuvat tästä datasta.

tiistai 26. helmikuuta 2013

Maakuntarajat KML-formaatissa

Kirjoitin noin viikko sitten kirjoituksen "Suomen kuntarajat 2013 KML-formaatissa". Tässä olisi nyt jatkoa maakuntarajojen näkökulmasta:
Maakuntarajat eivät ole rantaviivaleikattua, joten Suomi piirtyy kartalle hieman tavallista pyöreämpänä (Kuva 1). Tällä ei kuitenkaan datan käsittelyn kannalta ole sinällään merkitystä vaikka toki visuaalisesti kyllä.

Suomen maakuntarajat visualisoituna Google Fusion Tables:ssa. (Kuva 1)
Data pitää sisällään rajojen lisäksi:
  • Maakuntanumeron
  • Maakunnan suomenkielisen nimen
  • Maakunnan ruotsinkielisen nimen
Toivottavasti tästä on jollekin apua.

Disclaimer: en ole varmistanut ovatko maakuntarajat muuttuneet vuoden 2013 kuntaliitosten myötä.

maanantai 18. helmikuuta 2013

Suomen kuntarajat 2013 KML-formaatissa

Olemme pyörittäneet PlusDesk:ä (eli Yle Uutisten uutta nettisisältöjä tuottavaa toimistusta) nyt muutaman viikon ajan ja olemme tehneet muun muassa useita erilaisia karttoihin perustuvia juttuja ja visualisointeja:
Suomalaisessa kontekstissa karttoihin liittyvä pulma ovat miltein vuosittain muuttuvat kuntarajat. Meille ei ole vielä tullut eteen juttua, jossa meillä olisi ollut vuoden 2013 dataa ja siten tarvetta kyseiselle karttapohjalle, mutta otimme kuitenkin tehtäväksemme muuntaa Maanmittauslaitoksen tarjoama avoin kuntarajadata Google:n tuotteissa käytettyyn .kml-formaattiin. (Kuva 1) 
    Suomen kuntarajat 2013 data pitää rajojen lisäksi sisällään kunnan nimen suomeksi ja ruotsiksi. (Kuva 1)
    Tämä data on nyt tässä kaikkien teidän hyödynnettävissä tästä:
    Muunnoksesta kunnia kuuluu etenkin PlusDesk:n graafikko Juha Rissaselle, joka teki muunnoksen  Quantum GIS -ohjelmistolla näiden ohjeiden avulla. Kuntarajat ovat rantaviivaleikatut ja rantaviivassa esiintyy tiettyä epätarkkuutta johtuen valitusta mittakaavasta. Tässä myös vuosien 2011 ja 2012 kuntarajat samaisessa .kml-formaatissa.
    Vuoden 2011–2012 kuntarajadata ei ole rantaviivaleikattu.

    Toivottavasti näistä on apua.

    ps. SVG-formaatissa Suomen kuntarajat ovat saatavilla ainakin Wikipedia:sta kuitenkin niin, ettei rajoilla ole kuntatietoja. 

    keskiviikko 31. lokakuuta 2012

    Kun datajournalismi tapettiin

    Tämä on tarina siitä kun datajournalismi meni pieleen.

    Oli perjantai 12.10. ja päätimme Svenska Yle:n suunnittelijan ja kollegani Mårten Seiplax:n kanssa ottaa irtioton muista töistä ja tuottaa datajournalismia toteuttamaamme Maktbasen-järjestelmään perustuen. (Kuva 1)

    Perjantaisin pyrimme ottamaan aikaa projekteille, jotka muuten jäävät työsyklin ulkopuolelle. (Kuva 1)
    Maktbasen on Svenska Yle:n toteuttama järjestelmä, joka pitää sisällään kaikkien suomenruotsalaisten kuntien (n. 30kpl kun Ahvenanmaa lasketaan ulkopuolelle) kuntavaltuutettujen tiedot (Kuva 2). Keräämämme tietokanta yhdistää tietoja n. 1 400:sta kuntavaltuutetusta pitäen sisällään mm. heidän kytköksensä yrityksiin, jotka olemme saaneet Asiakastiedolta.

    Suomenruotsalaiset kunnat löytyvät Pohjanlahden rannikolta sekä Suomenlahden rannikolta. (Kuva 2)
    Maktbasen on ollut iso satsaus Svenska Yle:ssä ja olimme siten motivoituneita hyödyntämään järjestelmään keräämäämme tietoa (Kuva 3). Ajatuksenamme Mårtenin kanssa oli, että olisi kiva nähdä minkälaisia eroja suomenruotsalaisten alueiden välillä on katsottaessa niiden kunnanvaltuustoja. Esimerkiksi oma hypoteesini oli, että RKP:n kannatus on suhteellisesti suurempaa Pohjanmaalla verrattuna taas esimerkiksi pääkaupunkiseutuun ja Uudenmaan-alueeseen.

    Maktbasen listaa suomenruotsalaisten kuntapoliitikkojen tietoja sisältäen heidän kytkökset yrityksiin sekä erilaista kuntiin liittyvää tietoa. (Kuva 3)
    Menetelmämme tuon eron esiintuomiseen oli yhdistää alueiden kunnanvaltuustot yhteen. Alunperin ajatuksenamme oli verrata keskenään pelkästään Pohjanlahden ja Suomenlahden rannikon alueita, mutta päädyimme jakamaan Suomenlahden rannikon alueen useampaan eri osa-alueeseen samalla jakoperiaatteella kuin aluetoimituksemmekin toimii (Kuva 2). Samalla saimme alueista asukasluvullisesti enemmän keskenään samankaltaisia (toki edelleen pääkaupunkiseutu on omassa luokassaan). Alueiksi muodostuivat siten:
    Toteutimme alueiden kuntavaltuustojen yhdistämisen yksinkertaisesti laskemalla alueiden kuntien valtuustot yhteen. Laskimme esimerkiksi Pohjanmaalla SDP:n valtuutettujen määrän yhteen ja vertasimme tätä lukua alueen kuntien valtuustopaikkojen yhteismäärään. Tällä tavalla laskimme alueittain kaikille puolueille prosentuaaliset valtuustopaikkojen osuudet. Lopputulos vastasi sitä, että kunnat toimisivat ns. kunnanosavaltuustoina koko alueen valtuustolle. Kunnat käyttämässämme mallissa olivat siis edelleen itsenäisesti äänestäneet omat valtuustonsa, mutta nämä valtuustot yhdistettiin osaksi koko alueen valtuustoa. Menetelmä vastaa periaatteeltaan tapaa, jolla eduskunta muodostetaan vaalipiireissä valituista ehdokkaista.

    Ajatuksenamme oli, että Svenska Yle:n aluetoimitukset voisivat tehdä työkalumme avulla omia juttuja ja pohtia asiaa rinnastaen omaan alueensa. Mielestämme esimerkiksi, että nykyisin eduskunnan 3. suurin puolue Perussuomalaiset sai tällä tavalla laskettuna Pohjanmaalla vähemmän valtuustopaikkoja kuin paikallinen "Oravais – ändring nu!" -puolue, oli erittäin mielenkiintoinen yksityiskohta.

    Julkistimme visualisoinnin sisäisesti (Vis 1) ja siitä kirjoitetun esimerkkijutun maanantaina 14.10., jonka perusteella uutistoimitus teki siitä oman versionsa. Juttu julkaistiin verkossa myöhemmin maanantain aikana.

    Toteutus oli interaktiivinen ja mahdollisti tietojen tarkastelemisen alueittain. (Vis 1)
    Jotain meni kuitenkin pieleen. Artikkeli keräsi nopeasti paljon hämmentyneitä ja kriittisiä kommentteja, jotka koskivat etenkin pääkaupunkiseutua. Analyysin sanottiin olevan väärä, epäselvä ja koko artikkelin poistamista vaadittiin. Pyrimme toimituksessa vastaamaan tähän kritiikkiin mahdollisimman avoimesti ja kertomaan siitä mistä kartassa oli kyse.

    Ongelma oli, että kun puolueiden kannatus alueellisesti määräytyi edellä kuvatulla tavalla syntyi alueen valtuustossa vääristymä, joka johtuu siitä, että valtuuston koko ei kasva lineaarisesti suhteessa kunnan asukaslukuun. Esimerkiksi Kauniaisissa on runsaat 8 800 asukasta ja valtuustossa istuu 36 valtuutettua. Tällöin Helsingissä, missä asukkaita on n. 600 000, tulisi valtuuston koon olla runsaan 2 400 valtuutetun suuruinen. Helsingin valtuustossa istuu kuitenkin vain 86 valtuutettua, jolloin nähtiin, että tekemämme analyysi antoi pääkaupunkiseudulla Kauniaisten äänestäjille liian suuren painon.

    Ongelma oli, että emme pystyneet tarpeeksi selkeästi kommunikoimaan toisaalta toimitukselle, joka julkaisi artikkelin ja toisaalta siksi artikkelin kautta lukijoille mistä kartassa oli kyse. Tilannetta ei auttanut, vaikka julkaisimme alkuperäisen datan sisältävän Google-dokumentin avoimesti uutisen yhteydessä sekä selitimme vielä kommenteissa mistä jutussa oli kyse. Toteutus nähtiin lopulta liian epäselvänä ja se poistettiin sivuilta keskiviikon aikana.



    Projektista jäi kuitenkin kokonaisuutena hyvin positiivinen jälkimaku. Opimme niin tekniikan ihmisinä journalistisista prosesseista kuin journalisteina siitä mitä datalla on mahdollista tehdä ja siitä miten dataa on mahdollista tulkita väärin. Opimme, että jatkossa kun keksimme vastaavanlaisia ideoita viemme projektin läpi paljon tiiviimmässä yhteistyössä eri osaajien kanssa ja harkitsemme tarkemmin onko toteutus relevantti sekä onko olemassa vaaraa virheellisille tulkinnoille.

    Tulemme toivottavasti lähiaikoina julkaisemaan visualisoinnista päivitetyn version, joka tarkastelee ilmiötä eri näkökulmasta ja jonka olemme suunnitelleet alusta asti yhdessä uutistoimituksen kanssa.