Har du någon gång önskat att du kunde skapa etiketter som följer jordens krökning? Det är möjligt i någorlunda moderna versioner av QGIS, tack vare etikettplacering med geometrigeneratorn.
Jag börjar med NaturalEarthData.com och en anpassad orthografisk projektion. I dessa data finns det lager som är avsedda för etiketter och det jag tänker använda är lager med ”regioner” på land och vatten.
Detta är polygoner som har sina regler för placering, men dessa passar inte i det här fallet.
Man kan ”vrida” etiketterna någorlunda baserat på deras latitud, men detta måste beräknas för en punkt i polygonen, exempelvis centroiden, vilket inte säkert stämmer med etikettens placering.
Även om man kan placera etiketterna på samma plats, så är många etiketter i det här fallet så långa att det ser konstigt ut när dessa är helt raka.
I stället så behöver vi använda krökta etikettplaceringar, vilket bara fungerar med linjer som grund. Det skulle kunna vara polygonernas kantlinje, men det passar inte i det här fallet. Här vill vi att etiketterna skall skrivas ut parallella med latitudlinjerna.
De data jag använder är oprojicerade WGS-84, vilket gör att bearbetningen skall göras i grader. I etiketternas inställningar för placering finns det möjlighet att skapa en geometrigenerator för placeringen i stället för den ursprungliga geometrin.
Här skapar vi en linjegeometri runt polygonernas centroid. Linjen skapas med make_line() och baseras på tre punkter i en lista. Första punkten väster om centroiden, därefter centroiden och slutligen en punkt öster om centroiden. Sedan så används smooth() för att jämna ut linjerna. Avståndet från centroiden är anpassat efter etikettens längd med length() funktionen.
Tre punkter används då detta skapar en linje med en ”vinkel” när lagret projiceras på kartan. Användningen av smooth() är inte perfekt, men tillräckligt bra för att ge en ”böjd” linje som följer latitudlinjernas krökning tillräckligt bra.
Vill man ”se” linjen så kan man använda en geometrigenerator för lagerstilen också, där samma uttryck kan användas. Detta genererar då en linje som kan stilsättas som vilken linje som helst.
Placeringen av etiketterna görs med krökt, eller curved, inställning. Dessutom så används så många tillåtna positioner som möjligt för att skapa så goda förutsättningar som möjligt för att så många etiketter som möjligt skall placeras.
I QGIS 3.14 (?) så kan man även använda ”Overrun feature”, som tillåter att etiketter sticker ut lite utanför linjer som råkar vara lite för korta. Det är bättre att justera uttrycket i geometrigeneratorn så att punkterna i början och slutet hamnar lite längre ifrån centroiden. Justera bara värdet i uttrycket som delar length() funktionen. I exemplet ovan är det ”1”.
Anpassa sedan etiketternas storlek, kanske även datadefinierat så att de har lite olika storlek. Även detta får man kompensera för i geometrigeneratorn. Lika så om man väljer att separera bokstäverna i etiketterna.
Och efter ytterligare en del finjusteringar så är det bara att luta sig tillbaka och betrakta resultatet.