早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

GMTサンプルスクリプト集(テキスト版)

本ページのGMTサンプルを使う際の注意点

サンプルを画像サムネイルから探したい人: See GMTサンプルスクリプト集(サムネイル版)参照.

Linux へのGMT インストールは,GMTのセットアップ参照.

以下のサンプルは, 私の個人設定ファイル (~/.gmtdefaults4)に基づき作成. default からの修正点は以下のとおり:

  • 使用する単位系が inch
  • BASEMAP_TYPE が plain (fancy は個人的に好みじゃない)
BASEMAP_TYPE            = plain
MEASURE_UNIT            = inch

また,動作確認したバージョン番号未記載のサンプルの多くは GMT v3.0 (一部はさらに古い)時代に作成した ものです. バージョンアップに伴うオプション変更などに対応していないものも 含まれるので,あらかじめご了承ください.

See also シェルスクリプトの雛形(日本・東アジアなどの白地図,観測地点分布図などの作図例)

用途別サンプル

フォント, 特殊記号 (font, symbol font, special character)

等値線・ベクトル・塗りつぶしなど (line, vector, shades)

XYプロット (x-y plot)

教育用サンプル & 小ワザメモ

初級者向けのコメントを記載したサンプル. 主に大学院生時代に,後輩学生向けに作ったもの.

  • 教育用簡易マニュアル ; easy-ref1.txt (1995年度学群実験にて使用)
  • Portrait mode sample ; GMT02; 画像 (v3.3.6)
  • Landscape mode sample ; GMT03 ; 画像 (v3.3.6)
  • 『GMTちょっといい話し』(なんとなくメモった事柄を少々) ; easy-ref2.txt
  • 小ワザその1:文字を地図上にプロット ; kowaza01.gmt
  • 小ワザその2:Y軸のスケールを左右で変更する ; kowaza02.gmt
  • 対数軸での作図および目盛り間隔の設定 ; psbasemap00.gmt ; 画像

地図サンプル

地図に関するサンプル. 私自身が過去に研究で使用した作図範囲の例, 海岸線データベースの解像度による違い,投影法が異なるものなど. シェルスクリプトの雛形・GMTも参照.

  • Full resolution 『瀬戸内海』; full-reso.gmt; 画像 (v4.5.3)
  • 解像度別 『九州』; kyushu.gmt; 画像 (v4.5.3)
  • 地図投影法: polar stereo projection (-Js)
  • 地図投影法: Lambert azimuthal equal-area projection (-Ja or -JA)
    • 長方形に地図を切り出す(ユーラシア大陸); Ja_rect.gmt; 画像 (v3.3.6)

数値処理サンプル(grdmath, gmtmath)

数値処理に関するサンプル. grdmath, gmtmath など.

  • 水平勾配(-dT/dy), grdmath; grdmath_gradT.gmt; 画像(未作成) (v4.5.13)
    Under const. サンプル自体の動作確認をしていないが,たぶん正しいと思う (2015-07-01)
  • 気温データを温位に変換, grdmath の POW & MUL operator (2015-07-09); sample_topo_mask_direct_org.gmt; PNG; PDF; (v4.5.13)
    • grdmath 以外にも,これまで私が使い慣れていなかった各種コマンドを複合して使用. 元データに対する数値処理などの総合的なスクリプト例として重要.特に未来の自分にとって(どうせ忘れるから).
    • バイナリ(big- or little-endian)データをGMTコマンドで直接NetCDFに変換 (xyz2grd の -Z オプション)
    • 指定標高以下のマスクアウト (grdclip の -S オプション)
    • wgrib2 を使った JMA GPV MSM (GRIB2形式)データ切り出しおよびGMTへの利用例. See also wgrib2使用方法
    • なお,スクリプト内で source にて読み込んでいるファイル(chk_dir_file)は,私専用関数ファイル. See also 自分専用コマンド・関数

コマンド解説

コマンドの解説は,多数の方が公開しています. かなり系統立てて書いているものもあるので, 初級者の方はそちらを参照するとよいでしょう. 私が書くと分かりにくいという評価が多いので...

