Layouter i QGIS är kraftfulla, men då det inte finns några inbyggda mallar, så får man göra mycket av jobbet själv.
Tidigare så använde jag egenskapade pythonfunktioner för att exempelvis få till koordinatsiffror på kartorna. Sedan en tid tillbaka så behöver man inte det för de vanligaste koordinatsiffrorna. Därför är det hög tid för en uppdatering som gör det betydligt enklare att sätta ”snygga” etiketter på koordinatnätet i layouten.
Metoden kan anpassas en hel del, men jag kommer att använda ett kilometerrutnät som passar för kartor i skalor runt 1:50’000.

Jag börjar med en enkel layout med en karta. Kartan ges en ram och sätts till 1:50’000. För att hantera kartan så använd tangentbordsgenvägarna ”c” och ”v” för att växla mellan hantering av kartelementet och kartan i elementet.
Jag lägger även till ett koordinatnät som jag döper till ”1km”.

Eftersom jag redan har en ram runt kartan så kan jag välja ”ticks” som ram för koordinatrutnätet, vilket jag tycker passar här. Sedan kommer vi till huvudnumret, koordinatsiffrorna.
Välj anpassade koordinater och öppna uttryckshanteraren.
if(@grid_number%10000, -- If it is not an even 10 km line left(right(@grid_number,5),2) -- Add standard km label , -- else with_variable('index', -- Define a variable for index numbers array('⁰','¹','²','³','⁴','⁵','⁶','⁷','⁸','⁹'), if(@grid_number>999999, -- If the grid has more than 6 digits add index number for the 1'000'000 value array_get(@index, left(@grid_number,1)),'') || -- And no matter what add index number for the 100'000 value array_get(@index, left(right(@grid_number,6),1)) ) || -- Then add the km label with standard format left(right(@grid_number,5),2) )
Uttrycket är i grunden en IF sats som kollar om etiketten är jämnt delbar med 10’000. Om så inte är fallet så skrivs kilometersiffror ut. Villkoret använder operabeln ’%’ vilket är en division där ”resten” i divisionen ges som resultat. Om talet är jämnt delbart så är resultatet ”0”, vilket villkoret tolkar som ”falskt”.
Om talet är jämnt delbart så görs lite mer beräkningar. Till att börja med så skapas en variabel vid namn ’index’ som innehåller en lista med upphöjda siffror från 0 till 9. Dessa har skapats i Libre Office Writer genom att infoga specialtecken från ett unicode teckensnitt.

Texten med dessa ”superscript” tecken kopieras sedan in i uttrycksbyggaren or där skapas listan som en array().
Om koordinaten är större än 999’999, det vill säga har fler än sex siffror, så används listan för att ersätta värdet av den sjunde siffran från höger med den superscript siffra som har samma position i listan.
Oavsett hur många siffror det sedan finns i koordinaten så görs motsvarande med den sjätte siffran från höger.
Sedan läggs kilometersiffrorna (position 4 och 5 från höger) till som vanliga tecken.
Resultatet blir ett rutnät med etiketter som ser ut som man kan förvänta sig av den här typen av kartor.

Om man nu inte vill skriva uttrycket själv så finns nu möjligheten att använda ”användaruttryck”. Dessa kan exporteras och importeras som filer till QGIS. Uttrycken sparas som standard i QGIS3.ini men där är de inte så lätta att hantera. I stället så kan man exportera uttrycken som json, vilka sedan även kan importeras.

Skall man exportera så måste man först ”spara” uttrycken till användaruttryck. Dessa kan sedan exporteras till json, och importeras i andra installationer.
Jag har skapat en json för uttrycket jag använder här och detta kan du hämta som fil och importera till dina användaruttryck.
Hmm. Användaruttryck kanske också vore en kandidat för QGIS-hub?