GrADSによる気候値の作成方法


気候値の作り方の例を示す. 以下は,OISST (AVHRR only; 0.25 degree interval)月平均値を用いた, いわゆる「気候値」(長期平均.WMOないし気象庁では,30年間)の作成例である. target_dir=(ctl ファイルが置き場), data_path=(月平均OISSTデータ置き場), とする.

GrADS ctl ファイルは以下のようになっている:

DSET ${data_path}/avhrr-only_monthly_mean_%y4%m2.bin
* Created by ~/sst/OISST_daily-0.25deg/climate/mk_monthly.sh
UNDEF -999.0
options big_endian template
TITLE Monthly mean OI SST (0.25 degree interval) 
*
XDEF 1440 LINEAR   0.0 0.25
YDEF  720 LINEAR -90.0 0.25
ZDEF 1 LEVELS 1013
*** period: 353 month (from 1982-01-00 to 2011-05-00)
TDEF  353 LINEAR 00Z01Jan1982 1mo
*
VARS 4
sst   1 0  SST
anom  1 0  SST anomaly
err   1 0  error information
ice   1 0  ice concentration
ENDVARS


上記の場合,1982年1月-2011年5月まで(353ヶ月)の 月平均SSTなどのデータが, 月別ファイルに分割されて保存されている(データファイルが353個ある). ただし,big endian binary で記録されている.

気候値作成の具体的手順は以下の通り:
  1. 平均期間の起点から1年分の時間を設定. (平均期間がデータの最初からの場合,月平均値なら set t 1 12 と設定. もし, 平均期間を1991年からにしたけりゃ,set time jan1991 dec1991 とすればよかろう)
  2. 平均期間分の月別平年値を作成. define clim=ave(sst,t+0,t=N,1yr) と記述. N は平均期間の長さ.20年分なら N=240 (12-month * 20-yr = 240 months in total)になる.
  3. modify により1年周期変動する時系列データ(気候値 "clim")に「焼直し」


% grads

Grid Analysis and Display System (GrADS) Version 2.0.a9
Copyright (c) 1988-2010 by Brian Doty and the
Institute for Global Environment and Society (IGES)
GrADS comes with ABSOLUTELY NO WARRANTY
See file COPYRIGHT for more information

Config: v2.0.a9 little-endian readline printim grib2 netcdf hdf4-sds hdf5 opendap-grids,stn geotiff shapefile
Issue 'q config' command for more detailed configuration information
Landscape mode? ('n' for portrait):  
GX Package Initialization: Size = 11 8.5 
ga-> open ${target_dir}/010_quickview_sample.ctl 
Scanning description file:  010_quickview_sample.ctl
Data file ${data_path}/avhrr-only_monthly_mean_%y4%m2.bin is open as file 1
LON set to 0 360 
LAT set to -90 89.75 
LEV set to 1013 1013 
Time values set: 1982:1:1:0 1982:1:1:0 
E set to 1 1 
ga-> set t 1 12
Time values set: 1982:1:1:0 1982:12:1:0 
ga-> define clim=ave(sst,t+0,t=348,1yr)
Averaging.  dim = 3, start = 1, end = 348
Averaging.  dim = 3, start = 2, end = 348
Averaging.  dim = 3, start = 3, end = 348
Averaging.  dim = 3, start = 4, end = 348
Averaging.  dim = 3, start = 5, end = 348
Averaging.  dim = 3, start = 6, end = 348
Averaging.  dim = 3, start = 7, end = 348
Averaging.  dim = 3, start = 8, end = 348
Averaging.  dim = 3, start = 9, end = 348
Averaging.  dim = 3, start = 10, end = 348
Averaging.  dim = 3, start = 11, end = 348
Averaging.  dim = 3, start = 12, end = 348
Define memory allocation size = 99601920 bytes
ga-> modify clim seasonal
Defined variable is now climatological


作成に要する作業は上記まで. open を除けば,必要なコマンドはわずか3行である. 後は,作成したデータを確認してみる.


ga-> c
ga-> d clim
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 306 interval 3 
Contouring: 273 to 306 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
Contouring: 273 to 303 interval 3 
(上記は月別気候値を連続表示)


ga-> set t 348
Time values set: 2010:12:1:0 2010:12:1:0 
ga-> d sst-clim
Contouring: -9 to 4 interval 1 
ga-> c
ga-> d sst-clim
Contouring: -9 to 4 interval 1 
ga-> set gxout shaded
ga-> c
ga-> 
ga-> d sst-clim      
Contouring: -9 to 4 interval 1 
ga-> run cbarc
(ここまでで,2010年12月のSST anomaly を表示)

ga-> c
ga-> set t 1 348
Time values set: 1982:1:1:0 2010:12:1:0 
ga-> xanim -sec 0.5 sst-clim
(xanim.gs を使った,「疑似アニメーション」表示.
1982-2010年,0.5秒間隔で表示切り替え)

作った気候値を fwrite を使って書き出せば,気候値データファイルも作れる. fwrite での書き出しは little endian になるので要注意. ただし,個人的意見として,この方法は万人にお薦めできない.

以下,技術情報とは無縁の,「オヤジの一言」.

GrADS は極めて有効な道具である. ある程度の経験を積んだ研究者(ないし大学院生)が使えば, データ処理用プログラムを書く時間節約になる. 節約して出来た時間は,結果の解釈・論理の構築に使えば良い. 非常に生産的である.

しかし,卒業論文作成などで初めてデータをさわる学生さんが GrADS に頼りきった解析をするのは,要注意である. GrADSのデータ処理は非常に簡単である. ただ,それに慣れてしまうと, 卒論提出間際まで(あるいは最終提出まで?)プログラムを1本も書かずに 過ごすことがある.

ある程度解析結果が揃った段階(卒論だと提出間際の事が多い)になると, 指導教官などが 「こういう解析をやってみたらどうかな?」 と,身を乗り出して(or 楽しそうに)助言する事がある. 教える側からこの手の発言が出るのは, 「ようやく研究の入口に立った」レベルであることが多い. 面白くなったからこそ,さらなる高みを目指した解析を指示する.

しかし,そのレベルになると, GrADSのスクリプトだけでは対処困難 (あるいは極めて複雑な処理が必要)な事が多い. そうなると,プログラムを書けない学生は以下のように回答する事がある: 「その解析は無理です」, 「時間が無いからできません(でした)」

そんなのは言い訳にもならない. 自分が無能です,と高らかに宣言しているようなもの. そう言われるのが嫌だったら,自分でプログラムを書きなさい. 処理できることが飛躍的に増え,その結果研究するのが楽しくなる.

解析技術の習得に時間を取られて,研究にならないのは本末転倒だが, 解析技術不足が原因で研究の面白みを理解出来ない,というのは勿体ない. 大学に来た意味が無い. 教える側にとっても,これは非常に悔しい事である.

用いるプログラミング言語は何でも良いが, 周囲に情報を聞ける人材がいる事が望ましい. 何もゼロから始める必要は無い. サンプルプログラムを貰い, それを自分なりにアレンジする(or マネをする)事から始めるのが普通. ちなみに,気候・気象学分野だと,歴史的経緯により Fortran を使う人が多い.


早崎Webトップへ戻る
気候学・気象学関連情報へ戻る