Aus Linux-Magazin 05/2010

Shellskripte projizieren Daten auf Landkarten

©Wikimedia Commons

Wer seine Quartalszahlen mit einer schicken Karte unterlegen will oder für eine gedruckte Publikation eine hochauflösende Karte von Hinterindien benötigt, dem bieten die Generic Mapping Tools eine alte, aber mächtige Lösung für die Shell, inklusive umfangreichen Kartenmaterials.

Gerhard Mercator gilt als der Urvater der modernen Kartografie, auch weil der geniale Mathematiker Mitte des 16. Jahrhunderts die erste winkeltreue Weltkarte entwarf. Deren Geometrie, die Mercatorprojektion, findet heute in fast allen Karten Verwendung, auch in Openstreetmap und Google Maps.

Trotz der Vielfalt an modernen Diensten gestalten sich manche Karten aber auch heute noch schwierig. Vor allem für schematische Darstellungen, die nur Küstenlinien und Grenzen anzeigen, sind die freien Daten eben nicht geeignet. Der Export der von den proprietären Diensten generierten Karten ist auf Bitmap-Formate beschränkt, die sich für den professionellen Druck als zu klein oder zu schlecht aufgelöst erweisen. Das freie Openstreetmap-Projekt [1] dagegen bietet immerhin eine Exportfunktion in SVG, PDF oder Postscript an, doch sind auch hier schematische Karten ohne Orte und Straßen nicht drin.

Hawaii 1988

Dafür gibt es aber die Generic Mapping Tools (GMT, [2]). Beheimatet bei der School of Ocean and Earth Science and Technology auf Hawaii sind die Werkzeuge nach Open-Source-Standard beileibe kein junges Projekt mehr: Die erste Version entstand 1988, zehn Jahre später folgte die Lizenzierung unter der GPL, die aktuelle Version ist 4.5.2.

Die GMT verstehen sich auch keineswegs als geografisches Informationssystem (GIS) und verzichten auf ein GUI. Geowissenschaftler haben die Programme ursprünglich für den Eigenbedarf entwickelt, um Daten auf Karten oder in Graphen zu visualisieren. Diesem Ziel ist das Softwarepaket bis heute treu geblieben.

Die Stärke der Generic Mapping Tools liegt in der Möglichkeit, automatisiert professionell anmutende Karten zu erzeugen und mit Daten anzureichern. Da ihre Zielgruppe vor allem aus Wissenschaftlern wie Geologen und Ozeanologen besteht, bieten die GMT umfangreiche Möglichkeiten bei Kartenprojektion, Koordinatensystemen, Höhen- und Tiefendaten sowie dem Hinzufügen von Punkten, Linien und Polygonen.

Der
GMT-Werkzeugkasten

Gut 60 Werkzeuge findet der Anwender in diesem Projekt, alle folgen dem Unix-Motto “Ein Programm, eine Aufgabe” (One Job, one Tool). Die wichtigsten Kommandos für die Kartenerstellung heißen:

  • »pscoast« zeichnet Umrisse und Flächen von
    Wasser- und Landflächen sowie Flüsse und
    Landesgrenzen
  • »psxy« ist für die Erstellung von Symbolen,
    Linien und Polygonen zuständig
  • »pstext« reichert Karten um Zeichenketten an
  • »psbasemap« erstellt Rahmen um Kartenmaterial und
    zeichnet Gradlinien
  • »ps2raster« wandelt das Kartenmaterial in andere
    Formate um, zum Beispiel in PDF, PNG oder Jpg

Wer topografische Karten erstellen muss, verwendet die Befehle »grdcut«, »grdgradient« und »grdimage«.

Die GMT sind, wie der Name vermuten lässt, eine klassische Unix-Sammlung von kleineren Einzelprogrammen. Der Kasten “Der GMT-Werkzeugkasten” listet die für die Kartenerstellung wesentlichen Befehle auf. Wie alle Unix-Urgesteine lassen sie sich sehr gut skripten und einfach mit anderen Linux-Tools und Pipes verbinden. Das erweist sich vor allem dann als vorteilhaft, wenn Daten aus anderen Programmen für die GMT aufzubereiten und darzustellen sind. Ein guter Einstiegspunkt für alle, die sich einen Eindruck von den Möglichkeiten verschaffen wollen, ist die Webseite mit zahlreichen Beispielen.

