GMT-Logo

Grundkurs GMT

Sommersemester 2002, Freie Universität Berlin
Autor: Dr. David Völker
Institut für Geowissenschaften, Freie Universität Berlin, Malteserstr.74-100, D-12249 Berlin; Raum B138, tel: 030-838-70289
email: voelker@zedat.fu-berlin.de

Siegel der FU Berlin

Inhalt:

  1. Was ist GMT?
  2. Was kann GMT - nicht?
  3. Wie funktioniert GMT?
  4. Wichtige GMT-Befehle in Übungen
    • Übung01: Grundkarte mit psbasemap
    • Übung02: Küstenlinien mit pscoast
    • Übung03: Symbole und Text mit psxy und pstext
    • Übung04: Konturieren von Daten & Tiefenlinien mit pscontour
    • Übung05: Farbdarstellung der Daten mit grdimage
    • Übung06: Anpassung des grids und Legende mit psscale
    • Übung07: Farbtabelle handgestrickt
    • Übung09: 3-D-Blockbild
  5. Voreinstellungen: der .gmtdefaults - file
  6. Literatur
  7. Herunterladen der Übungsdateien und des Skripts als Word-Datei

Beispiel für einen Konturplot mit GMT: Sedimentmächtigkeit um einen angeströmten Zylinder


Was ist GMT?

GMT steht für Generic Mapping Tools, eine von Paul Wessel and Walter H. F. Smith erdachte und programmierte Sammlung von Programmen, mit denen man (unter anderem) alle möglichen Sorten von geologischen Daten in Kartenentwürfe eintragen kann. Man kann z.B.:

GMT läuft unter der GNU General Public License, soll heißen ist umsonst und wird als frei verfügbarer und veränderbarer Programmcode verteilt. Das hat unmittelbare Vorteile, natürlich wegen der Kosten, die man für andere software aufbringen müsste, weil man eigene Dinge einprogrammieren kann, aber auch deshalb, weil man die Programme für jede Sorte von Rechnerarchitektur passend kompilieren kann. - allerdings auch muss, denn es wird keine fertige Software geliefert.

Der Kurs beschränkt sich auf genau diese Funktionen von GMT, es geht im wesentlichen um das rasche Erstellen von bathymetrischen Karten und bietet so nur einen Ausschnitt der verfügbaren Möglichkeiten. Für eine detaillierte und vollständige Anleitung bietet sich das "GMT-Cookbook" von Wessel & Smith selbst an. Es kann von der GMT-Homepage zusammen mit dem eigentlichen Programm als Postscript-Datei heruntergeladen werden.

Auf diesen Seiten wird außerdem unterstellt, daß GMT auf einem Rechner funktionierend installiert ist und der Benutzer alle erforderlichen Rechte besitzt. Die folgenden Erklärungen beziehen sich auf eine UNIX-Umgebung. Die Installationsbeschreibung ist auf der GMT-Homepage nachzulesen. Dort gibt es auch die Angaben, wo der Quellcode zu beziehen ist, was für die Kompilation erforderlich ist etc.


Was kann GMT - nicht?

Mit GMT lassen sich -kurz gesagt- Karten der Erdoberfläche oder des Meeresbodens in einer erschlagenden Vielfalt von Projektionen und beliebiger Skalierung erstellen. Anstelle von topografischen Daten können auch beliebige andere Daten konturiert werden, z.B. Schweredaten, Sedimentmächtigkeiten, Konzentrationen etc, aber das soll nicht Schwerpunkt dieses Kurses sein. Durch berechnete Schattenwürfe kann eine optische Tiefe simuliert werden, es lassen sich aber auch 3D-Blockbildern erzeugen. In die Karten kann man an geografischen Koordinaten Symbole, Linien, Flächen und Texte eintragen. Die Ausgabedateien sind Postscript-files, die entweder direkt gedruckt oder in andere Grafikprogramme (z.B. CorelDraw) eingelesen werden können.

Bislang ist es nicht möglich halbtransparente "layers" übereinander zu stapeln, also z.B. die geologische Karte durchscheinend über die Topografie zu legen.


Wie funktioniert GMT?

