fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi et fi fi fi fi fi fi fi fi fi ca fi fi fi fi
Kuntakartta — data ja koodi
Kuntakartta.org on rakennettu hyödyntäen avointa dataa ja koodia. Avoin data on peräisin tilastokeskukselta, Suomen kuntaliitosta ja Maanmittauslaitokselta.
Koodi on rakennettu avoimen Javascript karttamoottorin, LeafLetin päälle.
Data ja koodi löytyvät GitHubista ja ovat helposti uudelleenkäytettävissä muissa sivustoissa. Komponentilla on pieni API rajapinta jolla sen toimintaa ohjataan. Alla muutama esimerkki.
Kuntien rajakoordinaatit ovat alunperin peräisin Maanmittauslaitoksen avoimesta datasta jonka YLEn tiimi muunsi Googlen KML formaattiin ja julkisti blogissaan. Kiitokset heille.
Minä työstin edelleen KML-tiedoston avoimeen GeoJSON formaattiin joka on yleistymässä kovaa vauhtia sen helppokäyttöisyyden vuoksi web ympäristössä.
Kaikki Suomen 320 kuntaa GeoJSON muodossa löytyy GitHubista. Suurimmassa tiedostossa, kuntarajat.geoson, 2.2MB, on kaikki YLEn KML-tiedostoon keräämät pienet saaretkin. Polygonien lukumäärä on tässä hurjat 4763 kappaletta. Tämän tiedoston käyttö kartassa onnistuu, mutta kartta on suhteellisen hidas. Kartan nopeuttamiseksi riisuin skriptillä pienemmät saaret pois, tiedosto kuntarajat-ok.geoson, 1MB (gzipattuna 332KB), jolloin polygonien lukumääräksi tuli 421 kappaletta. Tämä tiedosto on käytössä tässä palvelussa.
Samasta hakemistosta löytyy esimerkkinä myös GeoJSON vain uudenmaan ja varsinaissuomen kunnista, kaikilla niiden saarilla.
Tilastodata on haettu kuntaliitosta ja tilastokeskukselta .csv ja .xsl formaatissa ja muunnettu Python-skriptillä sopivaan JSON muotoon. Raaka-data ja conv.py skripti löytyvät GitHubista.
Jokaiselle vuodelle ja datatyypille on yksi datatiedosto jossa on yksi JSON-olio joka sisältää yhden arvon jokaiselle kunnalle. Kunnat identifioidaan kuntaliiton antamilla koodeilla joihon on liitetty etuliite "area". Tässä esimerkkinä vuoden 2014 tuloverodata.
kuntakartta.org palvelussa on muutama hyödyllinen tilasto. Jos joku innostuu luomaan lisää dataa, otan niitä vastaan JSON muodossa. Uuden datan pohja löytyy tässä. Jokainen oikeanpuolimmainen arvo, eli kunnan nimi, korvataan data-arvolla.
Omien datatiedostojen kokeilu on helppoa: vedä ja pudota tiedosto kartan päälle. (Ei toimi IE9 tai vanhemmassa selaimessa.)
Väritysrutiini on todennäköisesti varsin primitiviinen, joten viisaammat voivat kehittää sitä paremmaksi.
Toisin kuin Google Maps, Leaflet sallii vapauksia taustan suhteen. Tausta voi olla tyhjä tai sinne voidaan laittaa vain staattinen kuva. Tällä voidaan keskittää huomio vain kuntapolygoneihin. Tämä ratkaisu toimii myös offline tilassa koska palvelin-riippuvuutta ei ole.
Varsinaisista karttapalvelimista sivulla demotaan MapQuestia, OpenStreetMapia ja kartat.kapsi.fi palvelua. kartat.kapsi.fi on palvelu joka jakaa Maanmittauslaitoksen avointa datamateriaalia sopivassa muodossa tiiliserverin kautta. Suurta kaistaa kannattaa välttää koska kyse on harrastajapalvelusta.
Esivalittu karttatausta on MapQuest koska se tarjoaa eniten ilmaista kaistaa.
Esimerkin vuoksi voi myös valita staattisen kuvan. Kuva on koostettu käsin Maanmittauslaitoksen karttadatasta kartat.kapsi.fi palvelusta.
Taustakartan päälle polygoneja värittävä koodikomponentti on mapcolorizer.js.
Komponentin käyttö omalla sivulla on helppoa. Lue GitHubin englanninkieliset ohjeet ja katso alla olevat Suomi esimerkit miten komponenttia voi soveltaa.
Esimerkki 1: Suomen kunnat, tulovero 2014
Suomen kunnat ja niiden tuloveroprosentit vuonna 2014. Taustakarttana ilmainen MapQuest.
Esimerkki 2: Uusimaa omalla datalla ja värillä
Uudenmaan kunnat, oma datasetti ja oma väriskaala. Nimet näytetään kartalla. Ei taustakuvaa.
Esimerkki 3: Metropolialueen vaihtoehdot
Tässä kuvitteellinen esimerkki pääkaupunkiseudun mahdollisista kuntaliitosselvityksistä. Koko Uudestamaasta valitaan halutut kunnat jotka väritetään omalla värillä asettamalla style_func parametri.
Valitse vaihtoehto: 1, 2 tai 3
Ongelmia voi raportoida GitHubin Issue työkalulla. Tai mieluusti lähetä parannettua koodia kehiin.
Tämän sivun on kehittänyt Tomi Mickelsson.