Julkaistu 15.6.2023

Kirppiskartta QGISillä “helposti”

Kesä tulee ja pihakirppikset avautuu. Tässä simppeli esimerkki, miten tehdä kirppisrallikartta QGISillä. Tosin järkytyksekseni tajusin, että joku voi tehdä kirppiskartan ihan vaan printtaamalla internetistä löydetyn random kartan ja piirtämällä siihen päälle tussilla kohteet. Mutta eihän siinä ole mitään järkeä!

1. Osoitteet taulukkoon

Ensinnäkin. Pyydä osoitteet ja osallistujat hallitusti jollain keinolla. Hyvät tsäänssit on, että tietojen kerääjä on kirjannut osoitteet nätisti tai sitten hyvin moninaisilla tavoin, kuten: “Vaapukkatie 679 (Vaapukan kyläkauppa)” tai “Tien päässä” tai Kakkutien x Mansikkatienristeys (pysäkki)“. Esimerkit tietysti täysin tuulesta temmattuja. 

Saat siis oletettavasti joltain tietojen kerääjältä taulukon. Taulukossa on luultavasti myös kaikkea muuta tietoa, ylimääräisiä rivejä ja sisäisiä muistiinpanoja. Eli ensimmäinen tehtävä on siivota osoitelista kaikesta ylimääräisestä tiedosta. Toki jos olisit muistanut, että tämä sama tapahtui viimeisillä kolmella kerralla, niin olisit lähettänyt pyynnön mieluisasta formaatista tietojen kerääjälle jo etukäteen. Mutta koska kyseessä tässä tapauksessa on lähisukulainen, pidämme välit hyvänä ja olemme hiljaa. Ja varaudumme seuraavalla kerralla samaan temppuun.

Tähän temppuun riittää, että taulukossa on seuraavat kentät:

  • NRO (integer), kertoo kirpparikierroksen järjestyksen. Hyvin olennaista, että tietojen kerääjä on pohtinut sen päässään. Toki järjestyksen voisi laskea myös koneellisesti, mutta se on sitten toinen tarina ja vaatii pohdintaa optimoinnista.
  • Osoite (String)
  • Kunta (String)
  • Lisätieto (String), esim. Pysäköintiohjeet yms. 

Niiden osoitteiden osalta, joista et tiedä mitä ne ovat, joudut valitettavasti etsimään kohteen oikean osoitteen jollain karttahakukoneella. Esimerkiksi oletamme, että Kakkutien ja Mansikkatien risteys on oikeasti Mansikkatie 1 tai ainakin lähellä sitä. 

Kun taulukko on eheä, tallennetaan se csv:nä ja erotinmerkiksi puolipiste (;).

2. Osoitteet kartalle

Avataan QGIS ja ladataan Gispon Digitransit-lisäosa. Digitransit-lisäosa hyödyntää kolmea eri osoiterekisteriä. Sen perusosalla voi etsiä yksittäisiä pisteitä, mutta prosessointityökalujen kautta löytyy myös csv-tiedoston syöttö. Huomaa, että nykyisin Digitransit vaatii rekisteröitymisen ja API-avaimen käytön. Siitä lisää aiemmassa blogissa

kirppiskartta

Etsi Digitransit Geocoder -lisäosasta Geocode addresses in a CSV file -työkalu ja täytä tiedot. Muista erotella osoitetta kuvaavat kentät pilkulla ja määritä tutkittava alue esimerkiksi QGIS-projektin laajuuden perusteella:

kirppiskartta

Muista tallentaa väliaikainen taso, jos kaikki näyttää hyvältä. Jos jokin piste ei paikannu oikein, koita vaihtaa käytettyjä osoiterekistereitä. Työkalu hyödyntää kolmea eri osoiterekisteriä ja yleensä parhaimman tuloksen saa käyttämällä kaikkia. Mutta poikkeus sääntöön ja niin edelleen.

3. Taustakartta

Onneksi edellisiltä vuosilta on säästynyt QGIS-projekti, jossa jo tyylitelty Maanmittauslaitoksen maastotietokantaa tähän tarkoitukseen sopivaksi. Jos sellaista ei ole, sen voi hakea joko Geopackagena MML:n Karttapaikasta omalla aluerajauksella tai käyttäen Gispon ATOM-syöteplugaria: NLS GeoPackage Downloader. Molemmista vaihtoehdoista löytyy valmiit visualisoinnit. Tässä on käytetty Gispon lisäosaa, josta jätetty näkyviin esim.  Rakennukset, Meri, Järvi sekä Tieviivat. Visualisoinneissa on valmiiksi määritelty eri zoomitasot, jotta saadaan tehtyä maastotietokannasta peruskartan näköistä tuotetta. Eli jos zoomitasot ei kelpaa, niin säädä valmiiksi tehtyjä Rule-based-sääntöjä. Tässä säädetty myös värejä. Merialueen osalta tehty niin, että myös polygonin viiva on samalla sävyllä, jotta merialueiden viivat eivät näy.

