Mera MGRS i QGIS

I förra veckan jobbade jag mycket med layout och det militära rapporteringssystemet MGRS. Under tiden jag gjorde detta hittade jag flera alternativa lösningar som potentiellt skulle kunna förbättra användbarheten. I detta inlägg lyfter jag fram en av dessa.

Via Boundless sida på GitHub kan man hämta Pythonskriptet ”mgrspy”. Det går också att installera via ”pip”.

sudo pip install mgrspy

Det går sedan att få hjälp om kommandot efter import i python med:

from mgrspy import mgrs
help(mgrs)

Det går att ”översätta” mellan lat/long och MGRS, åt båda hållen, men jag är mest intresserad av .toMgrs().

Kommandot mgrs.toMgrs() tar tre variabler. Latitud, longitud och precision eller antal siffror i svaret. Det som är viktigt att tänka på är att det är latituden, det vill säga Y-koordinaten, som är den första variabeln. Om man anger 5 som precision så kommer resultatet att presenteras med 10 siffror (5+5).

Från svaret kan man sedan utvinna UTM gzd (grid zone designator), MGRS bigram (100km ruta) och easting/northing i denna. Funktionen förutsätter dock koordinater i lat/long (WGS-84). Men detta kan man enkelt fixa med en egen Pythonfunktion.

@qgsfunction(args='auto', group='Advanced Layout') 
def mgrs(easting, northing, epsg, feature, parent): 
 crsSrc = QgsCoordinateReferenceSystem(epsg)
 crsDst = QgsCoordinateReferenceSystem(4326)
 xform = QgsCoordinateTransform(crsSrc, crsDst)
 pt = xform.transform(QgsPoint(easting,northing))
 from mgrspy import mgrs
 mgrs_out = mgrs.toMgrs(pt[1],pt[0],5) # Latitude first...
 return mgrs_out

Funktionen tar tre variabler:

  1. X-koordinat (easting)
  2. Y-koordinat (northing)
  3. EPSG kod (ex 32633 för UTM zon 33N)

Anropet skulle exempelvis kunna vara:

mgrs(498843,6391479,32633)

Vilket skulle resultera i: 33VVD9884391479.

Funktionen går till skillnad från den ursprungliga mgrsfunktionen att använda med koordinater i valfritt koordinatsystem, så länge man vet vilken EPSG kod de är angivna i.

Genom att kombinera detta med de kommande funktionerna i QGIS3 där man ganska enkelt kan hämta varje kartelements CRS med en inbyggd funktion, så kan man skapa MGRS angivningar i kartan oavsett var på jorden, eller vilken projektion man använder. Det går till och med att skapa mallar (templates) för ett sådant kartelement som enkelt går att återanvända i nya projekt.

Annonser

Taggar:, ,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+-foto

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: