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

Mera MGRS i QGIS

Publicerat den 2018-02-05

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.

Lämna ett svar Avbryt svar

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

     Mastodon  

Senaste kommentarer

  • Gustav G om Mäta kurvradier med GNSS
  • Sur om Varför är stiftpennor så långa?
  • QGIS 3.44 LTR – Geosupportsystem om Zorin på gammal laptop
  • Stefan Ene om Zorin på gammal laptop
  • Samira A om Om Mig

Arkiv

Meta

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