【2021/05/02 追記】いろいろ加筆しました。
GMT6の記事を書きまくっている私ですが、私が初めてGMTに触れたのはGMT5.4.5のときです。
そのときも巷にはGMT4の書き方がありふれていたのでGMT4の書き方も何となくわかります。
今回は、GMT4/5からGMT6に乗り換えたい人向けの記事です。
GMT6のお作法
GMTを用いて図を描く場合は最初に、gmt begin、最後にgmt endを書きます。
gmt begin [出力ファイル名] [出力ファイル拡張子]
使用できる拡張子は「bmp , eps , jpg , pdf , png , PNG , ppm , ps , tif」。
何も指定しない場合、PDFとなる。
※ アルファチャンネルを持つpng画像にしたい場合はPNGにすること。gmt end [show]
GUIの環境を導入している場合は showを付けると画像が即表示される。
ただし、PostScript画像で閲覧する場合はghostscript-xが必要。
#!/bin/bash
gmt psbasemap -JX12 -R0/100/0/100 -Bafg -BWSne > hogehoge.ps
gmt psconvert hogehoge.ps -Tg -A1
は
#!/bin/bash
gmt begin hogehoge png
gmt basemap -JX12 -R0/100/0/100 -Bafg -BWSne
gmt end
と書くようになりました。
これを実行すると、hogehoge.pngが生成されるはずです。
GMT4/GMT5にあった-Kと-Oは使用しません。自動的に図は上書きされます。
よく、2枚目に別の図を作成する。。というテクニックがGMT5までにはありましたが、GMT6ではgmt figureを使用することで似たようなことをすることができます。
gmt psbasemap -JM12 -R120/150/20/50 -Bafg -BWSNE -K > hogehoge.ps
gmt pscoast -Df -W0.25 -O >> hogehoge.ps
gmt psconvert hogehoge.ps -Tg -A1
は
#!/bin/bash
gmt begin hogehoge png
gmt basemap -JM12 -R120/150/20/50 -Bafg -BWSNE
gmt coast -Df -W0.25
gmt end
となります。
モジュール名の変更
GMT6から一部のモジュール名が変更となっています。
頭にpsとついていたモジュールのほとんどはpsが消えました
ただし、psconvertはpsconvertのままです。GMT6ではあまり使わないからですかね。。
psbasemap ⇒ basemap

pscoast ⇒ coast

psmeca ⇒ meca

pscoupe ⇒ coupe
などなど…。
ただし、以下のモジュール等は名前自体が変わっています。
psxyはplotと言う名前になりました。

psxyzはplot3dになりました。

psscaleはcolorbarになりました。

他にもいろいろありますので、GMT公式のページを見てください。
モジュールの前に"gmt"が必須に
GMT5の時も再三付けろよ!とマニュアルに書いてあった気がしますが、GMT6からはgmt basemapのようにgmtを付けないとデフォルトでは動かないようになりました。
gmtを付けなくても動かすようにする方法
インストールする前
もし、インストールを行う前だったら、
cd gmt-${GMT_VERSION}
cat ./cmake/ConfigUserTemplate.cmake | \
sed -e 's%\#set (GSHHG_ROOT "gshhg_path"%'"set (GSHHG_ROOT ${GSHHG_ROOT}"'%g' | \
sed -e 's/\#set (COPY_GSHHG FALSE)/set (COPY_GSHHG TRUE)/g' | \
sed -e 's%\#set (DCW_ROOT "dcw-gmt_path"%'"set (DCW_ROOT ${DCW_ROOT}"'%g' | \
sed -e 's/\#set (COPY_DCW FALSE)/set (COPY_DCW TRUE)/g' | \
sed -e 's/\#set (GMT_INSTALL_MODULE_LINKS TRUE)/set (GMT_INSTALL_MODULE_LINKS TRUE)/g' \
> ./cmake/ConfigUser.cmake
でgmtを付けなくても動くようになります。
インストールした後
上記をせずに、インストールした場合は、.bashrc等におまじないを記載します。
まず、
gmt --show-sharedir
を実行して、GMTのshareディレクトリを確認します。
その後、.bashrc等に
source $(GMTのshareディレクトリ)/tools/gmt_functions.sh
と記載します。これで動くはずです。
コメント