GrADS-Note - 複数ファイルの取り扱いまとめ
このwiki内では、グリッドファイル(GrADS 4byteバイナリ、特に断らなければdirect書き込み)を〜.bin、コントロールファイルを〜.ctl、変数名をvarと表記します。


複数のデータファイルを一つのctlファイルで読みたい
GrADS ctlファイルの作成参照

GrADSでは、複数のファイルの扱いが難しく、格子情報が少し違っていると、
途端にdisplayや演算ができなくなる。
複数のファイルを同時に開くのではなく、一つ一つopen、define、closeを繰り返すことで
ある程度問題を回避できる。

なお、完全に格子情報が一致したファイル同士であれば、同時に開いても特に問題はない。




複数のファイルを同時に開いているとき


複数のファイルを開いたときの操作


n番目に開いたファイルの情報を見る
q file n

n番目に開いたファイルの変数を描く
d var.n

n番目に開いたファイルを閉じる(最後に開いたファイルのみ)
close n

n番目に開いたファイルを”1番目に開いたファイル”として扱う
set dfile n

データ範囲の異なるファイルを開いた場合


x, y, z, t軸の範囲が異なるファイルを複数開いた場合、基本的にファイル1の範囲が適用される。


ファイル1の(xまたはy軸)の範囲が1~9、ファイル2の範囲が2~10の場合。

open f1.ctl
open f2.ctl
d f2.2

の結果は1~9の範囲で出力される。
d f1+f2.2

の結果も1~9の範囲で出力される(f2はx=1でundefなので、2~9の範囲のみ演算が適用)

z軸やt軸でも基本的に同様。

解像度、位置の異なるデータの重ね描き


http://hydro.iis.u-tokyo.ac.jp/~kei/?IT%20memo%2FG...

 set dfile num
 set lon ? ??
 set lat ? ??
 d var

で描きたい変数のファイルをデフォルトのファイルに設定し、lonとlatを設定し直すと重ねて描ける。



複数のファイルを同時に開かない


解像度、位置の異なるデータの重ね描き


格子が一致する範囲がある場合、その範囲を指定すればよい。

解像度が異なる場合、演算はできない。
同時に開いていては重ね描きもできないが、
一つずつ描いてcloseすれば重ねられる。

open f1.ctl
set x 1 XXX
set y 1 YY
set gxout shaded
d f1
close 1
open f2.ctl
set x 1 xxx
set y 1 yy
set gxout contour
d f2

zやtの位置が異なるファイル同士の演算


open f1.ctl
set x 1 XX
set y 1 YY
set z 1
set t 1
a=f1
close 1
open f2.ctl
set x 1 XX
set y 1 YY
set z 1
set t 1
d f2+a

この手順を踏むと、f1とf2のファイルのzdefやtdefが一致していなくても、
演算が可能になる。

f1に幅がある場合

open f1.ctl
set x 1 XX
set y 1 YY
set z 1
set t 1 12
a=f1
close 1
open f2.ctl
set x 1 XX
set y 1 YY
set z 1
set t 1
d f2+a(t=1)

defineの際、変数名にzやtの情報を含めてしまう手もある。

'open f1.ctl'
'set x 1 XX'
'set y 1 YY'
'set z 1'

t=1
while(t<=12)
'set t 't
'a't'=f1'
t=t+1
endwhile

'close 1'
'open f2.ctl'
'set x 1 XX'
'set y 1 YY'
'set z 1'
'set t 3'
'd f2+a3'