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.
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:
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.
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.
Nimiöintien tyyliä voi muokata sitten millaiseksi haluaa. Tässä taustaksi on tehty pallo, jolla reunaviiva.
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:
%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.
6. Vähän pitää korjata
Osa pallukoista esimerkiksi on varmaankin liian lähekkäin toisiaan.
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!
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.
7. Valmis!
No niin! Nyt se kartta on valmis ja pitääkin alkaa valmistelemaan kirppiskamojen hinnoittelua. Tervetuloa muuten ostoksille!