GMT steht für alle größeren Distributionen in den gängigen Repositories, unter Debian und Ubuntu genügt zum Beispiel ein »apt-get install gmt gmt-coast-low«. Damit landen die Tools und die Küstenlinien in niedriger Auflösung auf der Platte, was für erste Beispielanwendungen durchaus reicht. Wer GMT von den Quellen installiert, verwendet am besten das Formular auf der Website des Projekts [3]. Das bietet eine detaillierte Anleitung zu den Abhängigkeiten und baut das Makefile automatisch.

Mollweide und Weltkugeln

Neuere Versionen von GMT verwenden ein Wrapper-Skript, das die eigentlichen Tools aufruft. Ob dies auf einem System installiert ist, stellt sich mit »which GMT« heraus. Ist es vorhanden, sollte der Benutzer allen Befehlen den Aufruf »GMT« voranstellen. Listing 1 zeigt in Zeile 4 mit »gmt=$(which GMT)« eine einfache, aber effektive Möglichkeit, um ein Skript auf Systemen sowohl mit als auch ohne Wrapper-Skript auszuführen.

Listing 1:
»pscoast«

01 #!/bin/sh
02 
03 #GMT-Wrapper?
04 gmt=$(which GMT)
05 
06 #Mollweide-Karte
07 $gmt pscoast -JW16c -Rd -Dc -Bp -A5000 -W0.3pt -G230 -P > mollweide.ps
08 
09 #Mercator-Karte von Europa
10 $gmt pscoast -JM16c -R-12/40/30/70 -Dl -B10g10 -A200 -W0.3pt -G230 -P > europa.ps
11 
12 #3D-Weltkugel über München
13 $gmt pscoast -JG11.566667/48.133333/16c -Rg -Dc -B15g15 -A5000 -W0.3pt -G230 -P > kugel.ps

Das Listing enthält drei Beispiele einfacher Karten. Alle drei verwenden den Befehl »pscoast«, der Karten mit Küstenlinien, Ländergrenzen, Flüssen und Seen zeichnet. Dem Befehl übergibt das Skript Parameterwerte, die etwa die Art der Karte bestimmen. Der erste Aufruf im Listing erzeugt eine Mollweide-Projektion der Welt (Abbildung 1), der zweite eine Mercatorprojektion von Europa (Abbildung 2) und der dritte eine 3D-Darstellung der Welt über den Koordinaten von München (Abbildung 3).

Abbildung 1: Die Mollweide-Projektion ist flächentreu und stellt die Erde als Ellipse dar.

Abbildung 1: Die Mollweide-Projektion ist flächentreu und stellt die Erde als Ellipse dar.

Abbildung 2: GMT kann beliebige Kartenausschnitte erzeugen, hier verzerrt jedoch die Mercatorprojektion die Flächen der nördlichen Breiten stark.

Abbildung 2: GMT kann beliebige Kartenausschnitte erzeugen, hier verzerrt jedoch die Mercatorprojektion die Flächen der nördlichen Breiten stark.

Abbildung 3: Die 3D-Kugeldarstellung erlaubt einen Blick aus dem Weltraum – in diesem Fall auf München.

Abbildung 3: Die 3D-Kugeldarstellung erlaubt einen Blick aus dem Weltraum – in diesem Fall auf München.

Die drei wichtigsten Parameter von »pscoast« sind: »-J« definiert die Art der Karte. Die GMT beherrschen mehr als zwei Dutzend verschiedene Kartenprojektionen, »-JM« steht für jene nach Mercator. Im Beispiel sollen alle Karten 16 Zentimeter breit werden, gerade genug für ein gut gefülltes DIN-A4-Blatt. Das legt in allen Aufrufen der Parameter »16c« (direkt im Anschluss an die Projektion) fest, zum Beispiel in »-JM16c«.

