Generic Mapping Tools

2024 年 10 月 3 日 改訂

Generic Mapping Tools (GMT)は、地図を描くためのソフトウェアです。公式の日本語マニュアルもあるそうです。ODV で作成するような、Temperature や Salinity の断面図は作成できないです。

インストール

こちらを参考にしました。

Linux CentOS7

CentOS7 には以下で簡単に Version 5.4.4 が、インストールできました。1 分ぐらいかかったでしょうか。

sudo yum install GMT gshhg-gmt-nc4-all dcw-gm

Python から動かすと、エラーが出ることがあります。その場合は、もう一度 python のビルドをやり直したほうが良いかもしれません。こちらを参考にしてください。おそらく、python をインストールする前に、GMT をインストールする必要があるようです (2021 年ぐらい)。

Linux Ubuntu24.04

こちらを参考にしました。Version 6.5.0 が簡単にインストールできました。1 分ぐらいかかったでしょうか。

sudo apt-get install gmt gmt-dcw gmt-gshhg
sudo apt-get install ghostscript

ghostscript を入れないと、以下 test_gmt.tar.gz を走らせた場合にエラーがでます。 (2024 年 10 月)。

 


Mac

普通に使うのであれば、難しくないです。web tool として apache で gmt を動かすと、gmt ps2raster あるいは gmt psconvert が動かなかったです。Linux では問題なく動きます (2021 年 7 月)。

Mac: homebrew から
Sourc code (zip) (github にあります) の INSTALL.md に従いました。それぞれ数分、全部で 10 分ぐらいかかりました。

You may need to update the formulas so for that you will do:

brew update && brew upgrade

For the latest stable GMT 6 release, use:

brew install gmt

すると、以下の指示が出たので、従いました。

GMT needs Ghostscript for the 'psconvert' command to convert PostScript files to other formats. To use 'psconvert', please 'brew install ghostscript'.

さらに、以下を行うように言われました。

If you really need to use these commands with their normal names, you can add a "gnubin" directory to your PATH from your bashrc like:

PATH="/usr/local/opt/inetutils/libexec/gnubin:$PATH"

以下はやりませんでした。

GMT needs FFmpeg for the 'movie' command to make movies in MP4 or WebM format.
If you need this feature, please 'brew install ffmpeg'.

GMT needs GraphicsMagick for the 'movie' command to make animated GIFs.
If you need this feature, please 'brew install graphicsmagick'.

Mac: .dmg から
こちらから gmt-6.1.1-darwin-x86_64.dmg をダウンロードしました。 .dmg ファイルをダブルクリックすると、GMT-6.1.1.app をアプリケーションディレクトリ (エイリアス) にドラッグするように支持されます。
 terminal から動かすプログラムは、上記の手順て自動的にインストールされています。しかし、インストールが完了しても、gmt は terminal からは動かせますが、html から tool としては動かせないです。

[inouejunmp:GMT-6.1.1.app]$ ls Contents/Resources/bin/
ffmpeg* gmt-config* isogmt*
gdal_translate* gmt_shell_functions.sh* ogr2ogr*
gm* gmtswitch*
gmt* gs*

[inouejunmp:GMT-6.1.1.app]$ pwd
/Applications/GMT-6.1.1.app

ただ、gtm を他のディレクトリにコピーして使えないようです。ライブラリが必要なようです。

[inouejunmp:GMT-6.1.1.app]$ ls Contents/Resources/
GMT-6.1.1.icns bin/ include/ lib/ share/

このため、PATH を .bashrc に記述しました。

[inouejunmp:GMT-6.1.1.app]$ cat ~/.bashrc
# .bashrc

# User specific aliases and functions
PS1="[$USER:\W]$ "

alias ls='ls -F'

export PATH=.:$PATH
export PATH=/usr/local/bin:$PATH
export PATH=~/bin:$PATH
export PATH=/Applications/GMT-6.1.1.app/Contents/Resources/bin:$PATH


ソースコードから

ソースコードからのインストールはこちらの「Building GMT from source」に紹介されています。ただし、Mac へのインストールは難しいので、homebrew などの利用が推奨されています (こちら):

I have successfully compiled GMT from source, but it can be time-consuming to get all the dependencies – and so the workflow below, using package managers, is what I would recommend for Mac OS X users.

私はまだソースコードから GMT をビルドしたことがないです (2021 年 7 月)。

 

観測点をプロットする

test_gmt.tar.gz

$ sh command.sh

.ps を .png に変換するスクリプトが Mac と Linux で異なります。command.sh の該当箇所を書き換えてください。

 

