Slik tar du CartoDB-kartet ditt til neste nivå
Først: har du ikke lest «Fem tips til et bedre kart» så bør du gjøre det nå.
Denne bloggposten tar for seg litt mer avansert bruk av CartoDB.
Legg logikk i infovinduene
Ofte har du en kolonne i tabellen din som har verdier i enkelte rader og er tom/null i andre rader. Da kan det være nyttig å vise verdien der den finnes, f.eks. som del av en tekst, samtidig som du viser en annen forhåndsdefinert tekst dersom verdien mangler.
Infovinduene i CartoDB bruker et malspråk kalt Mustache. Der kan du lage enkel if else-logikk på følgende måte:
1 2 3 4 5 6 |
{{#minkolonne}} <p>En tekst om {{minkolonne}}</p> {{/minkolonne}} {{^minkolonne}} <p>Det finnes ikke data for denne raden</p> {{/minkolonne}} |
Kodesnutten over gjør følgende: Sjekker om «minkolonne» har verdi {{#minkolonne}} (ikke er tom). Hvis den har det vises et avsnitt med tekst og verdien fra kolonnen. Dersom det ikke er verdi {{^minkolonne}} , vises en annen tekst.
Avrunding og norske tegn
CartoDB bruker konsekvent engelsk format på tall. Det betyr at desimalskilletegnet er punktum. Det fungerer greit så lenge du bare skal regne med verdier, men skal du vise verdiene i kartet eller infovinduer vil du gjerne ha komma som skilletegn.
Som regel bør du også runde av tallene i samme slengen. Det gjør du med følgende SQL:
1 2 3 |
SELECT *, replace(round(minkolonne::numeric, 1)::text, '.', ',') as minkolonne_avrundet FROM mintabell |
Her må du bytte ut «minkolonne» med navnet på kolonnen som har tallet ditt, og «mintabell» med navnet på din tabell. Du får da ut en ny kolonne som heter «minkolonne_avrundet» som er avrundet til et desimal og bruker komma i stedet for punktum.
Du kan bruke den nye kolonnen i et infovindu ved å bruke {{minkolonne_avrundet}} som vanlig.
Fjern støy i kartet
Dersom du legger til labels i kartet (tekst) f.eks. ved bruk av wizarden i CartoDB så kan det fort bli for mye informasjon i kartet når du har zoomet ut.
Du kan løse det med å si at lablene først skal vises når brukeren har nådd et visst zoomnivå i CartoDB. Hver gang du zoomer inn kommer du til et nytt nivå. Hvilket nivå det er kan du se på tallet som står under zoom-knappene i CartoDB.
La oss si at du vil skjule labels helt til brukeren har zoomet inn til nivå 7 eller mer.
- Begynn med å klikke på «CSS»-fanen.
- Legg til koden [zoom>7] etter der det står ::labels
Eksempel:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#mintabell::labels[zoom>7] { text-name: [navn]; text-face-name: 'DejaVu Sans Book'; text-size: 13; text-label-position-tolerance: 0; text-fill: #000000; text-halo-fill: #FFF; text-halo-radius: 0; text-dy: -10; text-allow-overlap: true; text-placement: interior; text-placement-type: dummy; } |
Avansert filtrering
For å filtrere hvilke verdier som skal vises kan du bruke filter-fanen i CartoDB. Vil du ha mer kontroll kan du bruke SQL-kode.
Denne koden vil kun vise de punktene som har navn som er del av den komma separerte listen:
1 |
SELECT * FROM mintabell WHERE navn IN ('Bergen', 'Voss', 'Førde'); |
Dersom du for eksempel har kommunenummer i en kolonne kan du velge å vise kun kommuner i Hordaland (fylke 12) og Sogn og Fjordane (fylke 14) med følgende SQL:
1 |
SELECT * FROM mintabell WHERE kommunenummer LIKE '12%' OR kommunenummer LIKE '14%'; |
Husk å bytte ut «mintabell» med navnet på din tabell.
Importere datasett med andre koordinatsystem
Dersom du får geodata fra offentlige instanser er sannsynligheten stor for at du får det i et annet koordinatsystem enn det CartoDB-bruker.
Det offisielle koordinatsystemet i Norge er UTM/EUREF89. Der er koordinatene angitt i meter nord og øst for et nullpunkt. For å gjøre det mer komplisert finnes det flere UTM-soner i verden. Du må derfor sjekke hvilken sone koordinatene du har fått er angitt i. De vanligste er 33N og 32N.
Alle koordinatsystem har en slags unik id, kalt SRID. For å få CartoDB til å konvertere dine koordinater til lengde- og breddegrad må du vite denne id-en. Sannsynligvis trenger du kun å notere deg at UTM33N har id 32633 og UTM32N har id 32632.
I et datasett (eks et Excel-ark) med UTM-koordinater vil du ha to kolonner, et for nord og et for øst. Kall dem gjerne «utm_nord» og «utm_ost».
Slik gjør du:
- Sørg for at du har to kolonner i arket ditt med utm_nord og utm_ost (eller tilsvarende)
- Importer arket på vanlig måte i CartoDB
- Velg SQL-fanen og bruk følgende SQL (merk at det her er angitt at kildekoordinatsystemet er UTM33N (altså id 32633))
1234UPDATE mintabellSET the_geom = ST_Transform(ST_SetSRID(ST_MakePoint(ost_utm, nord_utm),32366),4326)
SQL-spørringen over tar utgangspunkt i de to kolonnene dine med nord- og øst-koordinater og konverterer dem fra UTM33N (SRID 32633) til koordinatsystemet CartoDB-bruker (SRID 4326). - Pass på å velge «Map view» etterpå og se om punktene ligger rett sted.
- OBS: denne metoden fungerer kun om dataene dine er punkter, ikke polygoner eller linjer.
Flere tips
- Har du kommunenummer som ikke lar seg matche med andre datasett? Her får du alt du trenger å vite
- Og få med deg «Fem tips til et bedre kart»