GMT Tips/GMT投影図法の研究

以下は、GMT ver.4です。ver5以降は未対応です。
デフォルトの変更(GMTDEFAULT)

描画関係
gmtset ANNOT_FONT_SIZE_PRIMARY 20 =>軸の文字の大きさの変更
gmtset ANNOT_FONT_PRIMARY 1 =>軸の文字のフォントの変更
gmtset PAGE_COLOR 200/200/200 =>紙の色を変更する
gmtset VECTOR_SHAPE 1 =>ベクトルの頭の形を変更する。普通は0だが1で矢印、2でV字に変更される。2までの小数、-2まで定義可能。
gmtset PAPER_MEDIA A3 =>用紙を変更する
gmtset LABEL_FONT 1 =>軸のラベルのフォントの変更
gmtset LABEL_FONT_SIZE 20 =>軸のラベルの文字の大きさの変更
gmtset BASEMAP_TYPE fancy(/plain) =>地図枠のスタイルの変更
gmtset BASEMAP_FRAME_RGB 200/200/200 =>地図枠の色の変更
gmtset FRAME_PEN 2.0p =>plainの地図の枠を描くのに使われる線の太さ
gmtset FRAME_WIDTH 0.05i =>fancyの地図の枠を描くのに使われる線の太さ
gmtset DEGREE_SYMBOL ring(/degree,colon,none) =>地図の目盛の度記号の変更
gmtset GRID_CROSS_SIZE_PRIMARY 1=>経線と緯線の交点に格子の十字を書く
gmtset GRID_PEN_PRIMARY 0.5p =>格子線を描くのに使われる線の太さ
gmtset  PLOT_DEGREE_FORMAT +DF =>緯度経度の軸をどうかくか? デフォルトは+で -180から+180までの間でかかれるが、+DFとすると30Eなどと表示される。
gmtset ANNOT_OFFSET_PRIMARY -0.2c =>軸のめもりをどこにかくか? 正値にするとグラフの外、負値にするとグラフの内側にかかれる。
gmtset TICK_LENGTH 0.05c =>軸の補助線(ケバ)の長さ。負値にすると枠の内側にかかれるので、論文に載せるようなグラフなら普通は負の値を入れる。
gmtset GRID_PEN_PRIMARY  0.25p,,0.25_3:0 などとすると点線の1本1本の長さが長くなる。
折れ線グラフで、色と折れ線の性質(直線?破線?点線?)を同時にかく
psxy -J -R -W3,red,- =>破線
psxy -J -R -W3,red,. =>点線
psxy -J -R -W3,red,-. =>1点鎖線

grdcontour

grdcontour -Gd5c アノテーションのかかれる頻度
grdcontour -A2+f1+s16 フォントの変更

特殊記号の挿入

温度の"℃"をかくには
echo 18 10 20 0 1 "MC" "\260"C | pstext -Jx1 -R0/20/0/20 -K -O -N>>$out
のようにする。デルタは
echo 6.7 23 16 0 1 "MR" @~D@~Tocean = -2.8"\260"C | pstext -J -R -K -O -N >>$out

番号と記号の対応


gmtset GRID_PEN_PRIMARYの挙動



描画した後に余白をきりおとす

cp test.eps test2.eps
awk '{if($1=="%%BoundingBox:" || $1=="%%HiResBoundingBox:"){print $1, $2,$3,595,595}else{print $0}}' < test2.eps > test.eps

grdmath

grdファイルを用いた演算. かなり便利. 逆ポーランド記法