Zunächst einmal für alle Windows-gewöhnten Benutzer: Es gibt von Haus aus keine Benutzeroberfläche, die Programme stammen aus der UNIX-Welt, wo so etwas nicht unbedingt gefragt ist. Inzwischen wurden von verschiedenen Leuten unterschiedliche Arten von Benutzeroberflächen dazugeflickt, aber damit kenne ich mich nicht aus.

Das heißt, daß die Programme der GMT-Sammlung in bester UNIX-Tradition als Befehle funktionieren, die in einem Eingabeterminal (command-shell) eingetippt werden. Die Befehle werden mit Daten (z.B. einer Eingabedatei) gefüttert, manipulieren diese Daten in einer Art und Weise, die durch Befehlsoptionen bestimmt wird und das Ergebnis in eine Ausgabedatei schreiben, nach folgendem Schema:

GMT-BEFEHL EINGABEDATEI -Option1 -Option2 -Option3 > AUSGABEDATEI

Die Ausgabedatei ist in der Regel eine Postscript-Datei, die ohne irgendwelche Druckertreiber von Postscript-fähigen Drucker interpretiert, oder von anderen Grafikprogrammen importiert werden kann.

In der Regel wird eine komplexere Karte einen Rahmen, Tiefenlinien, eine Küstenlinie etc. enthalten. Für jeden dieser Schritte wird ein anderer GMT-Befehl verwendet. Die Gesamtdarstellung wird dadurch erzeugt, daß die Ausgabe der verschiedenen Befehle wie in Ebenen übereinander gelegt wird. Technisch wird dabei die Ausgabe eines Befehls an die schon bestehende Ausgabedatei angehängt:

GMT-BEFEHL1 EINGABEDATEI -Option1 -Option2 -Option3 -K > AUSGABEDATEI
GMT-BEFEHL2 EINGABEDATEI -Option1 -Option2 -Option3 -K >> AUSGABEDATEI
GMT-BEFEHL3 EINGABEDATEI -Option1 -Option2 -Option3 >> AUSGABEDATEI

Die Option -K bedeutet, daß die Datei noch nicht abgeschlossen wird, der Doppelpfeil >> bedeutet in einer UNIX-Umgebung, daß an die bestehende Datei noch etwas drangehängt wird.

Praktischerweise wird man diese Befehlsfolgen nicht immer wieder neue eingeben, sondern in eine Stapeldatei oder Script-Datei (eine einfache Textdatei, in Folgenden einfach GMT-Datei genannt) schreiben, die dann aufgerufen werden kann und die Befehlsabfolge in Gang setzt. So kann man eine Datei immer weiter editieren, z.B. um den Kartenausschnitt zu verändern. Unter UNIX muss man dafür die Datei dafür noch ausführbar (executable, x) machen. Das geht mit dem Befehl chmod (change mode):

chmod +x GMT-DATEI

Wenn wir die Befehle schon in eine Datei eingeben, können wir uns die Sache durch Variablen erleichtern, die wir am Anfang der Datei mit einem = definieren. Diese Variablen werden dann im folgenden Code (in den üblichen UNIX-shells) durch ein $-Zeichen als solche gekennzeichnet und durch den eigentlichen Wert ersetzt. Ein #-Zeichen kennzeichnet einen Kommentar.
Wenn wir schon dabei sind können wir am Ende das Resultat, die Postscript-Ausgabedatei (in diesem Fall mittelmeer.ps) gleich in einen Postscript-viewer lenken, also ein kleines Programm, die uns das Ergebnis auf den Bildschirm zaubert. Weit verbreitet ist z.B. das Programm GhostView oder gv:

#Variablen
PS=mittelmeer.ps
PSVIEWER=gv

#GMT-Befehle
GMT-BEFEHL1 EINGABEDATEI -Option1 -Option2 -Option3 -K > $PS
GMT-BEFEHL2 EINGABEDATEI -Option1 -Option2 -Option3 -K >> $PS
GMT-BEFEHL3 EINGABEDATEI -Option1 -Option2 -Option3 >> $PS
$PSVIEWER $PS

