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

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.

perjantai 6. heinäkuuta 2012

Esittelyssä datajournalistin työkalut, Osa 1

Datajournalismi kuten tekniikka usein vaatii tuekseen oikeat ja tehokkaat työkalut.
Vasarallakin saa laudan poikki, mutta saha toimii tarkoitukseen paremmin.
Ajattelin tuoda esiin viisi sellaista työkalua, joita itse käytän ja joiden käyttämisen koen olevan jokaisen datajournalismista kiinnostuneen opeteltavissa. Aloitan kuitenkin helppokäyttöisimmästä, jotteivät ei-teknisimmät henkilöt putoa heti matkasta.

SharedCount


SharedCount on yksinkertainen palvelu, joka mahdollistaa linkkien sosiaalisen median näkyvyyden tutkimisen. Palveluun on mahdollista linkittää mikä tahansa www-sivun osoite ja palvelu kertoo kuinka monta kertaa sivu on jaettu Facebook:ssa, Twitter:ssä, LinkedIn:ssä, Google+:ssa jne. Esimerkiksi Youtube-videota "The Canucks of Vancouver" on jaettu sosiaalisissa medioissa seuraavasti.

Palvelu on siis hyvin yksinkertainen käyttää ja siihen nähden se tarjoaa hyvin arvokasta tietoa sisältöjen leviämisestä sosiaalisessa mediassa. Sosiaalinen media on tärkeä osa datajournalismia ja siten myös sosiaalisen median toiminnan ymmärtäminen kuuluu siihen tärkeä osana. Toisaalta myös omien blogikirjoitusten ja vastaavien tuotosten leviämisen seuraaminen on SharedCount:n avulla kätevää.

Huomiotavaa etenkin kehittäjille on, että palvelu tarjoaa myös JSON-rajapinnan.

Google Trends


Mentäessä esiteltäviä palveluita eteenpäin tällä helppokäyttöisyysperiaatteella tulee seuraavaksi eteen Google Trends. Google Trends on nimensä mukaisesti Google:n työkalu, jolla on mahdollista tutkia hakusanojen suosiota. Palvelu ei ole kovinkaan tunnettu etenkään verrattuna Google:n muihin tuotteisiin, mutta ehdottomasti tutustumisen arvoinen. Palvelu toimii niin, että hakukenttään syötetään haluttu lista sanoja pilkuilla eroteltuna, jonka jälkeen palvelu kertoo kuinka paljon kyseisiä hakusanoja on Google:n avulla etsitty. Esimerkkinä tein haun suomalaisista kaupunkien nimistä, joissa on 2000-luvulla tapahtunut ampumistapauksia. (Kuva 1)

Suomalaisten kaupunkien hakusanojen suosiossa näkyvät selkeästi traagiset tapahtumat. (Kuva 1)

Google Trends:stä ovat selkeästi nähtävissä ampumistapauksien ajankohdat ja niiden vaikutus hakusanojen suosioon. Mielenkiintoinen kuriositeetti on, että kaupunginnimen suosio hakusanana on pienentynyt vuosien saatossa.

Google Trends on oiva työkalu tarkoitukseensa, joskin siltä ei kovin paljon enempää tule odottaa.

CometDocs


CometDocs:iin törmäsimme tässä blogissa edellisen viestin yhteydessä. Kyseessä on työkalu, joka muuntaa palveluun lähetetyt .pdf-dokumentit helpommin käsiteltäviin Excel tai Word -muotoihin. Palveluun on siis mahdollista lähettää taulukkodataa sisältävä .pdf-dokumentti ja palvelu muuntaa dokumentin parhaansa mukaan taulukkolaskentaohjelmien ymmärtämään .xls-muotoon.

Muunnokset eivät aina ole täydellisiä, koska .pdf-dokumenttien rakenteen tulkitseminen ei ole yksikäsitteistä. Esimerkiksi välilyönnit ja askelsarkaimet (tab) sekoittavat etenkin taulukkodatan tulkintaa. Yksittäisten virheiden korjaaminen jälkikäteen Excel:ssä on kuitenkin nopeampaa kuin koko datan siirtäminen käsin .pdf-dokumentista taulukkolaskentaohjelmaan. Vastaavanlaisia palveluita löytyy Google:lla useita ja myös esimerkiksi Acrobat Reader Pro -versiosta löytyy tämä vastaava toiminnallisuus.

CometDocs-palvelun huonona puolena pitäisin sitä, että palveluun joutuu antamaan sähköpostiosoitteensa, joka ei aina ole järkevää ja tätäkin palvelua käytettäessä suosittelen käyttämään jotain ei-niin-tärkeää sähköpostiosoitetta.

