Tag Archive | Etiketter

Hantera etiketter som ett proffs

Jag såg nyligen en film av Lene Fischer på YouTube om etiketter i QGIS för att göra anpassade ”call outs” (länk).

I detta inlägg tittar jag närmare på hur man kan jobba med anpassade etiketter på olika sätt.

Läs mer…

Annonser

Koordinatetiketter för SWEREF99TM

QGIS är bra på väldigt mycket, men att skapa professionella kartor med standardiserade koordinatnät för projicerade data, har det varit sämre med.

Ett tag var det omöjligt, men sedan ett antal QGIS versioner så är det möjligt. Inte direkt enkelt, men fullt möjligt. I detta inlägg visar jag hur.

Läs mer…

Regelstyrda Etiketter

En av nyheterna i QGIS 2.12, som detta inlägg handlar om är regelbaserade etiketter.

Tidigare har man i princip kunnat göra detta genom datadefinierade åsidosättningar där man med kod baserat på olika attribut kan koppla exempelvis typsnittsstorlek till olika typer av objekt. Med regelbaserade etiketter blir det dock betydligt enklare. Läs mer…

Djupdykning i QGIS Etiketter

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:

  1. 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.
  2. Jag hoppar även över ”Rendering” som har mer att göra med när etiketterna skall ritas ut.
  3. 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.
  4. 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”).
  5. 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. Läs mer…

Rotera etiketter

När jag höll på med Antarktiskartan tidigare så tyckte jag det skulle vara fräckt att lägga in texter som indikerade var stora städer låg och hur långt det var till dessa.

Jag skapade ett punktlager med punkter på -60 grader syd och samma longitud som de valda städerna och matade in ungefärligt avstånd i ett av fälten.

Den anpassade etiketten var lätt att skapa av mina två fält ”TEXT” och ”AVST_KM” med ett uttryck:

”TEXT” || ‘ ‘ || ”AVST_KM” || ‘ km’

I min enfald så trodde jag att man enkelt skulle kunna ange riktning för dessa så att de pekade ut från kontinenten som solstrålar (typ), men det visade sig inte vara så enkelt.

Texters riktning är nämligen skärmrelaterad, vilket kanske är tur när man tänker efter lite. När jag angav riktning för etiketterna till 0 grader, d.v.s. norrut, så hände naturligtvis ingenting.

Nåja, övertygad om att det skulle gå att lösa så skapade jag ett attribut kallat ”RI” och startade Fältkalkylatorn.

Jag vill med hänsyn till den valda projektionen att etiketter på 0 grader skall vara riktade uppåt, etiketter på 90 grader åt höger, 180 grader nedåt och -90 grader till vänster.

Normal etikettriktning (0 grader) är åt höger, sedan räknas graderna moturs så att 90 är rakt upp, 180 till vänster och 270 nedåt. Dock så vänds texterna så att de inte hamnar upp och ned, vilket kan vara synd i vissa situationer (går att ändra under Etikettens ”Rendering” i lageregenskaperna).

Nu snurrar det lite i huvudet, 0 skall bli 90, 90 skall bli 0, 180 skall bli 270 och -90 skall bli 180…

Ok, om vi vrider allt 90 grader så att 90 grader blir 0 så blir etiketter på 90 grader öst i alla fall rätt:

Longitud – 90

Och eftersom riktning på etiketter inte kan vara negativa så skall vi ha absolutbeloppet av värdet:

abs( Longitud – 90)

Och då stämmer det för 90 till -180 då absolutbeloppet av två negativa tal blir det samma som om det vore addition.

Återstår problemet med 90 till 180 grader öst…

Tja, varför inte ett villkor? Om Longituden är mindre än 90 grader så gör som tidigare, annars:

450 – Longituden

Det hela blir då:

Om Longituden är mindre än (eller lika med) 90 så använd abs(Longituden-90) annars 450-Longituden

Om jag då skriver detta som en QGIS formel i Fältkalkylatorn så blir det:

Skärmbild från 2013-12-12 17:54:46

En förutsättning för att det beskrivna ovan skall fungera är att data är lagrat i WGS84 och inget annat, annars är det svårt att hålla koll på x-värdet.

För att sätta rotationen så är det bara att gå in i egenskaperna för lagret (se bild nedan), och välja datadefinierad rotation satt till det aktuella attributet.

Skärmbild från 2013-12-12 18:03:56

Rent teoretiskt så skulle man kunna välja ”Redigera” (i bilden ovan) och skriva in uttrycket direkt här.

CASE WHEN $x <= 90 THEN abs($x-90) ELSE 450-$x END

Men jag får inte detta att fungera. Det borde göra det, men det går inte. Samma formel för att skapa ett attribut med rätt riktning (som ovan) fungerar dock hur bra som helst.