Die symbolisierten Papierkanten sollen Anfang und Ende der Datei darstellen (sieht zwar eher wie eine Tapete aus...).


Wichtigste GMT Befehle

Im Folgenden werden einzelne, im oben genannten Zusammenhang wichtige Befehle vorgestellt und illustriert, was sie bewirken. Jeder einzelne Befehl hat eine ganze Reihe von Befehlsoptionen, die hier nicht alle vorgestellt werden können. Zu jedem der Befehle existiert eine detaillierte Beschreibung (manpage) die mit dem Befehl man GMT-BEFEHL abgefragt werden kann. Die Beispiels-skriptdateien (uebung01.gmt bis uebung08.gmt) bauen aufeinander auf, es kommt immer etwas neues dazu. Sie können am Ende der Seite auch heruntergeladen werden, um sie z.B. als Vorlage für eigene Karten zu verwenden.

Übung01: Grundkarte mit psbasemap

#!/bin/sh
# Karte Monterey Canyon, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung01.ps
#Koordinaten
NORD=38.5
SUED=34.0
WEST=-125
OST=-121
#Skalierung
SKALA=2.0
#PS-VIEWER
PSVIEWER=gimp

#GMT-Befehle
psbasemap -R"$WEST"/"$OST"/"$SUED"/"$NORD" -Jm"$SKALA"d
-Ba1g0.5/a1g0.5NSEW -V -U >$PS

$PSVIEWER $PS

Erläuterung

Was passiert hier? Zunächst einmal werden einige Variablen definiert, die dann später mit dem $-Zeichen wieder aufgegriffen werden, z.B. die geografischen Eckpunkte NORD/SUED/OST/WEST, die Skalierung, der Name der Ausgabedatei etc. Der Befehl selbst erzeugt den Rahmen. Die Option -J eröffnet die Möglichkeit verschiedener Projektionen, hier ist es eine Mercatorprojektion mit dem Maßstab 2.0 cm/Längengrad. Die Option -B ermöglicht die Annotation von geografischen Labeln am Rand, definiert die Dichte von Gitterpunkten. Für weitere Angaben betätige man man psbasemap


Übung02: Küstenlinien mit pscoast

#!/bin/sh
# Karte Monterey Canyon, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung02.ps
#Koordinaten
NORD=38.5
SUED=34.0
WEST=-125
OST=-121
#Skalierung
SKALA=2.0
#PS-VIEWER
PSVIEWER=gimp

#GMT-Befehle
psbasemap -R"$WEST"/"$OST"/"$SUED"/"$NORD" -Jm"$SKALA"d
-Ba1g0.5/a1g0.5NSEW -V -U -K > $PS
pscoast -R -Jm -B -W1.0p -Dh -Ir -O -V >> $PS

$PSVIEWER $PS

Erläuterung

Was ist dazugekommen? Die Variablen sind unverändert. Im Unterschied zum obigen Beispiel wird an die Ausgabe von psbasemap etwas drangehängt. Dazu muss die Option -K gesetzt werden. Die Ausgabe des Befehls pscoast wird als Overlay (-O) darübergelegt. mit -W kann man die Strichstärke bestimmen. Für weitere Angaben betätige man man psbasemap


Übung03: Symbole und Text mit psxy und pstext

#!/bin/sh
# Karte Monterey Canyon, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung03.ps
#Koordinaten
NORD=38.5
SUED=34.0
WEST=-125
OST=-121
#Skalierung
SKALA=2.0
#PS-VIEWER
PSVIEWER=gimp

#GMT-Befehle
psbasemap -R"$WEST"/"$OST"/"$SUED"/"$NORD" -Jm"$SKALA"d
-Ba1g0.5/a1g0.5NSEW -V -U -K > $PS
pscoast -R -Jm -B -W1.0p -Dh -Ir -O -V -K >> $PS
psxy -R -Jm -: -Sc0.3 -G255/0/0 -B -O -V -K «END»$PS
36.59 -123.20
37.72 -124.10
END
pstext -R -Jm -: -G0/0/255 -W250 -D0.2/0.2 -O -V «END»$PS
36.59 -123.20 12 0 1 1 P1
37.72 -124.10 12 0 1 1 P2
END