エラー対策

Linux では psconvert を動かすと、以下のエラーが出ます。

[osaka USERNAME:test_gmt]$ gmt psconvert test.ps -P -Tg -E500
sh: gs: コマンドが見つかりません
psconvert: Failed to parse response to GhostScript version query [n = -1 0 0].

こちらにしたがって、gohstscript をインストールしたところ、無事、psconvert が動きました。

sudo yum install ghostscript

(2021 年 7 月)

 

エラー対策

テンポラリファイルが作成できない

[osaka USERNAME:www]$ gmt psconvert ../html/seibutsuGikenWork/4265-KeRevI/150map.ps -P -Tg -E200
psconvert: Unable to create a temporary file

これは、プログラムが置いてあるディレクトリの権限に問題があるために生じると考えられます。以下で解決しました。

[osaka vpsuser:www]$ pwd
/var/www
[osaka vpsuser:www]$ sudo chown apache:user-name cgi-bin
[osaka vpsuser:www]$ sudo chmod 775 cgi-bin
[osaka vpsuser:www]$ ls -ltr
合計 8
drwxrwxr-x 4 apache vpsuser 4096 7月 27 14:24 html
drwxrwxr-x 3 apache vpsuser 4096 7月 27 16:14 cgi-bin

(2021 年 7 月 27 日)

 

高解像海岸線データ

NOAA のページから入手可能です。

gshhg-* を解凍すると、中にgshhs_X.bというファイルがあります。

Xが

c (cruide) → l (low) → i (intermediate) → h (high) → f (full)

の順に高解像度になります。

GMTでデフォルト以外の gshhg を使うには以下のコマンドで指定するようです。

http://gmt.soest.hawaii.edu/doc/5.4.4/supplements/gshhg/gshhg.html

(ET さんより)。

 

海底地形図

#contour_etopo.zsh

#!/bin/zsh

### parameter setting
# grid region
region=127:00/139:00/28:00/34:30 east/west/south/north
# map projection and scale.
proj=M20
# boundary tick info
ticks=a1f1g1
# boundary frame info
frame=WSne+tKT-22-5_ETOPO
# color table min/maz/interval
climit=-8000/0/10

# contour interval
cint=100
# contour min/max
limit=-8000/-0
# conlor table
cptfile=haxby_area.cpt
# shade direction
light=0/90

# output postscript file name
psfile=KT-22-5_ETOPO_test.ps
backgrdsamp=ETOPO1_Ice_g_gmt4.grd
station=KT-22-5_sta.txt
# textsize, font, color, justification
textfont="+f12p,Helvetica,-=0.5p,blue+jBL"

### Main commands
# making color table
gmt makecpt -Chaxby -T$climit -Z > $cptfile

# making shade file. -V prints out errors. -I$intfile works despite $infile is not defined. If defined, calculation takes longer time.

gmt grdgradient $backgrdsamp -A$light -G$intfile -Ne0.6 -V # shade

gmt grdimage $backgrdsamp -R$region -J$proj -C$cptfile -I$intfile -K -V > $psfile # shade

gmt grdcontour $backgrdsamp -R$region -J$proj -C$cint -L$limit -W0.1 -K -O -V >> $psfile

gmt pscoast -R$region -J$proj -Df -Ggray -W0.1,black -K -V -O >> $psfile

gmt psscale -D5/-1/10/0.5h -C$cptfile -Bf1000a2000 -K -O >> $psfile

# psxy collects lat lon values in 1st and 2nd columns
gmt psxy $station -R$region -J$proj -Sc0.1 -Gblue -K -O -V >> $psfile

# pstext collects station names in 3rd column
gmt pstext $station -R$region -J$proj -F$textfont -K -O -V >> $psfile

gmt psbasemap -R$region -J$proj -B$ticks -B$frame -O -V >> $psfile

gmt_floorMap.tar.gz

準備:

ETOPO1_Ice_g_gmt4.grd (377 M) は、こちらからダウンロードしてください。ETOPO1 のサイトはこちらです (GMT と ETOPO1 で地形図作成より)。この ETOPO1_Ice_g_gmt4.grd がダウンロード&解凍して得られた gmt_floorMap ディレクトリにないと、以下の操作でおかしな .ps ファイルが作成されます。

実際の解析:
ターミナルから、以下のコマンドを入力してください。

sh contour_etopo.zsh

GMT Version 6.3.0 で動作確認しましたこのスクリプトは、M. Ashida さんから教えていただきました。ありがとうございました。

こちらも参考になります。

(2022 年 4 月)

