För att skapa ”snygga” koordinater på en karta så har jag tidigare använt mig av skript och pythonfunktioner som fungerar utmärkt, men det krävs att funktionerna är installerade på klienten som öppnar projektet för att det skall fungera.
Med QGIS 3 så är detta inte längre nödvändigt, i det här fallet, och detta öppnar dörren till betydligt enklare processer för att sprida komplexa layouter till andra.
Jag har skapat mina koordinatnät som en mall (template) för att enkelt kunna sprida denna mellan datorer, men om layouten finns i ett projekt så behövs mallen inte. Alla inställningar som behövs sparas i projektfilen, till skillnad från funktioner i python.
En nyhet i QGIS 3 är att dessa mallar, som skapas i layout, kan dras och släppas i kartan från panelen datakällor.
Detta skapar en ny layout baserad på innehållet i mallen. Det går såklart att göra som vanligt och lägga till element från en mall inne i layoutapplikationen också.
Den layout jag skapat är låst till skala 1:50’000 och har två koordinatnät aktiverade. Ett 1000 enheters grid och ett lat/long grid med fem respektive 2 minuters intervall.
Det som jag tidigare anropade med en funktion i Python, kan jag nu lösa med nya inbyggda funktioner i uttrycksbyggaren.
Det är fortfarande ”superscript” och unicode som gör det möjligt att skapa de upphöjda siffrorna, men med uttrycket ”array” i stället för en lista i en pythonfunktion.
if(left(right(@grid_number,4),1)=0, if(length(@grid_number)=7,array_get(array('⁰','¹','²','³','⁴','⁵','⁶','⁷','⁸','⁹'),left(@grid_number,1)),'') || array_get(array('⁰','¹','²','³','⁴','⁵','⁶','⁷','⁸','⁹'),left(right(@grid_number,6),1)),'') || left(right(@grid_number,5),2)
Jag vet inte om det fungerar så bra att skriva ut koden jag använt i kodblocket ovan så det kan vara bättre att skriva av koden i bilden tidigare. Det som är nyckeln är att de siffror som ingår i mina ”arrayer” är skrivna som superskript i en ordbehandlare (infoga specialtecken) och sedan inklistrade i uttrycksbyggaren.
Vad koden gör är att först kontrollera om den fjärde siffran är en nolla. Då skall superskript tecken läggas till i början.
Beroende på om det är sex eller sju tecken i koordinaten så är det en eller två tecken som skall skrivas med superskript. Därav först en kontroll om det är sju tecken, med omvandling till superskript. Därefter görs det sjätte tecknet från höger om till superskript.
Oavsett om det är sex eller sju tecken så plockas kilometersiffrorna ut (fjärde och femte från höger) och läggs till etiketten.
Då jag uteslutande jobbar i Linux med QGIS så har jag inte provat om detta även fungerar i exempelvis Windows. Det borde fungera, men jag kan inte garantera det. Vill du prova lite snabbt så kan du ladda hem min mall och ”dra och släppa” den på kartan inifrån QGIS 3.
map_grid_1km_latlong_50k.qpt