Die ganze Welt in 3D

Der zweite wichtige Übergabewert ist »-R«, er bestimmt den Kartenausschnitt. »-R-12/40/30/70« weist die GMT an, einen Ausschnitt zwischen dem 12. westlichen und 40. östlichen Längengrad sowie zwischen dem 30. und 70. Breitengrad nördlicher Breite darzustellen.

Die Gradangaben lassen sich dezimal oder in Grad, Minute und Sekunde angeben. Die gesamte Welt definiert »-Rd« wie im Beispiel bei der Mollweide-Projektion. Spezielle Abbildungen erwarten unter Umständen andere Parameter. So verlangt die 3D-Darstellung einen Übergabewert »-J«, der erklärt, über welcher Koordinate der Betrachter für die Draufsicht quasi schwebt.

Der letzte wichtige Parameter ist »-D«, der die Qualität der zu zeichnenden Küstenlinien bestimmt. Diese liegen in fünf Stufen vor: »-crude«, »-low«, »-intermediary«, »-high« und »-full«. Welche Auflösung bei welcher Karte für ihn akzeptabel aussieht, muss der Anwender selbst herausfinden.

Für Projektionen auf Welt- oder Kontinentalebene genügt die Angabe von »-Dc« oder »-Dl« für die beiden untersten Stufen. Die beiden höchsten sind in den Paketquellen nicht vorhanden, die muss der User per Hand nachinstallieren, indem er die Daten von diversen Mirrors in ein lokales Verzeichnis kopiert. Wo er die zusätzlichen Karten gespeichert hat, teilt er anschließend den GMT über einen Eintrag in der Datei »/usr/share/gmt/coastline.conf« mit.

Die anderen Parameter von »pscoast« bestimmen weitere Details der Karten: »-B« legt den Rahmen der Karte und die Koordinatendarstellung fest, »-A« filtert Polygone aus der Karte, die kleiner als die angegebene Größe (in Quadratkilometern) sind. »-A200« verhindert so die Darstellung vieler Seen in der Europakarte. »-W« und »-G« legen im einfachsten Fall Linienstärken und die Stärke des Grautons fest, erlaubt ist jedoch auch eine Vielzahl weiterer Parameter, die unter anderem Farben und Strichformen bestimmen. Umfassende Informationen dazu bietet die Dokumentation der GMT. Der letzte Parameter »-P« dreht die Darstellung ins Hochformat.

Die in Listing 1 erzeugten Karten liegen im Postscript-Format vor, wer andere Formate benötigt, benutzt den Befehl »ps2raster«. Der Aufruf »ps2raster -A -P -Tf *.ps« konvertiert alle PS-Dateien im aktuellen Verzeichnis ins PDF-Format und schneidet sie passend zu. Der Parameter »-Tg« schreibt PNGs. Solche mit GMT erzeugten Karten können Anwender problemlos in Inkscape, Gimp oder Latex importieren und weiterverarbeiten.

Ein Anwendungsfall

Ganz in Unix-Manier geben die GMT ihre Daten an der Standardausgabe aus, was die Weiterverarbeitung per Pipe sowie das schrittweise Erzeugen komplexerer Karten per Overlay ermöglicht. Listing 2 zeigt einen typischen Fall: CSV-Daten sollen auf einer Karte geografisch aufbereitet werden. Sie liegen in einer Datenbank oder einem beliebigen Textformat wie XML vor. Im Beispiel kommt eine einfache CSV-Datei zum Einsatz, die die Spalten »Id«, »Ortsname«, eine Kenngröße (wie Verkaufszahlen oder Besucher der Website) sowie »Breitengrad« und »Längengrad« beinhaltet.

Listing 2:
»listing2.csv«

01 1,Berlin,1251,52.518333,13.408333
02 2,Bern,534,46.951081,7.438637
03 3,Wien,921,48.20833,16.373064
04 4,München,210,48.133333,11.566667