GMT Version 6.4.0 (MacOS14) で動作確認しました (2024 年 9 月)。

 


test_gmt_oeDNAmap.tar.gz

# Mac GMT Version 6.4.0 で動作確認しました。ダウンロード&解凍して得られた test_gmt_oeDNAmap に入り、以下を入力してください。

sh command.sh

なお、150map.psファイルを削除してから上記のコマンドを行ってください(念の為 150map.png、150map.pdf も)。Illustrator で開けても、中途半端な .ps ファイルが得られることがありました。

gmt makecpt -Chaxby -T-6000/0/10 -Z > outfiles/050_haxby_area.cpt
 
gmt grdimage ETOPO1_Ice_g_gmt4.grd -R125/139/26/35 -JM24c -Coutfiles/050_haxby_area.cpt -X1c -Y1c -K >> outfiles/150map.ps
 
gmt grdcontour ETOPO1_Ice_g_gmt4.grd -R125/139/26/35 -JM24c -C500 -A500 -L-6000/-0 -W0.1 -K -O -V >> outfiles/150map.ps
 
gmt pscoast -R125/139/26/35 -JM24c -Di -Ggray -W0.1,black -K -O -V >> outfiles/150map.ps
 
gmt psscale -D24.5/5/10/0.5 -Coutfiles/050_haxby_area.cpt -Bf1000a2000 -K -O -V >> outfiles/150map.ps
 
gmt psbasemap -R125/139/26/35 -JM24c -Ba1f1g1 -BWSne+tKuroshio-region -K -O -V >> outfiles/150map.ps
 
gmt psxy outfiles/150_cruseAll_lat_lon.txt -R -JM -Sc0.40 -W1 -Gwhite -K -O -V >> outfiles/150map.ps
 
gmt pstext outfiles/150_cruseAll_lat_lon.txt -R125/139/26/35 -JM24c -F+f12p,Helvetica,-=0.5p,black+jBL -K -O -V >> outfiles/150map.ps
 
gmt psxy outfiles/150_sampleID_lat_lon.txt -R -JM -Sc0.40 -W1 -Gred -O -V >> outfiles/150map.ps
 
gmt psconvert outfiles/150map.ps -P -Tg -E200 -V
.ps ファイルから .png ファイルが得られます。
 
gmt psconvert outfiles/150map.ps -P -Tf -E200
.pdf ファイルが得られます。

(2024 年 9 月)

 


gmt_floorMap_Otschi.tar.gz

ETOPO1_Ice_g_gmt4.grd (377 M) は、こちらからダウンロードしてください。得られた結果は、Mac の場合、プレビューでみると上の図のように綺麗に見えます。しかし Illustrator で見ると、色が非常に荒いタイル状になってしまいます。

(2022 年 4 月)

GMT Version 6.4.0 (Mac) で動作確認しました (2024 年 9 月)。

 


gmt_plot_otsuchiOki.tar.gz

(2022 年 4 月)

GMT Version 6.4.0 (Mac) で動作確認しました (2024 年 9 月)。 。

 


gmt_floorMap_World.tar.gz

(2022 年 7 月)

GMT Version 6.3.0 (Mac) では正常に動きました。Version 6.4.0 で得られた .ps ファイル (324MB) は、Adobe Acrobat で開くのに 1 分ぐらいかかりました。Illustrator ではひらけなかったです (2024 年 9 月)。

 

各列の最大値と最小値を表示

$ gmt gmtinfo test_danmenzu1.txt
test_danmenzu1.txt: N = 6 <0003-01-01T00:00:00/0003-01-01T00:00:00> <5/18> <13.19663333/15.21343333> <112.24905/115.9906167> <117/4205> <3/211> <2.978/209.467> <17.3275/20.2574> <4.474385/4.793152> <0.088/0.525> <0.062/0.538> <34.582/34.7838> <3.9165/5.0931> <24.4997/25.1154> <1513.39/1524.85> <17.327/20.2237>

gmtinfo_minmax.tar.gz

(2022 年 4 月)

 

リンク

GMT Quick Reference

GMT の公式サイト。オプションや使い方に迷ったら、こちらを参照するのが最も良いそうです。

海底地形図作成講座

まずはこちらをやってみると良いです。東大大海研・沖野先生の作品。速習 GMTで GMT の使い方が開設されています。練習用データセットはこちらのページからダウンロードできます。

北大水産

一通り説明があります。

いちからはじめる GMT

東京学芸大学気象学研究室

GMT の使い方

GMT と ETOPO1 で地図形成

海底地形図。ダウンロードして、GMT でも使えるらしいです (ET さんより)。