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

参考サイト


  1. About GrADS Station Data
  2. IT memo/GrADS memo/Station data
  3. Components of a GrADS Data Descriptor File


記事メニュー
人気記事ランキング
目安箱バナー