fmemo
GrADS
最終更新:
fmemo
-
view
ステーションデータの可視化
次のようなステーションデータ"datafile.ch"をGrADSで可視化したいとする。
Stid Lat Lon VAR1 VAR2 TOKYO 35.7 139.7 13.3 20 OSAKA 34.6 135.5 8.1 12 SAPPORO 43.0 141.3 2.3 10 FUKUOKA 33.5 130.3 5.4 31
はじめに、これをプログラム"read.f90"でバイナリ化する。変数tim, nlev, nflagについてはあまりよくわからない。常にtim=0.0, nflag=1で多分問題ない。 nlevは通常1で空のヘッダを入れる際に0を入れる。 access='stream'であることに注意。 g95やifortではstreamをサポートしているが、それをサポートしていないコンパイラも存在する。そのときはsequatialを使うらしい。(未検証)書き出す書式は参考サイト(2)を参照のこと。異なる時系列のデータを含むときの書式については参考サイト(2)を読む事。
program main implicit none character(len=8) :: STID integer :: iflag, nlev, nflag real(4) :: rlat, rlon, rval1, rval2, tim open(8, file='datafile.ch') open(10,file='datafile.dat',form='unformatted',access='stream') iflag=0 read(8,*) do read(8,'(A8,4F8.1)',end=999) stid,rlat,rlon,rval1, rval2 tim=0.0 nlev=1 nflag=1 write(10) stid, rlat, rlon, tim, nlev, nflag write(10) rval1,rval2 write(*,*) stid, rlat, rlon, tim, nlev, nflag, rval1, rval2 enddo 999 continue nlev=0 write(10) stid, rlat, rlon, tim, nlev, nflag stop end program main
ここで、バイナリ化されたファイルの名前は"datafile.dat"。次にコントロールファイル"datafile.ctl"をつくる。
dset datafile.dat options little_endian dtype station stnmap datafile.map undef -999 tdef 1 linear apr2003 1mo vars 2 a 0 99 xxx b 0 99 yyy endvars
通常のコントロールファイルと異なる点はdtype stationとstnmap datafile.mapである。そして、stinmapコマンドを実行する。
$ stnmap -i datafile.ctl
うまくいけば、datafile.mapというファイルができる。GrADSを起動してコントロールファイルを開き可視化する。
$ grads ga- > open datafile.ctl ga- > set gxout stnmark # 数字でなくマークで表示 ga- > set digsiz 0.4 # マークの大きさ ga- > set cmark 3 # マークの種類 ga- > d a # 変数 a を表示
4byte実数以外のデータを読む場合
コントロールファイルの変数指定の3列目を書き換える。
指定方法 | 名称 | 範囲 | 対応するFortarnでの名前 |
-1,40,1 | 1バイト符号なし整数 | 0〜255 | なし |
-1,40,2 | 2バイト符号なし整数 | 0〜65535 | なし |
-1,40,2,-1 | 2バイト符号つき整数 | -32768〜32767 | integer(2) |
-1,40,4 | 4バイト符号つき整数 | -2147483648〜2147483647 | integer(4) |
緯度経度を指定してマークを書きたい
例えば、東経100度、北緯30度に×印を、大きさ0.1で書きたいときは、以下のようなスクリプトをつくればよい。
'q w2xy 100 30' x1=subwrd(result,3) y1=subwrd(result,6) 'draw mark 6 'x1' 'y1' 0.1'
その他雑多な覚え書き
地図を書かない
ga-> set mpdraw off
地図を書く
ga-> set mpdraw on