ここでは, 私自身が使い慣れていないGMTコマンド(v4.5.6 base; 2012-02-14)について, 折を見てメモ程度に書く予定.

使い込んでいるコマンド

以下は,ほぼ常時使用しているコマンド. 自分が使うコマンドなんて,非常に少ない.

  • gmtdefaults: ~/.gmtdefaults* の作成時に使う.新バージョンインストール後,一回だけ.
  • gmtset: デフォルト設定の一時変更に使う.スクリプトの先頭部に置くことが多い. 他者にスクリプトを配布する際,自分のデフォルトに合わせるために使うこともある.
  • grdcontour: 等値線プロット用
  • grdimage: 色の塗りつぶし
  • grdvector: ベクトル作図
  • makecpt: カラーパレット作成コマンド. デフォルトパターンや数値範囲などを設定できる.自作もできる. See カラーパレットの例 (makecpt)
  • minmax: データの最大最小値などを画面表示.ここで得たパラメータを別コマンドに受け渡すこともできる. -f option を使えば,入出力ファイル形式がASCII or BINARY (little- or big-endian)でも使える.
  • ps2raster: PS画像をPDFやJPEG, PNGなどに変換. -A option 併用すると作図範囲外を自動トリミングするので,PowerPoint などのスライド用画像の作成に便利.
  • pstext: 文字出力コマンド.
  • pscoast: 海岸線・海陸分布の作図コマンド.
  • psbasemap: 図の枠線のみを描くなどのコマンド. 右と左で異なる縦軸を使う場合などに,枠線のみを引くコマンドとして使ったりする.
  • psscale: 陰影図の色の凡例作成コマンド.
  • psxy: 記号・線のプロットをするコマンド.使える記号は多数(circle, square, triangle, diamond, star, ... , etc.).大きさ・色もユーザが任意で指定できる. See also X-Y プロット.
  • psxyz: 棒グラフの3Dプロットなどが出来る. サンプル スクリプト; 画像
  • surface: データ内挿してNetCDFファイル化するコマンド.
    • 私の場合,Gaussian grid に代表される等間隔でない格子点データを使う時にのみ使用.
    • AMeDAS のような地上観測・点情報かつ空間的に不均一分布するデータの場合, 内挿により非現実的なデータをつくり出してしまう可能性がある(海岸付近,山岳域など).
    • 悪く解釈すれば,これは一種の『データ捏造』. 高解像度にする・滑らかな曲線で表示する事だけを目的として surface を使うべからず. 使いかたは要注意!
  • xyz2grd: 等緯度経度格子データの NetCDFファイル変換コマンド.データ内挿せずに作図するのが前提.

馴染みが薄いコマンド(使いかたをよく忘れる)

以下は,使ったことはあるが,使い慣れていないコマンド類. あまりにも古いバージョンで使っていたために, バージョンアップによって使いかたを忘れたものも含まれている.

  • blockmean, blockmedian, blockmode: 等緯度経度格子でないデータ(例: Gaussian grid データ)の作図で使用.
  • gmtmath: データの算術計算・エンディアン変換(Little endian, Big endian 両方向)などが可能. 逆ポーランド記法. バイナリとASCII text 形式の相互変換などにも有用. GrADS ユーザにとっても,付加価値は大きいと思う.Good. (append at 2013-12-09)
  • grd2cpt:
  • grdclip:
  • grdmath: gmtmath とほぼ同様の算術計算コマンド.ただし,グリッドデータ版. どのバージョンから追加されたか不明(少なくとも v4.5.9 では存在).
    • 水平勾配(-dT/dy): 気温(海面水温)の格子点データを用いて,「ちょっと気温(海面水温)の南北傾度をみたいな」などと 上司・指導教員からさらっと言われた時に使うと便利.
  • grdview:
  • nearneighbor:
  • pscontour:
  • pshistogram: ヒストグラム(度数分布)図の作成.累積頻度などもオプション指定で記述可能.
  • psimage:
  • psmask: マスクアウトに使う.等圧面データの作図時,地表面以下の範囲を非表示にする,などの使いかた.
  • pswiggle: 基準線からのズレ(偏差)部分の塗りつぶし.サンプル スクリプト; 画像
  • triangulate:

馴染みのないコマンド(いつか試したいが)

以下は,使い慣れていないが使ってみようかと考えてるコマンド. 自分にとって役に立つコマンドである可能性もあるが, 試す時間的余裕がないため,pending になってるものが多い.

  • gmtselect: 指定範囲内データの切り出し(矩形領域,円領域 -C ,ユーザ定義ポリゴン領域 -F など), 指定解像度以下(以上)のデータの無視(-A), 地形によるデータのマスク(-N; -D と併用)などが可能.
  • grdinfo: 2-D バイナリデータの諸情報を表示. 他者からもらったが中身がよく分からないデータ,作図してみたが数値がおかしいときなどに使えそう.
  • psclip:
  • pslegend: 図の凡例(figure legend)を描くらしい.未チェック

おそらく使わないコマンド

以下は,私自身が使っていないコマンド類. 「使えないコマンド」と言ってるわけではない事に注意. 「以下のコマンドについては,私に質問しても回答は得られない (頼むから質問しないでくれ)」 という事を読者に伝えるためのメモ.

  • filter1d:
  • fitcircle:
  • gmt2rgb:
  • gmtconvert:
  • grdfilter:
  • grd2xyz:
  • grdblend:
  • grdcut:
  • grdedit:
  • grdfft:
  • grdgradient:
  • grdhisteq:
  • grdpaste:
  • grdproject:
  • grdreformat:
  • grdsample:
  • grdtrend:
  • grdvolume:
  • greenspline:
  • project:
  • psrose:
  • sample1d:
  • spectrum1d:
  • splitxyz:
  • trend1d, trend2d:

自分メモ

見られても構わない自分用のメモです. 他者が見ても必要な情報とは思えませんが, 本人の意図しないところが役に立つ可能性もあるので,掲載しておきます.

GMT 自分ルール

  • 単位は inch
    • 単位を inch にする理由は,画像サイズ計算を簡単にするため. 一般に,解像度が dpi (dot per inch) 表記なので, 解像度さえわかれば作図結果の画像サイズも暗算で得られる
    • 余白部分を切り出す (convert や mogrify を使用) 場合も, -X & -Y の位置ずらし量から概算できる.
  • コマンドの最初は pstext で固定. 作図範囲を用紙サイズで決定
  • PAPER_MEDIA はA4固定だが, 作図範囲は,レター(LTR) & A4 共にはみださないように指定. つまり,8.2 inch * 11 inch を基本的に使う (pstext text.in -R0/8.2/0/11.0 -Jx1 -U...).
    • A4: 210 mm * 297 mm, LTR: 215.9 mm * 279.4 mm
    • A4: 8.268 inch * 11.693 inch, LTR: 8.5 inch * 11 inch
    • LTRを意識しているのは,単に個人的な使用履歴が原因. 指導教官が LTR サイズで作っていたので,それがずっと引き継がれている
    • 「用紙サイズを前提にしたサイズ決定」というのは,少し時代後れか. コンテンツの電子化を前提とした方法に転換するなら, 現在の私の手法は適切とはいえないと思われる. 近い将来(電子化コンテンツが一般に普及しだしたら),ルール変更するだろう.
  • 図のtimestamp (-U"${my_name}") には,作図プログラム名を記載. 作図プログラム名は,スクリプト冒頭にて "my_name=$PWD/$0" として設定. 作成済みの画像をみて,それを作成したスクリプトの所在がわからなくて困った経験から.
  • 基本的なスクリプト内のコマンド順序は,
    pstext
    psbasemap
    (プロット用途に応じた使用コマンド)
    psbasemap
    
    である.括弧内には,pscoast やら psxy やら,用途別に様々.
    • 水平分布図(等値線のみ)の場合: pscoast, grdcontour
    • 水平分布図(等値線 & 陰影)の場合: grdimage, pscoast, grdcontour
    • 地図上に記号をプロットする場合: pscoast, psxy
    • XYグラフに記号をプロットする場合: psxy
  • 作成したPSから画像ファイルに変換するには,ps2raster コマンドを使う. convert でも出来るけれど,ps2raster の -A オプション (作図範囲だけを切り出す)が便利なので.

