lauantai 13. huhtikuuta 2013

Kuntarajat 2011–2012 leikattuna rantaviivalla KML-formaatissa

Kuukausi pari takaperin kirjoittelin Suomen 2013 kuntarajoista. Tuolloin jaoin Google Fusion Tables dokumentin, joka piti sisällään Suomen kuntarajat vuodelle 2013 KML-formaatissa leikattuna rantaviivalla. Samassa yhteydessä jaoin tiedoston, joka piti sisällään kuntarajat vuosille 2011–2012 samaisessa KML-formaatissa, mutta tässä versiossa kuntarajoja ei oltu leikattu Suomen rantaviivaan. (Kuva 1)

Kun kuntarajat levittyvät merelle näyttää Suomi tavallista muhkeammalta. (Kuva 1)
Sain kollegoiltani Svenska Yle:stä (kiitos Peter Sjöholm ja Alexander Uggla) sittemmin käsiini kuitenkin vuoden 2011–2012 kuntarajat vastaavalla tavalla leikattuna rantaviivaan. (Kuva 2)

Rantaviivaleikatut kuntarajat antavat Suomesta luonnollisemman kuvan. (Kuva 2)
Kuntarajat vuosille 2011–2012 leikattuna rantaviivaan ovat ladattavissa tästä:
Toivottavasti näistä on hyötyä. Ainakin me PlusDesk:ssä käsittelemme vielä usein vuosiin 2011 tai 2012 liittyvää tilastotietoa, koska kuluvan vuoden tilastoja ei vielä useinkaan ole saatavilla.

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

sunnuntai 24. helmikuuta 2013

Datajournalistiset sisällöt

