Hoppa till innehåll
Meny
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

UTM koordinater med uttryck

Publicerat den 2018-11-12

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.
Skärmbild_2018-11-07_18-48-09
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…
Skärmbild_2018-11-07_18-56-22
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.
Skärmbild_2018-11-07_19-06-45
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.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     Mastodon  

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • Daniel Nilsson om QField
  • denis Empisse om SpaceMouse Python
  • klakar om SpaceMouse Python
  • Anders Jackson om Återbesök, WebODM
  • Anders Jackson om SpaceMouse Python

Arkiv

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2025 Geosupportsystem | WordPress-tema av Superbthemes.com