Einstieg in Generic Mapping Tools
Gepostet am 20. Dezember 2022 • 5 Minuten • 862 Wörter • Andere Sprachen: English
Die Generic Mapping Tools (GMT) sind ein Werkzeugkasten zur Erzeugung von Landkarten (neben anderen Möglichkeiten). Man kann insbesondere Karten für den Druck (EPS, PDF) erzeugen, aber auch Ausgaben in SVG und natürlich klassischen Bildformaten wie PNG oder JPG. Hier eine kleine Anleitung, wie man GMT unter Ubuntu zum Laufen bringt.
GMT installieren
GMT ist seit vielen Jahren in Debian bzw. Ubuntu enthalten und hat im Lauf der Jahre eine ganze Menge Wandlungen erlebt.
In den aktuellen Ubuntu-Versionen ist GMT 6 enthalten, das per Kommandozeile genutzt werden kann. Daneben gibt es
inzwischen mit PyGMT
eine vollständige Python-Unterstützung. Auch Julia wird unterstützt (eine Sprache, die unter
Entwicklern einen guten Ruf hat, leider nicht besonders verbreitet ist &ndash bringt mich fast dazu, sie mir mal näher
ansehen zu wollen). Um die Generic Mapping Tools im aktuellen Ubuntu benutzen zu können (d.h. die
Kommandozeilenvariante), müssen sie zunächst installiert werden:
sudo apt install gmt gmt-gshhs-low gmt-gshhs-high gmt-gshhs-full
Das Paket gmt-gshhs-full
benötigt man nur, wenn man wirklich hochauflösende Karten erstellen will. Eine vollständige
Anleitung mit vielen Tutorials findet man unter https://www.generic-mapping-tools.org/
.
Ein erstes Beispiel
Generell empfiehlt es sich, GMT in kleinen Skripten zu schreiben. Hier ein minimales Beispiel:
gmt begin europa_outline
gmt set GMT_THEME cookbook
gmt coast -R-11/20/32/60 -JM16c -B -Gblack
gmt end show
Hiermit wird eine Mercator-Projektion von Europa erstellt. Hier die Erklärung:
gmt begin europa_outline
beginnt mit der Ausgabe einer Datei europa_outline.pdf.gmt set GMT_THEME cookbook
verwendet ein bestimmtes voreingestelltes Theme.gmt coast
erstellt Küstenlinien:-R-11/20/32/60
in den Koordinaten 11°W/20°O und 32°N/60°N-JM16c
bedeutet eine klassische Mercatorprojektion (M
) mit der Breite 16 cm.-B
erstellt einen Rahmen mit im Theme vordefinierten Abständen.-Gblack
färbt das Land schwarz ein.
gmt end show
beendet die Ausgabe und zeigt die Karte auch gleich an (z.B. mit Evince).
Das Ergebnis kann sich blicken lassen:
Zum Herumspielen kann man an ein anderes Ausgabeformat und eine Einfärbung vornehmen:
gmt begin europa_outline png
gmt set GMT_THEME cookbook
gmt coast -R-11/20/32/60 -JM16c -B -Gdarkgreen
gmt end show
Hier wird ein png in Grün erzeugt…
Den Globus projizieren
Ein anderes Beispiel, um zu zeigen, wie vielfältig GMT einsetzbar ist:
LON=11.566667
LAT=48.133333
NAME='München'
gmt begin meine_welt
gmt set GMT_THEME cookbook
gmt coast -Rg -JG${LON}/${LAT}/16c -Bag -Dc -A5000 -Gwhite -SLightBlue
echo "${LON} ${LAT}" | gmt plot -Sc0.16c
echo "${LON} ${LAT} $NAME" | gmt text -Dj0.12/0.12 -F+f16p,Helvetica,DarkRed+jBL
gmt end show
Hier setzen wir zunächst drei Variablen für die Shell (gerne ändern, um zu experimentieren). Danach beginnen wir wieder
ein PDF mit dem Namen meine_welt.pdf
zu erstellen:
gmt coast
erstellt wieder die Küstenlinien:-Rg
ist wieder der Kartenausschnitt. Hier nehmen wir die ganze Welt.-JG${LON}/${LAT}/16c
ist die Kartenprojektion, ein Globus mit den in der Shell definierten Koordinaten als Zentrum.-Bag
definiert den Rahmen bzw. das Rastersystem der Karte. Da wir einen Globus projizierten, wollen wira
- undg
-Linien zeichnen, d.h. in diesem Fall den Rahmen der Weltkugel und größere Längen- und Breitengrade).-Dc
ist die Auflösung der Karte. Wir haben oben ja verschiedene gshhs-Pakete installiert. In diesem Fall sagen wir, wir wollen das “krude” (crude) verwenden, was bei der Auflösung völlig ausreichend ist. Es gibt daneben noch full, high, intermediate und low.-A5000
bedeutet, dass wir Elemente, die kleiner als 5000 km² sind, ausblenden. Damit werden kleine Seen und Inseln nicht angezeigt und die Karte wirkt dadurch ruhiger.-Gwhite
ist die Füllfarbe für Land, in diesem Fall also Weiß.-SLightBlue
ist die Füllfarbe für das Wasser, Hellblau.
gmt plot
erstellt Symbole und Linien auf Karten.-Sc0.16c
bedeutet, dass wir Symbole zeichnen, und zwar leere Kreise (kleinesc
für Circle). Der Durchmesser ist 0,16 cm.echo "${LON} ${LAT}"
wir pipen eine Zeile mit den Koordinaten hier hinein. Alternativ könnten wir auch mehrere Zeilen mit Koordinaten zur Verfügung stellen, um viele Punkte zu zeichnen. Oder wir können die Punkte aus einer Datei holen.
gmt text
funktioniert analog zur Erstellung von Symbolen, nur mit Text:echo "${LON} ${LAT} $NAME"
piped den Text wieder an den Befehl, diesmal noch mit dem Namen, der angezeigt werden soll.-Dj0.12/0.12
bestimmt den Abstand zwischen Koordinate und Text. Wir wollen ja nicht, dass der Name das Symbol überdeckt.-F+f16p,Helvetica,DarkRed+jBL
sieht wild aus, ist aber schnell erklärt.-F
bestimmt das Textformat. Hier wollen wir eine Font (+f
) der Größe 16p haben, und zwar die Helvetica in Dunkelrot. Der Text soll auch ausgerichtet werden an der Koordinate (+j
) und zwar soll die Koordinate links unten stehen (below left). Die Ausrichtung ist unabhängig vom Abstand oben, der noch dazu kommt.
Hier das Ergebnis:
Hier sieht man schon, dass GMT zwar eine gewisse Lernkurve besitzt, aber die meisten Einstellungen ähneln sich bei den verschiedenen Befehlen und man kann nach einigem Experimentieren schnell loslegen. Besonders interessant ist die Verbindung der Kommandozeile mit den Tools, da man hier über plot größere Datenmengen in die Anwendung ziehen kann, wenn man sie einmal aufbereitet hat für das GMT-Format.
Zum Test einfach mal andere Koordinaten und andere Stadtnamen einsetzen und schauen, wie sich die Projektion ändert. Oder man kann die Projektionen schnell ändern und sehen, wie die Karten dann dargestellt werden. GMT kann noch viel mehr. Weitere Informationen und Tutorials findet man auf der Dokumentationsseite von GMT .