kirppiskartta
kirppiskartta

4. Kohteiden visualisointi

Sitten kun taustakartta on omaan tarkoitukseen sopiva, voidaan lisätä visualisoinnit kohteille. Tässä käyttäisin visualisoinnin sijaan nimiöintejä ja käytetään NRO-kenttää nimiöintien teossa. Tarkkasilmäiset voivat tässä jo nähdä useita ongelmia, mutta ei hätää, korjataan ne myöhemmin.

kirppiskartta

Nimiöintien tyyliä voi muokata sitten millaiseksi haluaa. Tässä taustaksi on tehty pallo, jolla reunaviiva. 

kirppiskartta

Muista tallentaa projekti. 

5. Kartan asettelu

Nyt voidaan alkaa tehdä layoutia kuntoon ja asetella kartta, legenda ja muut tekstit. Jos halutaan kikkailla, ja tottakai halutaan, layouttiin voidaan tehdä lista kohteista kiertojärjestyksessä (muistanet NRO-kentän). Tämän voi tehdä selitteen avulla. Saat selitteeseen laitettua listan kohteista “helposti” kirppisten kiertojärjestyksessä funktiolla: 

kirppiskartta

%wordwrap(aggregate( ’kirppisrallitaso’,’concatenate’,”NRO” || ’. ’ || ”Osoite” || ’ | ’|| ”Lisätieto” || ’&’, order_by:=”NRO”),1,’&’)%]. 

Ja sitten ongelmaksi luultavasti muodostuu se, että CSV:nä tuotu kirppistason NRO-kenttä on tallentunut stringiksi. Luo kirppistasolle integer-muotoinen Nro2-kenttä ja populoi NRO-kentän tiedot uuteen sarakkeeseen. Ja kokeile uudelleen:

%wordwrap(aggregate( ’kirppisrallitaso’,’concatenate’,”Nro2″ || ’. ’ || ”Osoite” || ’ | ’|| ”Lisätieto” || ’&’, order_by:=”Nro2″),1,’&’)%]. 

Ja mahtavaa! Listan kohteet on hienosti selitteessä halutussa järjestyksessä! Ja lisätiedot on eroteltu erikseen. Tässä vaiheessa listalta varmaan löytyy kaikenlaista virhettä, joten kysy kaverilta mitä kaikkea pitää korjata. 

kirppiskartta

6. Vähän pitää korjata

Osa pallukoista esimerkiksi on varmaankin liian lähekkäin toisiaan. 

kirppiskartta

Säädä niitä siten, että ne eivät peitä toisiaan. Tämä oli siis syy, miksi kohteet kannatti labelöidä eikä tehdä pisteille visualisointia. Ja kartta on valmis! 

kirppiskartta

Tai niin noh. Viime kesän QGIS-versio ja nyt käytössä oleva QGIS-versio eivät olekaan ihan yhteneväiset. Siitä johtuen nimiöinnit käyttäytyivät hieman eri tavoin. Muista määrittää siis nimiöinneille X,Y -referenssipiste. Data Defined Placement piti säätää 3.30:ssa erikseen viittaamaan Store Data in Project, jolloin nimiöintejä pystyy siirtämään. 

Ja sitten tarkkasilmäisiä häiritsee, että kohteiden pallot on eri kokoisia (johtuen siitä, että pallon koko kasvaa mitä enemmän siinä on tekstiä). Tämän voi vaihtaa labeleiden Background-kohdasta Size Type Buffered sijaan Fixed. 

kirppiskartta

7. Valmis!

No niin! Nyt se kartta on valmis ja pitääkin alkaa valmistelemaan kirppiskamojen hinnoittelua. Tervetuloa muuten ostoksille!

kirppiskartta
Profiilikuva

Sanna Jokela

Sanna Jokela on Gispo Suomen toimitusjohtaja sekä maantieteen FM, jota kiinnostaa erityisesti avoimen lähdekoodin ja avoimen datan verkostot ja yhteistyö, karttojen teko sekä laajat paikkatietojen yhteiskäyttöisyyteen liittyvät projektit. Sanna harrastaa mm. sisustamista ja puutarhailua.