$PSVIEWER $PS

Erläuterung

Auf das obige Beispiel wird eine Layer mit Symbolen und Text gelegt, die an geografischen Positionen festgelegt sind. psxy liefert verschiedene Symbole (-Sc bedeutet einen Kreis), die in Größe und Farbe angepasst werden können (-G definiert die Farbe als RGB-Wert). Dazu gehört eigentlich eine getrennte Eingabedatei, in der die Koordinaten als Wertepaare eingetragen sind. In diesem Fall habe ich die Koordinaten aber gleich über das Wort END eingespeist. pstext plaziert Textfolgen an die angegebenen Koordinaten mit einem kleinen Versatz. Die Eingabedatei enthält außerdem Angaben über Größe und Position des Texts. Da die Koordinaten hier als latitude:longitude eingegeben wurden (also als y:x - Wertepaare und nicht als x:y) muss die Option -: gesetzt sein.


Übung04: Konturieren von Daten & Tiefenlinien mit pscontour

#!/bin/sh
# Karte Monterey Canyon, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung04.ps
#topo: predicted seafloor topography (global_topo_2min),
#W H F Smith and D T Sandwell, Science, v 277, pp 1956--62, Sep 26 1997.
TOPOPATH=/opt/data/sandwell
TOPO2MINFILE="$TOPOPATH"/topo_8.2.img
#Koordinaten
NORD=38.5
SUED=34.0
WEST=-125
OST=-121
#Skalierung
SKALA=2.0
#PS-VIEWER
PSVIEWER=gimp

#GMT-Befehle
psbasemap -R"$WEST"/"$OST"/"$SUED"/"$NORD" -Jm"$SKALA"d
-Ba1g0.5/a1g0.5NSEW -V -U -K > $PS
img2mercgrd $TOPO2MINFILE -T1 -S1.0 -R -Guebung04.grd
grdcontour uebung04.grd -Jx"$SKALA" -C200 -W1/0/0/0 -O -V -K >>$PS
pscoast -R -Jm -B -W1.0p -Dh -Ir -O -V -K >> $PS
psxy -R -Jm -: -Sc0.3 -G255/0/0 -B -O -V -K «END»$PS
36.59 -123.20
37.72 -124.10
END
pstext -R -Jm -: -G0/0/255 -W250 -D0.2/0.2 -O -V «END»$PS
36.59 -123.20 12 0 1 1 P1
37.72 -124.10 12 0 1 1 P2
END

$PSVIEWER $PS
#Aufräumen
rm uebung04.grd

Erläuterung

Jetzt wird es langsam kompliziert: um Daten zu konturieren, müsen wir sie erstmal haben. Es könnten Koordinaten und Werte von Datenpunkten als x:y:z Paare in einer Datei sein oder binär codierte Werte. Ich verwende hier den bathymetrischen Datensatz GLOBALTOPO2MIN von Smith & Sandwell (siehe hierzu auch Kapitel zu bathymetrischen Datensätzen). Er besteht aus einer Datei (topo_8.2.img), auf die durch TOPOPATH und TOPO2MINFILE verwiesen wird. Um aus diesem Datensatz einen begrenzten Grid zu extrahieren wird zunächst das Programm img2mercgrd benötigt. Es produziert einen auf die Mercatorprojektion angepassten Datensatz (hier die Datei uebung04.grd), der dann, allerdings mit der Option -Jx (einfache x-y-Projektion) als Layer verwendet werden kann. Das Programm grdcontour gridded die Daten und zeichnet Konturlinien. Der Abstand der Linien kann mit -C gewählt werden, die Farbe & Stärke mit der Option -W. Da der durch img2mercgrd erzeugte gridfile uebung04.grd relativ groß sein kann, lohnt es sich hinterher gleich aufzuräumen: der Unix-Befehl rm (remove file) löscht ihn kurz und schmerzlos nach der Operation


Übung05: Farbdarstellung der Daten mit grdimage