Aufgabe ist, die Kenngrößen als Kreise auf eine Karte zu projizieren. Listing 3 zeigt die mögliche Lösung als Bash-Skript. Die Zeilen 3 bis 11 definieren einige Variablen, bevor das Kommando in Zeile 14 eine Karte von Mitteleuropa zeichnet. Der Befehl ähnelt dem der Mercatorprojektion aus Listing 1, wobei die GMT Wasserflächen mit »-S« blau einzeichnen und Landesgrenzen durch »-N« hinzufügen. Wichtig ist der Parameter »-K«, er zeigt den GMT, dass noch weitere Kommandos folgen, und unterdrückt den Postscript-Footer in der Ausgabe. Umgekehrt verhindert der Parameterwert »-O«, dass ein neuer Postscript-Header in der Ausgabe landet. Daher müssen alle Befehle außer dem ersten den Parameter »-O« enthalten und alle außer dem letzten »-K«. Dieses Verhalten von GMT ist für Einsteiger etwas verwirrend, vor allem beim Schreiben von Skripten.

Die Zeilen 17 bis 31 kümmern sich um die Ausgabe der Kreise im Dokument, wobei ein wenig Shell-Magie notwendig ist. »cut«, »sort« und »tail« in Zeile 17 lesen den höchsten Wert der Kennzahlenliste aus und hinterlassen ihn in einer Variablen. In Zeile 20 entfernt »sed« zunächst Leerzeilen aus der CSV-Datei, bevor eine Schleife die Datei zeilenweise einliest. Erneut zum Einsatz kommt »cut« in den Zeilen 22 bis 24, wo das Skript den Wert einzelner Spalten der CSV-Datei in Variablen speichert.

Danach errechnet Listing 3 aus diesen die Größe des Kreises in Zentimetern (Zeile 27). Dies geschieht mit Hilfe des arithmetischen Rechners »bc«, der im Gegensatz zur Bash auch Fließkommazahlen berechnet. Der Kreisdurchmesser in Zentimetern steht nun fest, in Zeile 30 findet sich wiederum der Aufruf eines GMT-Befehls: »psxy« zeichnet Symbole, Linien und Polygone auf Karten.

Listing 3: GMT-Skript mit
Datenimport

01 #!/bin/bash
02 
03 #Daten
04 data="listing2.csv"
05 #Ausgabe
06 output="mitteleuropa.ps"
07 #größter Kreis ist $circle cm groß
08 circle=5
09 
10 #GMT-Wrapper?
11 gmt=$(which GMT)
12 
13 #Küstenlinie
14 $gmt pscoast -JM16c -R4/20/43/55 -Di -B -W0.3pt -S173/216/230 -A50 -G230 -N1/0.25p,- -P -K > "$output"
15 
16 #Maximum herausfinden
17 max=$(cut -d',' -f3 "$data" | sort -n | tail -1)
18 
19 #Zeilenweise nicht-leere Zeilen bearbeiten
20 sed -e '/^s*$/d' "$data" | while read line;
21 do
22   amount=$(echo $line | cut -d',' -f3)
23   lon=$(echo $line | cut -d',' -f5)
24   lat=$(echo $line | cut -d',' -f4)
25 
26   #Größe des Kreises berechnen
27   size=$(echo "scale=2; $amount/$max*$circle" | bc)
28 
29   #Kreis zur Karte hinzufügen
30   echo "$lon $lat" | $gmt psxy -R -J -Sc${size}c -G255/144/0 -O -K >> "$output"
31 done;
32 
33 #Ortsnamendaten in GMT-Datei umwandeln
34 sed -e '/^s*$/d' "$data" | awk -F',' '{printf "%s %s 12 0 1 CM %sn", $5, $4, $2}' | iconv -f "UTF-8" -t "iso-8859-1" §§ -o locations.txt
35 
36 #..und darstellen
37 #Stadtnamen
38 $gmt pstext -R -J -G0/0/0 -Dj0.2/0.2 -O < locations.txt >> "$output"
39 
40 rm -f locations.txt

