渡部@北大・地球環境さんのGrADSの使い方授業資料
吉田@北大・理・気象さん提供GrADSコマンド概説
contourの色を変える | set ccolor 色番号 |
Gradsで計算したデータをファイルに出力 | set gxout fwrite; set fwrite file名 |
line plotで線を引かずにマークだけにする | set cstyle 0 |
line plotで線の色を変える | set ccolor 色番号 |
line plotでマークの色を変える | set ccolor 色番号 |
line plotの上限・下限を変える | set vrange -180 180 |
mapの色を変える(例,灰色・太線) | 'set map auto color style thickness' 'set map 15 1 3' |
gxout=grid で表示される数値の大きさをかえる. | set digsize <size>単位はinch.0.10-0.15が適当. |
gxout=grid で表示される数値の小数点以下桁数を変える. | set dignum <number><number> が小数点以下桁数. |
画面をgif file に出力 | wi gif-file名 |
draw string で書かれる文字の属性を変える | set string color <justification <thickness <rotation>>> |
EPS file で任意の大きさにする | gxps -c -i input.gmf -o output.ps としてから,Corel
Drawで読み込み. サイズを変更してファイル→エキスポート.Corel Drawではレターサイズを選択しないと図がゆがむ. |
移動平均を求める |
'define ta=ave(t1,t-3,t+3)' 'd ta' のようにしてdefineで移動平均を求めることができる。直接 'd ave(t1,t-3,t+3)' とするとエラーとなるので、注意が必要。 |
gif, jpeb, bmp での出力 | 図を表示して wi filename.gif/jpeg/bmp |
変数への代入の’のくくり | はあってもなくても良い.たとえば mth1='jan'; yr1='1997' mth1=jan; yr1=1997 は上下の行で結果が同じ. |
気候値の計算 | たとえばNCEP/NCAR再解析データのSST気候値を求めるには 'open //Elnino/datagrid/NN_reanl/original/mth_npl.org/flx.gau.grib.mean.y1949-cur.ctl' 'set time jan1960 dec1969';* # 12ヵ月分の時間配列をとる 'define SSTclm=ave(TMPsfc,t+0,t=641,1yr)';* # 気候値 |
偏差の計算 | 上で気候値を求めた後に 'modify SSTclm seasonal';* これで偏差を求める際に用いた特定の時間でなくとも気候値が利用できる 'set time jan1998 may2002';* 'd TMPsfc-SSTclm';* # 偏差を描画(アニメーション) |
2002/5/15
テキストファイルに出力したデータをGradsで読みたいという需要は大きいだろう.例えば,EOFのexplained
variance とかは,目でも読めるテキストデータにするのが,いろいろと楽だ.しかし,Gradsでは変数に2種類あって,データの表示につかえる変数(display
で表示される変数)と,スクリプト言語の中で使える変数があり,データ表示変数にテキストファイルから読み込むのは簡単なのだが,スクリプト変数にそのまま読み込むことはできない.そのためには,次のような手立てが必要なようである.
test.gs の中身:
'open dummy.ctl';* なんでもいいからopenしておかないとだめ. 'exec setpara.gs':* データ表示変数に設定 'd para1'; val=subwrd(result,4);*
上付き下付きやギリシャ文字を文字列中で利用するには、エスケープ文字"`" で始まる命令を使う。
例えば、
'draw string 1 4 1.0`3.`1C' 'draw string 1 3 10`a-2' 'draw string 1 2 `3t`1`ax`n' 'draw string 1 1 `3t`1`bx`n'
で、1℃, 10^-2, τ^x, τ_y (^は上付き、_は下付き)の文字が書かれる。
下のようにコントロールファイルに,鉛直方向のデータ読みこみ順を変える'OPTIONS ZREV'と,ZDEFを逆に指定したやれば良い.
DSET ^t0_400.grd TITLE JEDAC Monthly Anomalies of Temperature at 80 m in Deg. C OPTIONS ZREV UNDEF -1.e+10 XDEF 73 LINEAR 30 5 YDEF 61 LINEAR -60 2 ZDEF 11 LEVELS 400 300 240 200 160 120 80 60 40 20 0 TDEF 552 LINEAR JAN1955 1MO VARS 1 v 11 99 JEDAC Temperature at 0 m in Deg. C ENDVARS
こうしておけば,例えば下図のように表示できる.
t=1 'set display color white' 'clear' while ( t<100 ) 'set t 't 'd expr' if (t<10) 'wi im-0't else 'wi im-'t endif t=t+1 endwhile '!convert -delay 20 im-*.gif anim.gif' '!rm im-*.gif'
こうやって、convert されたanim.gif を通常のgif fileと同様に, WWWページの任意の場所に張りつければ良い。 そのページが表示されると、アニメーションが動く。 実用的には、アニメーションは常に表示するには重いし嫌がる人もいるので、アニメーションは説明文のページとは別なページに置き、説明文のページにはそこへのリンクを張っておけば良いだろう. たとえばサンプルのアニメーションがここで見れます.(まだこのページはそうなっていないけれど)。以下は参考ポイント。
^B 一文字後退 backward one character ^C 一文字前進 forward one character ^D 一文字削除 delete current character ^P (↑) 記憶されている前の行へ previous command in history list ^N (↓) 記憶されている次の行へ next command in history list ^L コマンド編集モードを閉じる clear command window
set gascrp=d:/myprog/grads.pth
この設定を行わなくてもインストールディレクトリ(通常は c:\pcgrads) の\lib のスクリプトは読み出せる。 またこれを設定するとデフォルトのlibディレクトリの読み出しは利かなくなる。おすすめは、c:\pcgrads\lib のファイルを自作の適当な(c ドライブ以外の時々はバックアップを取る)ディレクトリにコピーして、そこに自作のgrads scriptも入れておくというものである。こうすることで効率よくバックアップを取ることができる。run cbarn siz h/v xmid ymidで、指定するパラメータは以下のとおり
grads -pcb なんとか.gs > x.xとしてリダイレクトしてエラーメッセージをファイルに格納して、そのファイルを見ましょう。(Fortranのエラーメッセージはリダイレクトが有効ではない(標準出力に出ていないだめ)が、Grads のエラーメッセージは大丈夫)
function nanndemo(cargin) arg1=subwrd(cargin,1) arg2=subwrd(cargin,2) say arg1 say arg2 output=test2('internal') say ouput return function test2(cstring) say cstring return cstring' output'Gradsのコマンドラインから、 ga-> test1 input1 input2
input1 input2 internal ouput
★新しいversion のGradsでは,数学関数(Grads document のmath_function参照のこと)がサポートされているので,以下のトリックは使う必要がありません.例えば,math_sin, math_cos, math_mod などが利用できます.
GradsのScript language では、sqrt, sin, cos などが support されていない。 しかし、Grads のdisplay command では support されている。このことを利用して、これらの関数をscript langauge を用いた function として定義することが可能である。 例えば、sqrt であれば、
function sqrt(args) gvnvalue=subwrd(args,1) 'd sqrt('gvnvalue')' sqrtvalue=subwrd(result,4) return sqrtvalue
というファイルを script.gs という名前にして、Grads の Script のディレクトリ に置いておいて、
'run sqrt 2' a=result
とすれば、aに1.414が格納される。この sqrt.gs は内部で display command を使うので、 その実行には、すでにgrads ctl file が open されていることが必要である。類似の有用な 関数として、log10,logn (natural log), sin, cos を用意した。