#!/bin/sh
# Karte Monterey Canyon, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung05.ps
#topo: predicted seafloor topography (global_topo_2min),
#W H F Smith and D T Sandwell, Science, v 277, pp 1956--62, Sep 26 1997.
TOPOPATH=/opt/data/sandwell
TOPO2MINFILE="$TOPOPATH"/topo_8.2.img
#Koordinaten
NORD=38.5
SUED=34.0
WEST=-125
OST=-121
#Skalierung
SKALA=2.0
#Schatten-Intensitaet
SHADE=10000.
#Schattenrichtung
SHADEDIR=300
#PS-VIEWER
PSVIEWER=gimp

#GMT-Befehle
psbasemap -R"$WEST"/"$OST"/"$SUED"/"$NORD" -Jm"$SKALA"d
-Ba1g0.5/a1g0.5NSEW -V -U -K > $PS
img2mercgrd $TOPO2MINFILE -T1 -S1.0 -R -Guebung05.grd
grdgradient uebung05.grd -V -A"$SHADEDIR" -Gtemp.grd
grdmath temp.grd $SHADE / = uebung05_grad.grd
makecpt -Csealand > topo.cpt
grdimage uebung05.grd -Ctopo.cpt -Jx"$SKALA"d
-Iuebung05_grad.grd -O -K -V >>$PS
grdcontour uebung05.grd -Jx"$SKALA" -C200 -W1/0/0/0 -O -V -K >>$PS
pscoast -R -Jm -B -W1.0p -Dh -Ir -O -V -K >> $PS
psxy -R -Jm -: -Sc0.3 -G255/0/0 -B -O -V -K «END»$PS
36.59 -123.20
37.72 -124.10
END
pstext -R -Jm -: -G0/0/255 -W250 -D0.2/0.2 -O -V «END»$PS
36.59 -123.20 12 0 1 1 P1
37.72 -124.10 12 0 1 1 P2
END

$PSVIEWER $PS
#Aufräumen
rm uebung05.grd uebung05_grad.grd temp.grd

Erläuterung

Wir gehen noch einen Schritt weiter. Der mit img2mercgrd extrahierte gridfile, der unsere Tiefendarstellung enthält soll mit grdimage als Farbverteilung dargestellt werden. Zu diesem Zweck benötigen wir eine Datei, die Wertebereichen (Tiefenstufen) eine bestimmte Farbe zuweist (cpt-Datei). Solch eine Datei können wir per Hand editieren, wir können uns aber auch helfen lassen von dem Programm makecpt. Dieses Programm erzeugt eine Farbtabelle, entweder in Intervallen, die wir bestimmen, oder nach bewährten Vorgaben, wie in diesem Fall (siehe : man makecpt). Die Farbtabelle (topo.cpt) geht als Eingabedatei in grdimage ein, ebenso die grid-Datei (uebung05.grd). Als zusätzliches Schmankerl habe ich noch einen sanften "Schattenwurf" auf die Topografie gelegt, die dadurch plastischer wirkt. Zum Erzeugen des Schattens wird zunächst mit dem Befehl grdgradient der räumliche Gradient des Gridfiles aus einem bestimmten Winkel (hier: NW, 300°, Option -A) berechnet und in eine dritte Datei geschrieben (uebung05_grad.grd). Diese Datei wird mit einem Faktor multipliziert (grdmath), dadurch verstärkt oder abgeschwächt und ebenfalls in grdimage eingespeist. Voila !


Übung06: Anpassung des grids und Legende mit psscale

#!/bin/sh
# Karte Monterey Canyon, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung06.ps

#topo: predicted seafloor topography (global_topo_2min),
#W H F Smith and D T Sandwell, Science, v 277, pp 1956--62, Sep 26 1997.
TOPOPATH=/opt/data/sandwell
TOPO2MINFILE="$TOPOPATH"/topo_8.2.img
#Koordinaten
NORD=38.5
SUED=34.0
WEST=-125
OST=-121
#korrigierte Koordinaten (grdinfo uebung06.grd)
NORD_K=38.5200537664
SUED_K=33.9795387952
WEST_K=-125
OST_K=-121
#Skalierung
SKALA=2.0
#Schatten-Intensitaet
SHADE=20000.
#Schattenrichtung
SHADEDIR=45
#PS-VIEWER
PSVIEWER=gimp