Dem aufmerksamen Leser ist vielleicht nicht entgangen, dass dieser Aufruf die Parameter »-J« und »-R« ohne weitere Informationen nennt. Der Grund für diese komfortable Vereinfachung ist die History-Funktion von GMT. Die Tools speichern eine eigene Befehlshistorie in der Datei ».gmtcommands4« im aktuellen Ordner und halten darin auch erweiterte Parameter vor. Der Anwender braucht lediglich Kartenausschnitt und -größe im ersten Befehlsaufruf anzugeben, die weiteren Aufrufe holen sich die entsprechenden Daten aus der History.

»psxy« erwartet Koordinaten von der Standardeingabe und liest zeilenweise Längen- und Breitengrad ein, die durch Leerzeichen voneinander getrennt sind. Der Parameter »-Sc« veranlasst »psxy« dazu, einen Kreis mit einem in der Variablen gespeicherten Durchmesser zu zeichnen. Als Füllfarbe definiert »-G« ein sattes Orange im RGB-Format, fertig.

Ortsnamen und Schriftformate

Jetzt fehlen noch die Ortsnamen auf der Karte. Das Skript erstellt dazu zunächst in den Zeilen 34 bis 38 eine temporäre Datei, »sed« filtert die Leerzeilen aus der CSV-Datei, »awk« formatiert die Spalten in ein GMT-konformes Format. Dies besteht aus sieben Spalten: Längen- und Breitengrad, Schriftgröße, Rotationswinkel in Grad, Schriftart, Positionierung und auszugebende Zeichenkette. Die Schriftart ist eine Nummer zwischen 0 und 35 und gibt einen Postscript-Font an. Listing 3 verwendet Schrift »1«, was für Helvetica bold steht. Eine Liste der Schriften befindet sich im Anhang G des “Technical Reference and Cookbook” von GMT. Die Positionierungsangabe »CM« bedeutet Center Middle, der Text erscheint genau mittig über der angegebenen Koordinate.

GMT erwartet seine Daten übrigens im ISO-8859-1-Format. Wer Daten in einer anderen Zeichenkodierung vorliegen hat, muss diese mit Hilfe von »iconv« konvertieren, wie das Listing anhand von UTF-8 zeigt. Sonderzeichen dürfen allerdings auch im Oktalformat angegeben werden. Aus »München« wird somit »M374nchen«. Als Lohn der Mühe erzeugt das Skript eine durchaus überzeugende Karte (Abbildung 4), die sich mit Hilfe von Tools wie »ps2grid« in andere Formate umwandeln lässt.

Abbildung 4: Mit Hilfe von Bash-Skripten lassen sich sehr leicht Daten in GMT importieren und visualisieren.

Abbildung 4: Mit Hilfe von Bash-Skripten lassen sich sehr leicht Daten in GMT importieren und visualisieren.

Höhen und Tiefen

Damit nicht genug, die GMT können nicht nur schematische Karten erstellen, sondern mit Hilfe von Höhendaten auch sehr schöne topografische Karten erzeugen. Relativ einfach einzubinden sind die SRTM-v2-Daten der Nasa [4] sowie die ETOPO-Topografiedaten des amerikanischen National Geophysical Data Center (NGCD, [5]). Das aktuelle ETOPO 1 besitzt eine Auflösung von 1 Gradminute und ist daher gut für Karten geeignet, die Kontinente oder Staaten darstellen. SRTM besitzt die wesentlich bessere Auflösung von 3 Gradsekunden und bietet sich für detaillierte Karten an.

Der Nachteil an SRTM ist, dass die Höhendaten in Beständen von 1 mal 1 Grad vorliegen und die GMT diese erst zusammensetzen und konvertieren müssen. Eine praktische Anleitung am Beispiel des Nördlinger Ries findet sich dazu auf der deutschen GMT-Hilfeseite von Wikipedia [6]. Die ETOPO-1-Daten gibt es als 300-MByte-Download unter dem Namen »ETOPO1_Ice_g_gmt4.grd.gz« auf der NGCD-Seite. Nach Download und Entpacken lassen sich die Daten direkt von GMT verwenden.

