レコード1の バイト長(4byte整数) | データレコード1 (任意の長さ) | レコード1の バイト長(4byte整数) | レコード2の バイト長(4byte整数) | データレコード2 (任意の長さ) | レコード2の バイト長(4byte整数) | …… |
write(unit=11) stid, rlat, rlon, tim, nlev, nflag
write(unit=11) sst(i), ssw(i)などというように、1地点のデータを一度に出力します。
write(unit=11) sst, ssw, 1000.0, temp(1), wind(1), & & 925.0, temp(2), wind(2), & & ...などとします。チョー面倒なので、
real(4) :: var(3,10) var(1,1:10) = lev(1:10) var(2,1:10) = temp(1:10) var(3,1:10) = wind(1:10)などと予め整形しておくとよいでしょう。level を整数で与えると失敗するので注意。
ヘッダー部、データ部、 ヘッダー部、データ部、 ...... ヘッダー部、データ部、 ヘッダー部(nlev=0,tim=0)というように、最後に nlev=0,tim=0 のヘッダー部を入れておきます。
改行に意味はありません。ヘッダー部で 1レコード、データ部で 1レコードとなるように出力します。
! t=1 ヘッダー部、データ部、 ヘッダー部、データ部、 ...... ヘッダー部、データ部、 ヘッダー部(nlev=0,tim=0)、 ! t=2 ヘッダー部、データ部、 ヘッダー部、データ部、 ...... ヘッダー部、データ部、 ヘッダー部(nlev=0,tim=0)、 ......というような繰り返しになります。
tim=1, 2, ... と入れたくなりますが、それは誤りです。
例えば t=2 のデータ部分では、t=2 の時刻を基準として -0.5~0.5(もしくは 0~1)の値を tim に設定します。
サンプル
dset ^data.dat dtype station stnmap ^data.map options sequential big_endian undef -9.99e11 title data tdef 6 linear 00Z20Jul2011 01hr zdef 10 levels 1000 925 850 700 500 ・・・ vars 4 sst 0 99 sea surface temperature ssw 0 99 sea surface wind speed temp 10 99 temperature wind 10 99 wind speed endvars青字が通常の Grid データと異なる場所。(sequential は普通に使っているかもしれませんが)
GrADS 起動前に、stnmap コマンドで Station Mapping File を作成します。
stnmap -i data.ctlコントロールファイルの stnmap で指定したファイル(例だと data.map)が作成されます。
'set gxout stnmark' 'set z 925' もしくは 'set lev 925' 'd temp'などと描画。Grid データでは 'set z' と 'set lev' は明確に区別できますが、Station データの場合は
'set x 1' * 緯度を適当な値1つに設定(何でもよい) 'set y 1' * 経度も適当な値に 'set z 925' * 高度は、見たいレベルを指定 'set t 1 6' * 時刻は、見たい期間を指定 'd temp(stid="47622")' * stidを指定する。stidを設定していない場合はスペースを指定 * 単に'd temp'とするとエラーstid による指定は、時系列表示の時のみ有効となるようです。