早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

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

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

気候値の作り方の例を示す. 以下は,OISST (AVHRR only; 0.25 degree interval)月平均値を用いた, いわゆる「気候値」(長期平均.WMOないし気象庁では,30年間)の作成例である.

target_dir=(ctl ファイルが置き場),
data_path=(月平均OISSTデータ置き場),

とする.

 データ,CTL ファイル

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を使うことの弊害

以下,技術情報とは無縁の,「オヤジの一言」(記述日: 2011-06-09).

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

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

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

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

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

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

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

更新履歴

GrADS関連情報(hysk) の更新履歴.
日付 変更内容
2015-09-05 旧ページ([web_home]/meteorol/old_contents/grads/climatology.html) より移設. 他のページと同じスタイルファイルを適用するため,節見出しや体裁部分のみ微調整.
2011-06-19 旧ページ([web_home]/meteorol/old_contents/grads/climatology.html) の最終更新日 (checked 2015-09-05)
1999-XX-XX HTML版 grads/ での作成時期. 最初の作成日は不明だが,複数のファイル(全7ファイル中,3ファイル)が 20世紀末の1.5年間に最終更新されてる(from 1999-01-21 to 2000-05-17)ので, 初版作成はこのあたりだと思われる.