#GMT-Befehle
psbasemap -R"$WEST_K"/"$OST_K"/"$SUED_K"/"$NORD_K" -Jm"$SKALA"d
-Ba1g0.5/a1g0.5NSEW -V -U -K > $PS
img2mercgrd $TOPO2MINFILE -T1 -S1.0
-R"$WEST"/"$OST"/"$SUED"/"$NORD" -Guebung06.grd
grdgradient uebung06.grd -V -A"$SHADEDIR" -Gtemp.grd
grdmath temp.grd $SHADE / = uebung06_grad.grd
makecpt -Csealand > topo.cpt
grdimage uebung06.grd -Ctopo.cpt -Jx"$SKALA"d
-Iuebung06_grad.grd -O -K -V >>$PS
grdcontour uebung06.grd -Jx"$SKALA" -C200 -W1/0/0/0 -O -V -K >>$PS
psscale -Ctopo.cpt -D8.5/5.0/10/0.5 -L -B:[m]: -N300 -O -V -K >>$PS
pscoast -R -Jm -B -W1.0p -Dh -Ir -O -V -K >> $PS
psxy -R -Jm -: -Sc0.3 -G255/0/0 -B -O -V -K «END»$PS
36.59 -123.20
37.72 -124.10
END
pstext -R -Jm -: -G0/0/255 -W250 -D0.2/0.2 -O -V «END»$PS
36.59 -123.20 12 0 1 1 P1
37.72 -124.10 12 0 1 1 P2
END

$PSVIEWER $PS
# Aufraeumen
rm uebung06.grd uebung06_grad.grd temp.grd

Erläuterung

Was passiert hier? Drei Dinge: einerseits habe ich mal die Beleuchtungsrichtung und die Stärke des Schattens variiert (SHADE und SHADEDIR) um zu demonstrieren, wie verschieden doch die selbe Region wirken kann. Zweitens habe ich eine kleine Anpassung vorgenommen: img2mercgrd produziert eine grid-Datei, deren Kanten nicht ganz exakt mit den vorgegeben Koordinaten übereinstimmen. Um Karte und Grid exakt übereinanderzulegen, muss man die Karte (psbasemap) mit den korrigierten Koordinaten zeichnen (vergleiche mit der Abbildung oben). Die korrigierten Koordinaten erhält man durch den Befehl grdinfo uebung06.grd. Drittens habe ich den Befehl psscale verwendet um eine Legende zu zeichnen. Der Befehl benötigt Angaben zur Position der Skala und seiner Höhe und Breite, sowie die Farbtabelle (hier: topo.cpt), um eine Legende mit Beschriftung zu erzeugen.


Übung07: Farbtabelle handgestrickt

#!/bin/sh
# Karte Kapbecken, David Völker 10/01
#==========================================
#Ausgabedatei
PS=uebung07.ps

#topo: predicted seafloor topography (global_topo_2min),
#W H F Smith and D T Sandwell, Science, v 277, pp 1956--62, Sep 26 1997.
TOPOPATH=/opt/data/sandwell
TOPO2MINFILE="$TOPOPATH"/topo_8.2.img
#Koordinaten
NORD=-18
SUED=-43
WEST=0
OST=22
#korrigierte Koordinaten (grdinfo uebung07.grd)
NORD_K=-17.9965666536
SUED_K=-43.0110266131
WEST_K=0
OST_K=22.0333333333
#Skalierung
SKALA=0.68
#PS-VIEWER
PSVIEWER=gimp

#Colortable handgestrickt
echo -10000  255   255   255   -2000  255   255   255  >topo.cpt
echo -2000   140   102   255   -1900  140   102   255 >>topo.cpt
echo -1900   102   132   255   -1800  102   132   255 >>topo.cpt
echo -1800   102   202   255   -1700  102   202   255 >>topo.cpt
echo -1700   102   255   240   -1600  102   255   240 >>topo.cpt
echo -1600   102   255   171   -1500  102   255   171 >>topo.cpt
echo -1500   102   255   102   -1400  102   255   102 >>topo.cpt
echo -1400   171   255   102   -1300  171   255   102 >>topo.cpt
echo -1300   255   238   166   -1200  255   238   166 >>topo.cpt
echo -1200   255   184   166   -1100  255   184   166 >>topo.cpt
echo -1100   255   181   203   -1000  255   181   203 >>topo.cpt


