Idag hade jag tänkt titta närmare på etiketter i QGIS. För dig som inte är så hemma i QGIS så kommer det att bli ett betydligt mer omfattande inlägg än vad man först kan tro. Det går nämligen att göra massor för att anpassa och skräddarsy etiketter, så jag kommer att göra vissa avgränsningar:
- Jag hoppar över ”placering” då detta är beroende av vilken geometri objektet har. Jag kommer att använda punkter som exempel, fast mina punkter kommer att vara osynliga i bilderna.
- Jag hoppar även över ”Rendering” som har mer att göra med när etiketterna skall ritas ut.
- Det går att skapa etiketter med uttryck och genom att kombinera olika fält, men detta hoppar jag också över och här kommer det endast att handla om den text som återfinns i ett vanligt textattribut.
- För de flesta inställningar så kan man göra datadefinierade åsidosättningar (den lilla ikonen till höger om de flesta fälten och knapparna i inställningarna). Detta kommer jag inte heller att gå igenom i detalj men kortfattat så handlar det om att sätta upp regler för när och på vilket sätt vald inställning skall åsidosättas eller ändras (exempelvis: ”orter med fler än 1000 invånare skall alltid skrivas ut med versaler”).
- Jag använder Linux, vilket kan göra att somliga dialogrutor med mera ser annorlunda ut om du använder Windows eller Mac.
Så vill du ha en genomgång på vad du själv kan åstadkomma i QGIS, eller bara är nyfiken på vad QGIS kan göra som ditt nuvarande GIS inte klarar av, läs vidare i detta inlägg. Jag börjar med det övergripande.
I inställningarna för Etiketter så kan man se en förhandsgranskning av hur texten kommer att presenteras. Den standardtext som används kan enkelt redigeras i textfältet under den stora bilden. Det reglage som finns här används för att justera storleken på texten, om man valt ”kartenheter” i stället för ”punkter”, som är standard, för storleksangivningen (se bild längre ner). Har man valt punkter så går det inte att röra reglaget.
Om man väljer annan textfärg, färg på kantlinje eller annan effekt så kanske detta inte är så lätt att förhandsgranska mot vit bakgrund. Då går det enkelt att välja en annan bakgrundsfärg med färgväljaren.
I textinställningarna så väljer man exempelvis typsnitt, och beroende på typsnittet så kan man välja olika stilar. Det är därför inte säkert att det går att ha ”fet” stil för alla installerade typsnitt.
Understruken och genomstruken kan väljas till för de flesta stilar (om inte alla), medan knapparna för fet och kursiv stil till höger inte är valbara. Fet och kursiv stil väljs normalt med flervalsväljaren där det står BoldOblique (fet kursiv) i bilden ovan. Dessa knappar används enbart för datadefinierad åsidosättning.
Storlek kan väljas i punkter på skärmen eller i kartenheter. Om du väljer kartenheter så är det i projektets kartenheter. Det spelar ingen roll om dina data är i decimala grader. Är ditt projekt i SWEREF99TM och du anger storlek 100 i kartenheter, så blir din text 100 meter hög. Detta är väldigt praktiskt om man vill ha ett bestämt utseende i flera skalor, men det kan göra texten svårläst ibland samtidigt som datorn får jobba lite extra ibland.
Färgväljaren sätter själva textfärgen och om du vill så kan du sätta en valfri transparens på texten. Nu har jag inte tillgång till de senaste versionerna av ArcGIS men att ha transparens på text är något jag verkligen uppskattar med QGIS jämfört med ArcGIS, där detta endast är möjligt om man gör om texten till annotationer.
Med versalisering så kan man välja att göra om all text till stora eller för den delen små bokstäver. Man kan även välja att göra första bokstaven i varje ord till versal.
Med separation så kan man skapa extra luft mellan bokstäver och ord. Det värde man anger är antingen i punkter eller kartenheter, beroende på vad man tidigare valt. Det går även att använda negativa tal om man istället vill minska mellanrummet.
Sammansmältning handlar inte så mycket om texten utan om hur texten ”blandas” med bakgrunden för att få fram andra effekter, så detta hoppar jag över här.
Formatering handlar dels om att skriva ut etiketten på flera rader, och dels om att formatera siffror.
Man kan välja att bryta texten på speciella tecken. Här har jag helt enkelt valt att bryta på blanksteg, men om man vill så kan man ju infoga någon form av specialtecken i attributtexten och bryta på detta. I kombination med urvalshanteraren och datadefinierad åsidosättning så går det att skräddarsy radbrytning på ett passande vis.
Radavstånd är helt enkelt vilket avstånd det skall vara mellan raderna, där 1 är normalt och högre siffror ger större avstånd och lägre siffror mindre. Man kan även välja att justera texten till vänster, höger eller centrerat.
Formatering av siffror gör att man kan begränsa antalet decimaler som skrivs ut för decimaltal och man kan välja att visa ”plus-symbol” för positiva tal.
Med Buffer skapar man en kant runt texten. Tjockleken på kantlinjen sätts i millimeter eller kartenheter, men om man väljer kartenheter så förhandsgranskas detta inte. Jag vet inte riktigt varför man valt millimeter här och inte punkter och jag har heller inte experimenterat vad det får för konsekvenser i detalj. Stora tal ger en tjock kantlinje och små tal en tunn…
Färgen kan sättas med färgväljaren och man kan välja att fylla bufferten eller inte. Vad spelar detta då för roll? Jo, om du har en transparent text så kommer fyllningen att lysa igenom om du väljer att fylla här. Annars så är det helt och hållet bakgrunden som lyser igenom. Det går att sätta texten helt transparent och prova att kryssa i och kryssa ur här för att tydligt se skillnaden. Detta är en liten detalj, men som kan göra skillnad i en del tillämpningar.
Även bufferten går att göra genomskinlig. Skilj på textgenomskinlighet och buffergenomskinlighet. Det går att styra dessa helt individuellt. Med en väldigt transparent buffer så kan en typ av ”halo” effekt uppnås om man så önskar.
Linjehopslagning handlar om hur kantlinjen skall hantera hörn i texten:
I bilden ovan så ser man även att bufferten utgår från textens kant och ”expanderar” både utåt och inåt. Detta blir synligt om man väljer transparens på texten och då kan färgläggning av buffers fyllning minska effekten av detta. Har man dock transparens även på bufferten så kan man inte utesluta denna typ av effekter helt och hållet. En lösning vore att bufferten endast ”expanderar” utåt, men att få till detta i kod är inte särskilt lätt och det kostar sannolikt mer än det smakar.
Bakgrund handlar om hur texten skall ”monteras”. Ett användningsområde är att som här skapa ”skyltar” (jag har lagt till en skugga för att etiketten skall synas mot bakgrunden). Ett annat kan vara att skapa symboler för vägnummer eller avfarter, där texten på ett mer påtagligt sätt skall diktera symbolens storlek. Det blir ju inte så praktiskt att skapa en SVG-symboler för varje avfart eller ortsnamn.
Formen på bakgrunden kan sättas till rektangel (som här), kvadrat, ellips eller helt fritt med en SVG-fil. Vill du med andra ord ha en helt skräddarsydd bakgrund till dina etiketter så är det enkelt att skapa denna i exempelvis Inkscape, om nu inte det befintliga biblioteket med SVG-er räcker till.
Storleken på bakgrunden kan antingen sättas direkt med storleksfälten (X och Y) eller som i mitt exempel som en buffer runt om. Detta sträcker ut vald bakgrund eller skalar den, beroende på vilken form man valt, runt texten och då anger storleksfälten hur mycket luft det skall vara ytterligare runt texten.
Som tidigare så kan man ange värden i millimeter eller kartenheter.
Bakgrunden är lite separerad från texten så här får man även välja om den skall följa textens rotation, eller inte. Om man roterar etiketten i sig så kan man här justera bakgrunden så att den passar in.
Offset flyttar bakgrunden i X och Y led i förhållande till där den normalt sett skulle vara. Vill du exempelvis ha lite extra utrymme till höger, eller vänster så kan man fixa det här. Om du exempelvis har en SVG bakgrund där texten inte skall centreras utan skrivas ut i någon av kanterna så kan detta vara ett sätt att justera det.
Radie rundar av hörnen på rektangeln, eller kvadraten. Här kanske det är på sin plats att påtala att inställningarna för bakgrunden skiljer sig beroende på vilken form man väljer inledningsvis. Radie förekommer därför inte för ellipser och SVG.
Genomskinligheten kan också sättas separerat från text och buffer. Kombinationer av olika genomskinlighet kan både ge häftiga effekter och vara upphov till problem. Så länge man är medveten om att saker som ligger under något annat blir mer och mer synligt genom det som ligger över så kan man nog hantera detta på ett bra sätt.
Färg på fyllning och kantlinje sätts med den vanliga färgväljaren och tjockleken på kantlinjen kan sättas i millimeter eller kartenheter som tidigare.
Bakgrunder går att utforska betydligt mycket mera och mina exempel ovan bygger enbart på formen rektangel.
Skugga ger liv åt dina etiketter. Med skugga skapar man djup och distans till kartan. Använder man skugga överallt så kan det bli katastrof, men på rätt ställen väldigt effektfullt.
Skuggan baseras normalt på den understa etikettkomponenten (texten, bufferten eller bakgrunden). Om man vill så kan man välja att kasta skuggan från en övre komponent i stället. Om du väljer att kasta skugga från texten så spelar det ingen roll att du även har en buffer, skuggan baseras endast på texten. Prova att göra så och välja en väldigt transparent buffer och en tydlig skugga…
Skuggan skall ju kastas förskjutet åt något håll och detta styrs av Offset. Riktning och avstånd (i millimeter eller kartenheter) styr var den tänkta ljuskällan befinner sig och hur långt från bakgrunden texten skall se ut att vara. Som standard är detta kopplat till projektet med valet ”Använd global skugga” men om man nu skulle vilja att skuggan kastas i vinklar relativt etikettens rotation så kan detta alternativ avmarkeras.
Suddighetsradie kan också användas för att styra intrycket av avstånd mellan text och bakgrund. Vad inställningen gör är helt enkelt att gå från en helt skarp skugga (0) till en skugga som helt flyter ut i bakgrunden. Även detta värde kan anges i millimeter eller kartenheter.
Genomskinligheten kan justeras efter önskemål, men en traditionell skugga är alltid transparent. Vill man uppnå en speciell effekt så kan man dock åsidosätta detta här.
Med skala så kan man få skuggan att växa ut mer och mer i textriktningen. Här kanske det hade varit lämpligt att kunna välja om man skulle skala i samma riktning som skuggan, men för små skalningar så kan man uppnå trevliga effekter i alla fall.
Om man inte vill ha en svart skugga så kan färgen ändras fritt.
Om jag ställer in 0 på Offset och suddighetsradie 1 utan transparens så kan jag få texten att glöda lite svagt med vald färg (bild ovan).
Möjligheterna att anpassa etiketter är i det närmaste oändliga och på många sätt överlägset andra GIS-program. Med en del program så är det svårt att få texten ”levande” medan etiketter i QGIS helt enkelt ser bra ut. Om detta är på grund av anti-aliasing eller vad det beror på vet jag inte.
I morgon blir det nog inget nytt inlägg (vi får se), men jag tror att det blir ett lite mer avancerat inlägg på onsdag i stället. Då skall jag titta på alternativ användning av LeafletJS och kombinationer av flera andra javaskript för att skapa något som jag frågat efter flera gånger tidigare, men inte lyckats hitta på Internet. Nu gör jag det själv i stället! Vi får se om det är flera som tycket att det kan vara lika användbart som jag själv. Då kanske vi kan hjälpas åt att vidareutveckla det på något sätt.