Für topografische Karten ist es notwendig, Farben für die Höhen und Tiefen festzulegen. Die Listings 4 und 5 zeigen die dafür passenden Dateien. Diese definieren ein Farbschema für Land und Meer, wie man es in deutschen Atlanten häufig findet. Die Dateien sind in acht Spalten aufgeteilt, von denen jeweils vier ein Höhe/RGB-Farbwert-Paar bilden. Farbschemata lassen sich mit Hilfe des Befehls »makecpt« erstellen.

Listing 4:
»land.cpt«

01 0 0 97 71          50 16 122 47
02 50 16 122 47      500 232 215 125
03 500 232 215       125 1500 161 67 0
04 1500 161 67 0    2000 130 30 30
05 2000 130 30 30   3000 110 110 110
06 3000 110 110 110 4000 255 255 255
07 4000 255 255 255 6000 255 255 255
08 B 0 97 71
09 F 255 255 255
10 N 255 255 255

Listing 5:
»meer.cpt«

01 -11000 36 38 175 -5500 56 58 195
02 -5500 56 58 195  -3000 70 72 214
03 -3000 70 72 214  -2000 81 102 217
04 -2000 81 102 217  -750 100 129 223
05 -750 100 129 223   -70 131 161 230
06 -70 131 161 230    -20 164 192 240
07 -20 164 192 240      0 170 200 255
08 N 170 200 255
09 F 170 200 255
10 B 170 200 255

Listing 6 fügt die Teile zusammen: Die Grundparameter für GMT hält das Skript hier in Variablen, da die nachfolgenden Befehle nicht alle auf die History-Daten von GMT zurückgreifen können. In der Zeile 12 schneidet GMT mittels »grdcut« den gewünschten Kartenausschnitt aus dem ETOPO-1-Datensatz aus und speichert ihn in einer eigenen Grid-Datei. Diese genügt eigentlich für die Kartenprojektion, aber eine gute topografische Karte gewinnt an Tiefe durch einen Schattenwurf, der auf die Höhenlinien projiziert wird. Durch solche Schatten entsteht ein einfacher 3D-Effekt auf der Karte, den die GMT mit »grdgradient« (Zeile 14) erzeugen. Für den gewünschten Kartenausschnitt stehen nun also zwei Dateien mit Höhendaten zur Verfügung, eine mit und eine ohne Schattenwurf. In den Zeilen 19 und 20 zeichnet das Skript die eigentliche Karte aus den Höhendaten.

Listing 6: Eine topografische
Karte erstellen

01 #!/bin/sh
02 
03 #GMT-Wrapper?
04 gmt=$(which GMT)
05 
06 #Definitionen
07 output=europafarbe
08 range="-R4/20/43/55"
09 proj="-JM16c"
10 
11 #Topographische Daten ausschneiden
12 $gmt grdcut ETOPO1_Ice_g_gmt4.grd $range -G$output.grd
13 #Schatten der Kontinente erstellen
14 $gmt grdgradient $output.grd -A180 -Nt0.3 -G${output}_schatten.grd
15 
16 #Meeres- und Landkarte erstellen
17 $gmt grdimage $output.grd -Cmeer.cpt $range $proj -P -K > $output.ps
18 $gmt pscoast -Gc -Di -R -J -K -O >> $output.ps
19 $gmt grdimage -Cland.cpt -R -J -K -O $output.grd -I${output}_schatten.grd >> $output.ps
20 $gmt pscoast -Q -K -O >> $output.ps
21 
22 #Rahmen dazu
23 $gmt psbasemap -B5g5 -R -J -O >> $output.ps

Niederlande: Unter Wasser oder über Wasser?

Jetzt stellt sich das Problem, dass die Höhe allein nichts darüber aussagt, ob ein bestimmter Ort auf der Karte über oder unter dem Wasser liegt. Schließlich soll die Karte ja auch weit über dem Meeresspiegel liegende Seen blau darstellen, Teile von Holland dagegen grün. Die Lösung bieten die vektorbasierten Karten, die »pscoast« verwenden: Hier sind Land- und Wasserflächen definiert. Das Skript geht dazu in zwei Schritten vor: Zunächst erstellt »grdimage« eine Wasserkarte. Als Ausgangsbasis verwendet es die Höhendaten ohne Schattenwurf und die fürs blaue Meer vorgesehene Farbschema-Datei.