#GMT-Befehle
psbasemap -R"$WEST_K"/"$OST_K"/"$SUED_K"/"$NORD_K" -Jm"$SKALA"d
-Ba2g1/a2g1NSeW -V -U -K -P > $PS
img2mercgrd $TOPO2MINFILE -T1 -S1.0
-R"$WEST"/"$OST"/"$SUED"/"$NORD" -Guebung07.grd
grdimage uebung07.grd -Ctopo.cpt -Jx"$SKALA"d -O -K -V >>$PS
grdcontour uebung07.grd -Jx"$SKALA" -C1000 -W1/0/0/0 -O -V -K >>$PS
psscale -Ctopo.cpt -D15.5/8.0/10/0.5 -L -B:[m]: -N300 -O -V -K >>$PS
pscoast -R -Jm -B -W1.0p -G010/010/010 -Dh -Ir -O -V >> $PS

$PSVIEWER $PS
# Aufraeumen
rm uebung07.grd

Erläuterung

Wir können uns eine Farbtabelle auch per Hand auf unsere Bedürfnisse zuschneidern, beispielsweise wenn wir - wie in diesem Fall - nur die Tiefenwerte von -1000 bis -2000 m interessant finden. Die Datei, welche die Farbtabelle enthält (topo.cpt) besteht aus mehreren Zeilen die je für einen Tiefenintervall und den zugeordneten Farbwert stehen. Die Farbwerte werden in rot/grün/blau (rgb), jeweils von 0-255 (der Zahlenbereich, die mit einem Byte dargestellt werden kann 28), d.h. 0/0/0 = schwarz, 255/255/255 = weiß, 255/0/0 = 100%rot etc...

Genauso wurde im Befehl pscoast auch der schwarze Kontinent mit -G010/010/010 ziemlich schwarz gehalten.


Übung09: 3-D-Blockbild

#! /bin/sh
# 3D-darstellung von bathymetrischem Datensatz
# ============================================
#Rohdaten
grdclip uebung09.grd -Guebung09_clipped.grd -Sa-3800/NaN -Sb-5100/NaN -V
GRDFILE=uebung09_clipped.grd
#Ausgabedatei
PS=uebung09.ps
#Koordinaten
NORD=12.2
SUED=12.05
WEST=-49.28
OST=-49.13
#Skalierung
SKALA=80.
ZSKALA=0.0015
AZIMUTH=240
ELEVATION=30
#PS-VIEWER
PSVIEWER=gimp
# Definition einer Farbtabelle
echo  -5250  37  57 175  -5100  40 127 251 > topo.cpt
echo  -5100  40 127 251  -4950  50 190 255 >> topo.cpt
echo  -4950  50 190 255  -4800 106 235 255 >> topo.cpt
echo  -4800 106 235 255  -4650 138 236 174 >> topo.cpt
echo  -4650 138 236 174  -4500 205 255 162 >> topo.cpt
echo  -4500 205 255 162  -4350 240 236 121 >> topo.cpt
echo  -4350 240 236 121  -4200 255 189  87 >> topo.cpt
echo  -4200 255 189  87  -4050 255 161  68 >> topo.cpt
echo  -4050 255 161  68  -3900 255 186 133 >> topo.cpt
echo  -3900 255 186 133  -3750 255 255 255 >> topo.cpt