Minulta on usein kysytty kun olen ollut puhumassa datajournalismista, että ovatko Yle:n tekemät datajournalistiset sisällöt löydettävistä jostain kootusti. Tähän asti minulla ei ole ollut antaa hyvää vastausta tuohon kysymykseen, mutta olemme ottaneet asian esille sisäisesti ja meillä on tavoitteena perustaa jonkinlainen säiliö johon laajimmat nettisisällöt olisi jatkossa tarkoitus koota. Toivottavasti saamme jotain tämän suhteen aikaan muutaman viikon sisällä. Siihen asti löydät kaikki jutut joissa minä olen ollut mukana kotisivuiltani löytyvästä portfoliosta:
ja kaikki projektit, joiden tekemiseen PlusDesk on osallistunut löytyvät kootusti Google Drivestä:
Listalta löytyy mm. alkuviikolla A-Studio:n kanssa tehty mielenkiintoinen juttu nuorista eläkeläisistä. Ensi viikolla lista täydentyy muutamalla todella mielenkiintoisella sisällöllä ja ne päivittyvät sitä mukaa kun ne julkaistaan tuohon Google Spreadsheet -dokumenttiin.

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. 

    perjantai 1. helmikuuta 2013

    PlusDesk ja elämää hetkessä

    Olen nyt ollut kaksi viikkoa osa Yle Uutisten PlusDesk-toimitusta. PlusDesk on Uutis- ja ajankohtaisorganisaatioon perustettu toimitus, jonka tehtävä on auttaa mm. uutis- ja urheilutoimituksia netin omaisten sisältöjen toteuttamisessa. Ajatuksena on, että PlusDesk yhdessä toimituksien kanssa tuottaa netinomaista sisältöä netin ehdoilla. Tarkoitus ei siis ole, että vastuu nettijuttujen tekemisestä jää pelkästään PlusDesk:n vastuulle.

    Tiimimme kuuluu kaksi tuottajaa (Juho Salminen ja Mika Pippuri), kolme graafikkoa (Juha Rissanen, Stina Tuominen ja kolmas vielä vielä nimeämätön henkilö) sekä yksi toimittaja/datajournalisti eli allekirjoittanut. Toimintamme on orientoitumisviikon jälkeen tällä viikolla pyörähtänyt käyntiin ihan juttujenkin toimesta ja olemmekin ehtineet olemaan mukana yhteensä viiden eri julkaistun jutun teossa. Yhtenä tavoitteenamme on avata prosessejamme mahdollisimman paljon niin sisäisesti kuin talon ulkopuolellekin ja tässä kuvaus eräästä jutusta, jolle oli ominaista etenkin eläminen ajassa.



    Perjantaiaamuna Yle Uutiset uutisoi, että brittiläinen professori Nick Trefethen oli kehittänyt uuden laskukaavan laajalti painonhallinnassa käytetyn painoindeksin laskemiseen. Verrattuna alkuperäiseen uusittu indeksi painottaa hieman eritavalla laskennassa käytettäviä ihmisen pituutta ja painoa. Alkuperäinen Adolphe Quetelet keskimä malli laskee painoindeksin niin, että paino jaetaan pituuden neliöllä:

    paino (kg) / pituus (cm) * pituus (cm)

    Trefethen:n kehittämässä mallissa paino kerrotaan 1,3:lla ja pituus korotetaan potenssiin 2,5. Kaava on siis muotoa:

    1,3 * paino (kg) / pituus (cm) ^2,5

    Toinen tuottajistamme Mika Pippuri keksi puolenpäivän aikaan, että voisimme pikaisesti kyhätä tähän uuteen malliin perustuvan laskentakoneen, jonka avulla lukijat voisivat nopeasti laskea oman "uuden" painoindeksinsä ja verrata sitä vanhaan. (Kuva 1)

    Kuvankaappaus artikkeliin upotetusta painoindeksikoneesta. (Kuva 1)
    Innostuinkin ideasta siinä määrin, että jätin työnalla olleen kiireettömämmän projektin kesken ja lähdin toteuttamaan painoindeksikonetta. Intuitioni oli lähteä toteuttaa HTML-muotoista lomaketta ja sille PHP-käsittelijää, joka nappaisi lomakkeelta lähetetyt tiedot ja palauttaisi käyttäjälle vastauksen. Mika kuitenkin löysi valmiin JavaScript-pohjaisen koodin pätkän painoindeksin laskentaan, joka ohjasi minut toteuttamaan laskurin JavaScript:llä. JavaScript toteutus oli myös lähtökohtaisesti parempi, koska se ei pakottanut käyttäjää lataamaan sivua uudelleen ja oli siten mukavampi käyttää. Jälkikäteen hieman ärsyttää, että lähtökohtani ei ollut JavaScript-pohjainen ratkaisu, mutta tämä pistettäköön perjantain ja erittäin kiireisen viikon piikkiin.

    Tämänkaltaiset erikoistoteutukset viemme Yle Uutisten sivuille ns. ulkoisina upotuksina. Toteutuksien koodit sijoitamme erilliseen ympäristöön käyttämämme Escenic-järjestelmän ulkopuolelle ja tuomme ne Escenic:iin ulkoisena sisältötyyppinä. Ulkoinen sisältötyyppi määrittelee itselleen kolme resurssia:
    • HTML tai PHP resurssi
    • CSS-resurssi(t)
    • JavaScript-resurssi(t)
    Tämä ulkoinen sisältötyyppi on mahdollista liittää normaaliin uutisartikkeeliin samaan tapaan kuin esimerkiksi kuva. Samoja ulkoisia sisältötyyppejä on mahdollista käyttää useaan kertaan, mutta tällä hetkellä ulkoinen sisältö voidaan sijoittaa vain joko artikkelin alkuun tai loppuun. Tällä samalla tekniikalla tuomme järjestelmään myös esimerkiksi Google:n sisällöt kuten kartat (Google Maps) ja lomakkeet (Google Form).

    Toimituksellisesti teimme vielä sellaisen päätöksen, että sijoimme painoindeksikoneen erilliseen artikkeliin sen sijaan, että olisimme päivittäneet sen osaksi aiheesta jo kirjoitettua artikkelia. Näin saimme toteutuksellemme paremman näkyyden, koska saavutimme paremmin myös ne käyttäjät, jotka olivat jo lukeneet alkuperäisen aamulla julkaistun jutun.

    Painoindeksikone nousikin nopeasti sivuston luetuimmaksi jutuksi ja piti paikkansa aina siihen asti kun ehdin poistua toimistolta. Vertailuluku seuraavaksi luetuimpaan juttuun viimeisimmän tunnin aikajaksolla mitattuna oli sen suuntainen, että tämä painoindeksikoneemme oli n. kolme kertaa luetumpi kuin koko yle.fi-domainin seuraavaksi luetuin sivu.

    Selkeimpänä kehitysideana tuli itselleni mieleen, että olisi ollut kätevää ja käyntimäärien kannalta positiivista jos painoindeksikoneen antaman tuloksen olisi voinut jakaa Facebook:ssa ja muissa palveluissa. Koimme kuitenkin, koska kello alkoi lähennellä iltapäivää, että on tärkeämpää saada toteutus vain mahdollisimman nopeasti julki. Seuraavalla kerralla kun prosessit ovat muutenkin suoraviivaistuneet varmaankin otamme myös tämän aspektin huomioon tämänkaltaisissa toteutuksissa.

    Edit: Muokatta Stina Tuomisen nimi oikeaksi ja lisätty linkki JavaScript-koodiin, jonka pohjalta toteutusta lähdettiin tekemään.