Wer das Skript nach Zeile 17 abbricht und die Postscript-Datei anschaut, sieht eine Karte mit Meeresboden, auf dem die Kontinente hellblau erscheinen. Da aber Schattenwürfe im Meer wenig Sinn ergeben, verwenden die GMT hier nur die grundlegenden Grid-Daten.

Clipping und 3D

In einem zweiten Schritt überlagert GMT die Stellen mit der Karte der Landmasse. Listing 6 versetzt die GMT dafür in einen speziellen Ausschneidemodus, den Clipping Mode. Das Skript ruft dazu in Zeile 18 den bereits bekannten Befehl »gmtcoast« auf. Er zeichnet diesmal aber keine Küstenlinien, der »-Gc«-Parameter startet den Clipping-Modus. Der zweite Aufruf von »grdimage« erstellt nun die Landkarte für die trockenen Gebiete.

Das Clipping verhindert, dass die Wasserflächen überschrieben werden. Die GMT verwenden die Karte mit dem Schattenwurf, um besagten 3D-Effekt zu erzielen. Der Aufruf von »pscoast -Q« (Zeile 20) beendet den Clipping-Modus, »psbasemap« (Zeile 23) erstellt abschließend noch einen Rahmen und Gradlinien. Die resultierende Karte (Abbildung 5) erinnert tatsächlich an einen Schulatlas. Das Skript lässt sich natürlich erweitern, um Städte, Landesgrenzen oder anderes in die Karte zu integrieren.

Abbildung 5: Topografische Karten benötigen Höheninformationen, die die GMT als Farbraster ausgeben. Die Farbgebung bestimmt der Benutzer in simplen Textdateien.

Abbildung 5: Topografische Karten benötigen Höheninformationen, die die GMT als Farbraster ausgeben. Die Farbgebung bestimmt der Benutzer in simplen Textdateien.

GMT bietet über die dargestellten Beispiele hinaus viele weitere Möglichkeiten. So ist es nicht allzu schwer, Karten zu rotieren und mit 3D-Balkendiagrammen zu versehen. Außerdem kann GMT Distanzen zwischen zwei Orten berechnen und auf den Karten anzeigen.

Andere Daten

Aber auch die Visualisierung nicht-geografischer Daten befindet sich im Repertoire der Generic Mapping Tools. In der umfangreichen Dokumentation [7] des Werkzeugsets finden sich Beispiele für das Erstellen von Wochenkalendern, die Darstellung von Daten in zwei oder drei Dimensionen sowie die Projektion einer Formel in einen 3D-Graphen. Mercator hätte seine Freude. (mfe)

Der Autor

Dr. Maximilian Kalus ist freiberuflicher Informatiker und Wirtschaftshistoriker. Er arbeitet für mittelständische Firmen als Entwickler und Berater. Aktuell propagiert er den Nutzen von Open-Source-Software in einem Museumsprojekt für die Wirtschaftsgeschichte des 16. Jahrhunderts – der Zeit Mercators.

Infos

[1] Openstreetmap: [http://www.openstreetmap.org]

[2] Homepage der Generic Mapping Tools:[http://gmt.soest.hawaii.edu]

[3] GMT-Makefile erstellen: [http://gmt.soest.hawaii.edu/gmt/gmt_install_form.html]

[4] SRTM-v2-Topografie-Daten der NASA: [http://www.vterrain.org/Elevation/SRTM]

[5] ETOPO-Topografiedaten des NGCD: [http://www.ngdc.noaa.gov/mgg/global/global.html]

[6] GMT-Hilfeseite von Wikipedia: [http://de.wikipedia.org/wiki/Hilfe:GMT]

[7] Dokumentation der GMT:[http://gmt.soest.hawaii.edu/gmt/doc/gmt/html/gmt_services.html]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben