User Tools

Site Tools


wiki:grads

マニュアル

起動

Windowのサイズ,位置の調整

W,H,X,Yをそれぞれwindowの幅,高さ,画面左端からの距離,画面上端からの距離とする.単位はピクセル.

$ grads -g WxH+X+Y

Xmingを使用している場合はXlaunchの設定でこれを調整できる

Additional parameters for Xming: -screen 0 X Y

用紙の向き

GrADS起動時に問われる“Landscape mode?”に“yes(またはenter key)”で横長(landscape).“no”を返すと縦長(portrait).
横長の場合,描画範囲は11×8.5.横長の場合8.5×11.
Ex) 横長(縦長)を指定して起動する場合

 $ grads -l(-p)

コントロールファイル

OPTIONS

  OPTIONS 365_DAY_CALENDAR    !! うるう年を考慮しない
  OPTIONS YREV                !! 緯度方向のデータを読む順番を逆にする。デフォルトは南→北。
  OPTIONS BIG_ENDIAN          !! エンディアンの指定.デフォルトはLITTLE_ENDIAN
  OPTIONS TEMPLATE            !! 複数のファイルにデータがまたがる場合にはこれを指定

EDEF

GrADS2.0以降に追加された機能でアンサンブルメンバーを扱うことが可能。 アンサンブルメンバーはX, Y, Z, ΔTについては同一である必要。一方でTの開始時刻はメンバー間で異なっていてもOK。 以下にメンバー間でTの開始時刻が異なる例を示す。

 DSET ^file.%e.grd
 OPTIONS TEMPLATE
 EDEF //ensemble_size//
 //ensemble_name_1// //t_length// //t_start//    * //ensemble_name_*//がDSETの%eに代入されたファイルが読み込まれる
 //ensemble_name_2// //t_length// //t_start//
 ...
 //ensemble_name_N// //t_length// //t_start//

メンバー間で開始時刻およびタイムステップが同一の場合はt_lengthおよびt_startを記述する必要はない。
参考①http://cola.gmu.edu/grads/gadoc/descriptorfile.html#EDEF
参考②http://cola.gmu.edu/grads/gadoc/ensembles.html

VARS

変数名、鉛直総数、ユニット(?)、説明文の4つで構成される。データが4バイト浮動小数の場合、ユニットは気にしなくてよい。“99”と記入。

VARS ${varnum}
${variable_name_1} ${levs} ${unit} ${description}
${variable_name_2} ...
...
ENDVARS

ENDVARS以降にはいかなる記述も許されない。空行もアウト。

任意の名前のバイナリファイルを複数読み込む

ひとつのコントロールファイルで,任意の名前のバイナリファイルをまとめて開くことができる.

DSET    ^%ch
OPTIONS template
CHSUB   1 12 example_hoge.bin    !! 最初の12ステップはこちらから
CHSUB  13 48 example_fuga.bin    !! 次の36ステップはこちらのファイルから

プレーンバイナリだけでなく,NetCDFに も適用可.

データを読み込む順番

X–>Y–>Z–>変数–>T–>Ens。 デフォルトではデータは南から北向きであることを想定している。鉛直総数(Z)は変数ごとに異なっていてもOK。


描画

地図の解像度

ga-> set mpdset lowres/mres/hires/newmap/worldmap

右にいくほど高解像度.

ラベル間隔の調整

軸について任意の間隔を指定できる.

ga-> set xaxis(yaxis) <start> <end> <increment>

xlintやylintの指定と異なり,時間軸に対しても有効。ただしstartとendを図と合致するようにしないと正しく描画されない。

Contour

ラベルの書式

 set clab //options//
   * on: 
   * off: ラベルを付けない
   * forced: 全てのコンターにラベルを付ける
   * //format//: 書式を設定。指定方法はC言語ライク。
   * masked: ラベル背景色を描かない。
 set clopts //color <thickness <size>>// 
 set clskip //number//
   * number: ラベルをいくつおきのコンターに貼るかを指定

bar

barを塗りつぶす/塗りつぶさない

  set baropts filled/outline

以前は“outlined”だったのだけど、いつの間にか変わっていた。

Vector

矢印の大きさ

  set arrowhead //size

sizeのデフォルト値は0.05。負の値を設定すると、矢印の大きさが描く変数の値に比例するようになる。

凡例の位置を変える

凡例の位置を変える機能があるわけではなく、以下では自前で凡例を書いている。

  'set gxout vector'
  len = 0.3 ; scale = 2
  xrit = 8.0 ; ybot = 0.5
  'set arrscl 'len' 'scale
  'set arrlab off'
  'd u;v'
  rc = arrow(xrit-0.25,ybot+0.2,len,scale)
  
  function arrow(x,y,len,scale)
  'set line 1 1 4'
  'draw line 'x-len/2.' 'y' 'x+len/2.' 'y
  'draw line 'x+len/2.-0.05' 'y+0.025' 'x+len/2.' 'y
  'draw line 'x+len/2.-0.05' 'y-0.025' 'x+len/2.' 'y
  'set string 1 c'
  'set strsiz 0.1'
  'draw string 'x' 'y-0.1' 'scale
  return

http://cola.gmu.edu/grads/gadoc/gradcomdsetarrlab.html

その他

smoothing

  smth9(var)

アニメーション

ループの次元を変更

  set loopdim x/y/z/e/t
  

ループのステップを変更

  set loopincr $(increment)

出力

テキスト出力

ターミナルに書き出す場合。printモードで${output_file}に出力する。

ga-> set gxout print
ga-> set prnopts ${書式} ${1行あたりに出力するデータ数} ${データ間の空白の数}
ga-> d ${var_name}

ファイルに書き込む場合。この作業は、スクリプトを通してしか行うことができない。

'd var'
tmp=subwrd(result,4)
rc=write('${output_file},tmp)
rc=close('${output_file}')

オプション

*エラー値を数字から“Undef”に置き換えて出力

ga-> set prnopts ${書式} ${1行あたりに出力するデータ数} ${データ間の空白の数} u

* ファイルに追記する

 rc=write('${output_file}',result,append)

バイナリ出力

fwriteモードで描画すると${output_file}に出力される。 x,y,z,tを明示的に指定しないとサイズが不正になる場合があるので注意。

ga-> set gxout fwrite
ga-> set fwrite ${option} ${output_file}
ga-> d ${var_name}
ga-> disable fwrite

オプション

  • -be/-le: big endian / little endian
  • -sq/-st: sequential / direct
  • -ap/-cl: 追記 / replace

GIFアニメーション

タイムステップごとに図を番号を付けて保存後、ImageMagickでアニメーションに変換する。

while (t<='tend')
'set t 't
'd 'var
if (t>=10)
  'printim tmp.'t'.gif white'
else
  'printim tmp.0't'.gif white'
endif
t=t+1
endwhile
!convert -loop 0 -delay 7 tmp.??.gif animation.gif

loopは繰り返し再生の回数を指定。0は無限ループ。delayでアニメーションの速さを調整。

スクリプト

引数を使用

function main(args)  #スクリプトの先頭で宣言
...
x=subwrd(args,1)  #1つ目の引数を"x"に格納
y=subwrd(args,2)  #2つ目の引数を"y"に格納
...

シェルのコマンドラインから“grads -blc hogehoge.gs”のようにスクリプトを実行する場合は引数を与えられない?不便。 –>できる。その場合は以下のように、GrADSスクリプトと引数をまとめてクオーテーションマークで囲って実行する。

$ grads -blc "hogehoge.gs args"

テキストファイルの読み込み

rec=read('${input_file}')
tmp=sublin(rec,2)  #recの2行目をtmpに読み込む
var1=subwrd(tmp,1)  #tmpの1列目をvar1に読み込む
var2=subwrd(tmp,2)  #tmpの2列目をvar2に読み込む
...
rec=close('${input_file}')

readコマンドの戻り値は2行あって、1行目がファイル状態(0=正常、1>=エラー)で、2行目がデータ。一度のreadで1行分の情報しか読み取らないので、複数の行を読みこ時は、これを複数回実行する必要あり。 読み込めファイルは80行程度という情報もあるが、今のところはそれより大きいファイルも問題なく扱えている。

キー入力待ち

スクリプトにチルダ(“~“)を入れると、そこで一時停止する。エンターを押すと先に進む。

'~'
pull hoge

—-

GrADS2.1

太さの定義

これまで線の太さは1-12に限定されていたが、任意の太さを指定できるようになった。

 set lwid  ${thickness}  ${width}
* thickness: 太さの割り当て番号。13-256。
* width: 線の太さ。0以上。

透過色

  set rgb color# R G B T
  * color#:色番号(16-2047)。
  * T:透明度(0-255)。0が完全に透明、255が完全に不透明。

パターン

図の保存

printim, printは使えなくなり、代わりにgxprintというコマンドが用意されている。


その他

コマンド履歴の出力

コマンド履歴の表示

ga-> his

コマンド履歴のテキスト出力

ga-> his ${output_file}
wiki/grads.txt · Last modified: 2022/12/07 11:00 by okazaki