grdgradient "$GRDFILE" -A90 -G"$GRDFILE".drvx -M
grdgradient "$GRDFILE" -A0 -G"$GRDFILE".drvy -M
grdmath "$GRDFILE".drvx 90 MUL 10 MUL = "$GRDFILE".magx
grdmath "$GRDFILE".drvy 90 MUL 10 MUL = "$GRDFILE".magy
grdmath "$GRDFILE".magx 2.0 POW "$GRDFILE".magy 2.0 POW ADD 1.0 ADD SQRT = "$GRDFILE".denom
grdmath "$GRDFILE".magx "$GRDFILE".denom DIV = "$GRDFILE".normx
grdmath "$GRDFILE".magy "$GRDFILE".denom DIV = "$GRDFILE".normy
grdmath 1.0 "$GRDFILE".denom DIV = "$GRDFILE".normz
grdmath "$GRDFILE".normx 0 MUL "$GRDFILE".normy 0.866025408250255 MUL ADD
"$GRDFILE".normz 0.49999999226498 MUL ADD -0.5 ADD = "$GRDFILE".int
grdview $GRDFILE -Jm$SKALA -Jz$ZSKALA -E"$AZIMUTH"/"$ELEVATION" 
-R"$WEST"/"$OST"/"$SUED"/"$NORD" -Ctopo.cpt -I"$GRDFILE".int -Qi -K -V -Y3 -P > $PS
psscale -Ctopo.cpt -D8/-1/14/0.4h -B":Tiefe in m:" -K -O -V -P>> $PS
psbasemap -Jm$SKALA -Jz$ZSKALA -E"$AZIMUTH"/"$ELEVATION" -R -B2m/2mWSZ -O -V -P >> $PS

$PSVIEWER $PS

Erläuterung

Das Beispiel zeigt ziemlich viel neues, soll aber hier nur zwei weitere Eigenschaften von GMT demonstrieren. (1) es gibt mehrere Routinen um Rohdaten zu prozessieren: hier werden mit dem Befehl grdclip Datenausreisser aus einem bathymetrischen Ddatensatz (uebung09.grd) herausgesäubert: alle Werte > -3800 m und alle Werte < -5100 sind völlig unwahrscheinlich und werden in der Ausgabedatei (uebung09_clipped.grd) durch ein spezielle Kennzeichnung (NaN - Not a Number) ersetzt. (2) bestimmte Befehle erlauben eine 3D-Darstellung. Dazu muß eine Skalierung entlang der z-Achse und Betrachtungsrichtung und -höhe (Azimuth & Elevation) angegeben werden (hier im Befehl grdview).


Voreinstellungen: der .gmtdefaults - file

Eine ganze Reihe von Definitionen, die sich auf die Textgröße, Stiftdicke, Hintergrundfarbe ... beziehen werden "ab Werk" geliefert und stehen in einer versteckten Datei namens .gmtdefaults im Stammverzeichnis des Programms. Wir können siese Werte individuell anpassen, z.B. um A0-Drucke zu erzeugen, indem wir eine Kopie der Datei in unser Arbeitsverzeichnis ablegen mit dem Befehl
gmtdefaults > ./.gmtdefaults
und an der Datei herumeditieren (z.B. a4 durch a0 ersetzen. Unten ist ein kleiner Ausschnitt aus der .gmtdefaults- Datei

#        GMT-SYSTEM 3.3.2 Defaults file
#
ANOT_FONT                = Helvetica
ANOT_FONT_SIZE           = 12p
BASEMAP_AXES             = WESN
BASEMAP_FRAME_RGB        = 0/0/0
COLOR_BACKGROUND         = 0/0/0
COLOR_FOREGROUND         = 255/255/255
COLOR_NAN                = 128/128/128
COLOR_MODEL              = RGB
D_FORMAT                 = %lg
DEGREE_FORMAT            = 2
MEASURE_UNIT             = cm
PAGE_COLOR               = 255/255/255
PAGE_ORIENTATION         = landscape
PAPER_MEDIA              = a4
WANT_EURO_FONT           = TRUE
X_ORIGIN                 = 2.5c
Y_ORIGIN                 = 2.5c

Herunterladen der Übungsdateien

Einfach auf den Link klicken. Es handelt sich um eine gezippte Datei, die alle oben beschriebenen gmt-skripte und ein paar dafür nötige Datensätze enthält. Das Skript ist ebenfalls hier als Word-Dokument herunterladbar. Viel Spaß ! D. Völker


Literatur & Links


auf den Server überspielt am 24.01.2002 David Völker