För att skapa koordinatsiffror för UTM nät (även Sweref99TM) som är anpassade med lämpligt antal siffror så har jag tidigare använt en anpassad pythonfunktion. Nu har jag slutat med det. Det går att skapa ”index” siffror direkt i koordinatuttrycket.
Grunden är ett koordinatnät med 1 km intervall och anpassade etiketter. Uttrycket jag använder är följande.
if(left(right(@grid_number,4),1)=0, if(length(@grid_number)=7, array_get( string_to_array('⁰,¹,²,³,⁴,⁵,⁶,⁷,⁸,⁹'), left(@grid_number,1)),'') || array_get( string_to_array('⁰,¹,²,³,⁴,⁵,⁶,⁷,⁸,⁹'), left(right(@grid_number,6),1) ),'') || left(right(@grid_number,5),2)
Om jag börjar med sista raden så är det här kilometersiffror från 00 till 99 hämtas ut från rutnätsvariabeln.
Om detta är en siffra som är ett jämnt 10-tal så infogas något före dessa kilometersiffror.
Om det är en lång koordinat med sju siffror så läggs den första siffran till, men den ersätts med sin upphöjda unicode-motsvarighet från string_to_array() funktionen.
Dessutom så läggs den sjätte siffran från höger till (den andra i en sjusiffrig koordinat) genom samma typ av unicode-utbyte.
Grundförutsättningen är att det typsnitt man använder kan hantera unicode superscript, vilket exempelvis Arial kan.
I unicode finns det även siffror som är ”nedsänkta” om man vill använda sådana siffror i stället för upphöjda. Då ersätter du bara textsträngen i koden ovan med följande.
'₀,₁,₂,₃,₄,₅,₆,₇,₈,₉'
Som exempel så kan man lägga till nedsänkta nollor vid jämna 100 tals kilometer…
Det enda jag lagt till koden från tidigare är:
|| if(left(right(@grid_number,5),2)='00','₀₀₀','')
Sedan blir det kanske inte så praktiskt att långa y-koordinater sticker ut så långt åt sidorna, men om man kan tänka sig att skapa flera koordinatnät så kan man skapa ett system som skriver ut allt utom jämna 100-tal på y-axeln, och ett som bara skriver jämna 100-tal på y-axeln. Då kan man enkelt rotera de etiketter som är långa på y-axlarna.
Hade det funnits en variabel i uttrycken som direkt gett mig den aktuella kartans utsträckning så hade jag även kunnat bygga ett uttryck som även skrev ut så kallade ”corner labels” i valfritt/samtliga hörn.
Som det är nu så kan man göra detta, men då måste man i koden namnge kartelementets Element-ID. Detta betyder att jag måste ändra på två ställen. Om det varit en generisk kod, oberoende av Element-ID, så hade det varit enkelt att sprida koden som standard, eller till och med bygga in den i QGIS som ett ”förval” för koordinatnät.
Hur skulle det låta? Ett förval i QGIS som heter något typ ”corner labels” (”hörnkoordinater”)?
Detta skulle dock även kräva att det går att ”rotera” enskilda etiketter i uttrycket. Men ett förval med ”Measured Grid” och de indexerade tiokilometerssiffror som beskrivits ovan, skulle vara fullt möjligt att få inbyggt som förval i QGIS.