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 *

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 Nylander om PgAdminIV
  • Daniel Nilsson om QField
  • denis Empisse om SpaceMouse Python
  • klakar om SpaceMouse Python
  • Anders Jackson om Återbesök, WebODM

Arkiv

Meta

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