GMT の誤動作(らしき挙動)のメモ

下記情報の真偽は未確認. 公式のリリースノートなどを見れば,バグか否かを確認できるはずだが,時間が無いのでノーチェック.

  • grdview によるプロット時,z軸がずれる (v4.5.6). v4.5.3, v4.5.7 では正常動作していた(はず).

GMT バージョン履歴

私が使用していたGMTのバージョン履歴. 1993年から使用している(GMT 2.0 or 2.1 くらい) のですが,古すぎて正確な記録なし. また,1995 - 2003 頃は,FreeBSD を自分PCに入れて使ってたが, GMTのバージョンに関する記録が少ない.

Personal history of software versions of the GMT and UNIX (or UN*X crone).
GMT version date OS version
v4.5.13: 2015-07-01 CentOS 7.1
v5.1.1: 2014-09-23 CentOS 7.0
v4.5.11: 2014-02-16 CentOS 7.0
v4.5.8: 2012-07-20 CentOS 5.8 & Fedora 17
v4.5.6: 2011-04-21 CentOS 5.6, 5.7, 5.8 & Fedora 11 - 14
v4.4.0: 2009-10-09 CentOS 5.2 (?)
v4.2.0: 2008-04-02 Vine 4.2
v3.4.2: 2003-07-02 RedHat 7.2 & Vine 2.5
v3.3.6: 2000-10-27 FreeBSD 4.x (?)
v2.x: 1993 - 1995 (?) Sun OS 4.x & Solaris ?.?

.gmtdefaults の例

v4.x 系列

Default からの変更点は下記:

#-------- Plot Media Parameters -------------
PAPER_MEDIA   = a4
#-------- Basemap Annotation Parameters ------
HEADER_FONT             = Times-Roman
HEADER_FONT_SIZE        = 20p
PLOT_DEGREE_FORMAT      = +ddd:mm:ssF
#-------- Basemap Layout Parameters ---------
BASEMAP_TYPE            = plain
TICK_PEN    = 1.0p
#-------- PostScript Parameters -------------
CHAR_ENCODING           = Standard+
#-------- Projection Parameters -------------
MEASURE_UNIT            = inch

これ以外のパラメータは,GMT コマンド実行前に gmtset により一時的に変更する.

(参考) 過去バージョン用: GMT v3.0 用; GMT v3.3.4 用; GMT v3.3.5 用

更新履歴 changes, history

以下は,いつの日か追加・修正したいこと:

  • 画像サムネイル表示.サンプル画像を見てから選択,というほうが(自分にとって)見つけやすい. テキスト文字からのアクセスも残す.
  • 気象データ特有のサンプルの追加.気象学でよく使う作図の例をもう少し追加したい.

2015-08-30
サムネイル版へのリンクを追加.
2015-07-09
grdmath, grdclip などの情報の追加と整備. 使用バージョン履歴(v4.5.13)を追加.
2015-06-13
XYプロットの時系列図サンプルを追加. 使用バージョン履歴を追加.ただし,v5 系列はほとんど動作チェックできてない.
2012-10-29
XYプロット(psxy など)を追加. コマンドの一言メモ,一部追記.
2012-06-21
リンク切れなどを修正. コマンド解説の一部に一言メモを追記.
2012-01-22
旧版webページ(${old_path}/samples/index.html)の情報を,ほぼそのまま移植. 旧版webページの地図投影法別サンプルと統合(一部のみ). まだ試験段階なので,体裁は要検討.
2011-06-09
早崎による製作webを識別するため, ページタイトル変更. CSS適用のため,古い記述を削除.
2011-06-07
Wikiに記載していた内容の転載開始. HTML の文字コードを UTF-8 に変更. 体裁を調整後に公開(正式公開予定: Jul - Aug 2011).
1999-01-16
GMT本家のページと区別するため, ページタイトル変更. 一部のサンプルを追加.
1997-??-??
この頃にGMT関連の最初のHTML作成した(はず).記録はなく,記憶のみ.