ベクトルの表示

  • JMやJQなど、角が正しい図法以外の地図でgrdvectorをする場合、-Tをつけないとベクトルの向きが正しくならない。
  • ベクトルの長さをすべて同じにする場合、-Sl5pなどとする。
  • 矢印の大きさを速度に応じてかえたい(速度が小さい矢印は小さく書きたい)ばあい、-SV0.2/0.1/0.4n1などとする。
  • なんかおかしい

  • psscale,pstextなどは, -Nをつけないと地図の領域外には描画されない。
  • grdimageでNANに色を塗りたくない(透過させる)場合、-Tsをつける
  • convertでpdfなどに変換できない。GPL Ghostscript 9.05: Error: Font Renderer Plugin ( FreeType ) return code = -1 Error: /rangecheck in --.FAPIBuildChar--. これは, 領域外の変なところにpstextしているとなる。たとえば極投影で北緯180度に描画しようとした場合

  • makecptを用いたカラーパレット作成

    使い方は、
    makecpt -Cseis -T0/4/0.5  > tmp.cpt
    
    などとするとカラーパレットファイルが生成されます。オプションは、-Cでカラーテーブルの選択、-Tでカラーパレットの最小値/最高値/色間隔を指定、-Iでカラーテーブルの標準の順序を逆にする、 -Qで対数で指定する、-Dで最小値より下の色を指定する、-Zで連続的に色が変化するカラーパレットにする、です。
    存在するカラーテーブルは、 cool,copper,cyclic,drywet,gebco, globe,gray,haxby,hot,jet, nighttime,no_green,ocean,panoply,paired, polar,rainbow,red2green,relief,sealand, seis,split,topo,wysiwygです。このうち、coolやcopperなど、-Zを指定しないとだめなものがいくつかあります。
    実際に使うと以下のようになります。一部、-Zを指定しています。
    対数カラーパレットを作るには、-Qオプションを使います.
    makecpt -Cjet -Q -T0/4/0.30103
    

    フォント

    実際に使うと以下のようになります。


    まがった座標系のモデルを描画する

    データは
    >
         66.6282    -73.0420
         66.8265    -73.0598
    >
         66.6753    -72.9970
         66.6282    -73.0420
    
    といったものを用意します。>は区切りを表します。1つの2点の組が1本の線分を表します。これを、
    psxy -JS0/-90/7i -R225/-35/45/-35r tmp -M -L -K -A -W3 >test.eps
    
    で描画します。

    さらに多角形に色を塗りたい場合。
    > -Z      28.9176
         66.6282    -73.0420
         66.8265    -73.0598
         66.8741    -73.0149
         66.6753    -72.9970
         66.6282    -73.0420
    > -Z      29.3615
         66.8265    -73.0598
         67.0249    -73.0777
         67.0729    -73.0329
         66.8741    -73.0149
         66.8265    -73.0598
    
    といったデータを用意します。>が区切り、-Zが色の指定。-Zの後ろの数値でカラーパレットの色分けを指定します。その後ろにつづく5つの点が四角形の4つの頂点を表しています(線を一周させるため、始点をもう一度描画する)
    スクリプトは、
    psxy -J$proj -R$region tmp -C$cpt -M -L -K -A>> test.eps
    
    です。まがった座標系のモデルの場合、psxy -Srでぬりつぶすと、グリッドの図上の大きさが不定なのでうまくいきません。

    GMT図法の研究

    PHCの年平均SSTをいろんな図法で書いてみます。ここでは、

    psxy -J -R -M
    
    で書くことができるデータとします。
    -Jのオプション及び図法psxy -M
    -Jq等距円筒図法
    -Jmメルカトル図法
    -Jjミラー図法
    -Jc(135)カッシーニ図法x
    -Joa斜めメルカトル図法x
    -Job斜めメルカトル図法
    -Joc斜めメルカトル図法
    -Jt(135)横メルカトル図法
    -Ju(53)ユニバーサル横メルカトル図法
    -Jy基本円筒図法
    -Jaランベルト正積方位図法
    -Je正距方位図法
    -Jf心射図法
    -Jg正射図法
    -Js一般平射図法
    -Jbアルベルス正積円錐図法
    -Jd正距円錐図法
    -Jlランベルト正角円錐図法
    -Jhハンメル図法
    -Jiサンソン図法
    -Jkエケルト第四図法
    -Jnロビンソン図法
    -Jrヴィンケル第三図法
    -Jvファンデアグリンテン図法
    -Jwモルワイデ図法

    GCMのイメージ図を作ろうとして、
    psxy -R90/-15/240/75r -Jg240/35/1:100000000
    

    とやるとこんなのができる。しかし大気の鉛直格子の表現がうまくいかない。 追記
    >
    180 60 0
    180 60 20
    >
    190 60 0
    190 60 20
    psxyz 3d.dat -Jg240/35/1:100000000 -Jz1000000000000000 -R0/360/30/90/0/100
    

    とするとできたが, イメージ通りの図にはならなかった
    GMTのインストール
    wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/legacy/gmt-4.5.9.tar.bz2 
    bzip2 -dc gmt-4.5.9.tar.bz2 | tar xvf -
    cd GMT4.5.9
    ./configure ?prefix=/home/obase/GMT4.5.9
    make check
    make
    make install
    
    これだけだと海岸線がかけなかったので、
    wget ftp://ftp.scc.u-tokai.ac.jp/pub/gmt/legacy/gshhs-2.2.0.tar.bz2
    bzip2 -dc gshhs-2.2.0.tar.bz2 | tar xvf -
    cd GMT4.5.9/share/ 
    cp -r ../../share/coast .
    
    back