Scraper


Keskusteltaessa datajournalismista kuulee usein puhuttavan erilaisten raapijoiden, skreippereiden ja ryömijöiden toteuttamisesta. Erilaisia ryömijöitä ja keräimiä on tämänkin blogin yhteydessä käsitelty. Keräimet toteuteutaan usein ohjelmoimalla etenkin jos tekijällä on tähän kompetenssia ja kiinnostusta, mutta olemassa on myös työkaluja, joilla tietoa voidaan kerätä Internetistä ilman kovaa insinööritaustaa.

Erittäin näppärä työkalu tiedon keräämiseen löytyy Google Chrome -lisäosana ja on nimeltään Scraper. Scraper:n käyttämiseksi tarvet siis Google Chrome -selaimen, jota suosittelen muutenkin pääasialliseksi selaimeksi kenelle tahansa. Scraper:n asentamisen jälkeen toiminnallisuutta voi käyttää millä tahansa www-sivulla klikkaamalla haluaamaansa kohdetta ja valitsemalla kontekstivalikosta "Scrape Similar...", jonka jälkeen ruudulle aukeavasta ikkunasta ovat nähtävissä kaikki muut sivulta löytyvät vastaavankaltaiset sisällöt (Kuva 2).

Valitsemalla kontekstivalikosta "Scrape similar..." voit hakea ja tallentaa tietoa www-sivulta. (Kuva 2)

Olen itse käyttänyt Scraper:a mm. ihmisten Facebook-kavereiden hakemiseen ja tallentamiseen, koska Facebook ei suoraan tätä toiminnallisuutta tarjoa. Facebook-kavereiden tapauksessa lataan ensin kaikki halutun käyttäjän Facebook-kaverit selaimeni sivulle, jonka jälkeen klikkaan yhtä heistä ja valitsen "Scrape Similar...", jolloin Scraper tunnistaa kaikki sivulta löytyvät vastaavat sisällöt eli juuri nämä halutut kaverit. Scraper:lla haetut tiedot on mahdollista viedä Google Docs -palveluun, josta ne voi ladata edelleen vaikka omalle koneelle Excel:ssä käsiteltäväksi.

Scraper Similar -toiminto ei aina suoraan toimi oikein vaan "polkua", jonka takaa samankaltaista sisältöä haetaan voi joutua muokkaamaan. Haettava sisältö määritellään XPath-kielen (pikaopas) avulla, joka vaatii hieman teknisempää ajattelua, mutta jota ei välttämättä siis tarvitse käyttää jos "Scrape Similar..." -toiminnallisuus osaa suoraan palauttaa haluttavat sisällöt.

Google Fusion Tables


Tämänkaltaista listaa tehdessä ei varmaan voi ohittaa Google Fusion Tables:a. Kyseessä on Google:n toteuttama palvelu, joka on erikoistunut taulukkomuotoisen datan visualisoimiseen sekä eri datakokoelmien yhdistämiseen. Palvelusta löytyvät komponentit mm. perinteisten viiva-, piirakka- ja pylväsdiagrammien tekoon, mutta palvelulla on myös mahdollista luoda kartta- sekä verkostovisualisointeja.

Palvelu toimii osana Google Drive -palvelua ja uusia Fusion Tables -taulukoita pääsee luomaan Uusi -> Lisää -> Taulukko -polun takaa, jonka jälkeen palvelu pyytää lataamaan palveluun taulukkotiedoston. Tietoa voidaan syöttää mm. .csv ja .kml-muodoissa, joista jälkimmäinen on etenkin pinta-alojen esittämiseen tarkoitettu tiedostomuoto. (Kuva 3)

Uusien Fusion Tables -dokumenttien luominen löytyy More -painikkeen takaa. (Kuva 3)

On huomioitavaa, että Fusion Tables on nimenomaan valmiin datan visualisointityökalu. Datan muokkausmahdollisuudet palvelussa ovat hyvin rajalliset, joten data kannattaa rakentaa mahdollisimman valmiiksi paikallisessa taulukkolaskentaohjelmassa tai Google Spreadsheet:ssä.

Loistava itseopiskelumateriaali Google Fusion Tables:n käyttöön (Tekijä: Tommy Kaas).



Tässä muutamia sovelluksia ja ohjelmia, joista itselleni on ollut hyötyä ja joiden käyttäminen ei lähtökohtaisesti vaadi koodaamista. Toivottavasti tästä on hyötyä.