気象データ解析ツールであるGrADSについての情報をまとめています。

このwiki内では、グリッドファイル(GrADS 4byteバイナリ、特に断らなければdirect書き込み)を〜.bin、コントロールファイルを〜.ctl、変数名をvarと表記します。


Components of a GrADS Data Descriptor File

東北大学大学院理学研究科 流体地球物理学講座 公開情報/GrADS→コントロールファイルの文法

GrADS データディスクリプターファイルの要素

COARSE規約でないnetcdfファイルを読む


・データ配信元でctlファイルが配布されていないか調べる(tools、programsなど)
・データの情報を調べる(undef値、格子情報、変数の数) 
・一行あたり数百文字までしか読み込んでくれないため、x, y, zなどを
 levelsで設定するときなどは、適度なところで改行すること。

※NetCDFファイルから書き出したbinaryを読む場合

1. 元の.ncファイルをGrADSでsdfopenする
2. q ctlinfo で表示された内容をコピー、ペーストする。
3. dset文をbinaryを読むように書き換える
4. 末尾にendvars文を書く
5. その他、書式の間違いを書き直す(undef値、格子情報、変数の数と名前、他)



複数のファイルを一つのctlファイルで開く



year, monthによる指定

var197101.bin
var197102.bin
・・・
var200012.bin

の場合:

dset ^var%y4%m2.bin
・・・
options template
・・・
tdef  360 linear 16jan1971 1mo
・・・

chsubによる指定 (GrADS 1.9b4)

var1971-1980.bin
var1981-1990.bin
var1991-2000.bin

の場合:

dset ^var%ch.bin
・・・
options template
chsub    1 120 1971-1980
chsub  121 240 1981-1990
chsub  241 360 1991-2000
・・・
tdef  360 linear 16jan1971 1mo
・・・

http://cola.gmu.edu/grads/gadoc/templates.html

下記のような、GRIB、NetCDFの読み込みと併せて使用することもできる。
GRIB、NetCDFの元ファイルが時間軸によって複数に分かれているとき、chsubを使うとすごく便利。
GRIBの例はJRA/JCDASなど。
NetCDFの例:

WCRP CMIP5 multi-model dataset

DSET    /cmip5/MIROC5/piControl/mo/tas_Amon_MIROC5_piControl_r1i1p1_%ch.nc
DTYPE   netcdf
TITLE   XXX
UNDEF   9.96921e+36
OPTIONS 365_day_calendar template
chsub     1 120 200001-209912
chsub   121 240 210001-219912
chsub   241 360 220001-229912
chsub   361 480 230001-239912
chsub   481 600 240001-249912
chsub   601 720 250001-259912
chsub   721 840 260001-269912
xdef 256 linear 0 1.40625
ydef 128 levels -88.9277 -87.5387 -86.1415 -84.7424 -83.3426 -81.9425 -80.5421 -79.1417
 -77.7412 -76.3406 -74.94 -73.5394 -72.1387 -70.7381 -69.3374 -67.9367 -66.536 -65.1353
 -63.7345 -62.3338 -60.9331 -59.5323 -58.1316 -56.7309 -55.3301 -53.9294 -52.5286 -51.1279
 -49.7271 -48.3264 -46.9256 -45.5248 -44.1241 -42.7233 -41.3226 -39.9218 -38.5211 -37.1203
 -35.7195 -34.3188 -32.918 -31.5172 -30.1165 -28.7157 -27.315 -25.9142 -24.5134 -23.1127
 -21.7119 -20.3111 -18.9104 -17.5096 -16.1088 -14.7081 -13.3073 -11.9065 -10.5058 -9.10499
 -7.70422 -6.30345 -4.90269 -3.50192 -2.10115 -0.700384 0.700384 2.10115 3.50192 4.90269
 6.30345 7.70422 9.10499 10.5058 11.9065 13.3073 14.7081 16.1088 17.5096 18.9104
 20.3111 21.7119 23.1127 24.5134 25.9142 27.315 28.7157 30.1165 31.5172 32.918
 34.3188 35.7195 37.1203 38.5211 39.9218 41.3226 42.7233 44.1241 45.5248 46.9256
 48.3264 49.7271 51.1279 52.5286 53.9294 55.3301 56.7309 58.1316 59.5323 60.9331
 62.3338 63.7345 65.1353 66.536 67.9367 69.3374 70.7381 72.1387 73.5394 74.94
 76.3406 77.7412 79.1417 80.5421 81.9425 83.3426 84.7424 86.1415 87.5387 88.9277
zdef 1 levels 0
tdef 840 linear 12Z16JAN2100 1mo
VARS    1
tas=>tas 1 t,y,x Surface Air Temperature [K]
ENDVARS

整数データを読む


vars     1
u(変数名)   23(層数), 99(ユニット指定)   zonal wind velocity   [m/s](変数の説明)
endvars

の「ユニット指定」の部分を書き換える。

-1,40,1 	1バイト符号なし整数
-1,40,2 	2バイト符号なし整数
-1,40,-2 	2バイト符号有り整数
-1,40,4 	4バイト整数

http://www.gfd-dennou.org/arch/gtool4/conventions/...


サンプルctlファイル


  • NCDC GHCN temperature

ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/v2/grid/
のgrid_1880_2009.dat.gzをbinaryに変換したt.binを読むctlファイル

dset ^t.bin
title NCDC GHCN t
options big_endian
undef -999.0
xdef    72 linear 0.0 5.0
ydef    36 linear -87.5 5.0
zdef     1 levels 1000
tdef  1600 linear jan1880 1mo
vars     1
var   1 0 x,y t
endvars


  • GPCP Version 2.1

http://www1.ncdc.noaa.gov/pub/data/gpcp/gpcp-v2.1/...

DSET   ^gpcp_v2.1_psg.%y4
options yrev big_endian template
UNDEF  -99999.0
FILEHEADER 576
TITLE GPCP Version 2.1 Monthly Precipitation
XDEF  144 LINEAR 1.25 2.5
YDEF   72  LINEAR -88.75 2.5
ZDEF    1 LEVELS 1
TDEF  372 LINEAR 01Jan1979 1mo
VARS    1
precip  0 99 GPCP V2.1 Monthly Precipitation (mm/day)
ENDVARS


  • WCRP CMIP3 Multi-Model Dataset Archive in PCMDI

http://www-pcmdi.llnl.gov/ipcc/about_ipcc.php
より、NetCDFファイルを読み込み、binaryに変換したhus1901-2000.binを読むctlファイル

dset ^hus1901-2000.bin
title mri-cgcm2.3.2a 20c3m
options 365_day_calendar big_endian
undef 1e+20
xdef    128 linear 0.0 2.8125
ydef     64 levels -87.8638 -85.0965 -82.3129 -79.5256 -76.7369 -73.9475 -71.1578 -68.3678
-65.5776 -62.7874 -59.997 -57.2066 -54.4162 -51.6257 -48.8352 -46.0447 -43.2542 -40.4636
-37.6731 -34.8825 -32.0919 -29.3014 -26.5108 -23.7202 -20.9296 -18.139 -15.3484 -12.5578
-9.76715 -6.97653 -4.18592 -1.39531 1.39531 4.18592 6.97653 9.76715 12.5578 15.3484
18.139 20.9296 23.7202 26.5108 29.3014 32.0919 34.8825 37.6731 40.4636 43.2542
46.0447 48.8352 51.6257 54.4162 57.2066 59.997 62.7874 65.5776 68.3678 71.1578
73.9475 76.7369 79.5256 82.3129 85.0965 87.8638
zdef     17 levels 100000 92500 85000 70000 60000 50000 40000 30000
                   25000 20000 15000 10000 7000 5000 3000 2000 1000
tdef   1200 linear jun1901 1mo
vars      1
hus      17 x,y Specific Humidity
endvars


GRIBを読むctlファイル



idxファイルを用意し、
ctlファイルのindex文にidxファイル名を表記する。

http://ssrs.dpri.kyoto-u.ac.jp/~mizkey/fnlgrads2_1...

GrADS2まとめ → GRIB2形式のデータを読む


NetCDFを読むctlファイル

sdfopenで開くことはできるが、displayできない場合

NCEP/DOE R2 air.mon.mean.ncを開くctlファイル

64-bitマシンのGrADSでsdfopenすると、時おり「289.615」という値が
「32768」「-32767.0」という値に変わってしまう。
16ビットで表現できる整数の範囲と関係がありそうだが…
とにかくctlファイルを作らないといけないようだ。
http://wind.geophys.tohoku.ac.jp/index.php?%B8%F8%...

DSET    ^air.mon.mean.nc
DTYPE   netcdf
TITLE   XXX
UNDEF   -9.96921e+36
UNPACK  scale_factor add_offset
OPTIONS yrev
XDEF  144 linear   0   2.5
YDEF   73 linear -90   2.5
ZDEF   17 levels 1000 925 850 700 600 500 400 300
                 250 200 150 100 70 50 30 20 10
TDEF  360 linear 00Z01JAN1979 1mo
VARS    1
air=>q 17 t,z,y,x Temperature
ENDVARS

UNPACK  scale_factor add_offset

上記の行は、NetCDFファイルで「scale_factor」「add_offset」が設定されている場合、ctlファイルを使って読んだときに、その係数を掛け、定数を足した上で表示してくれる。NetCDFファイルで「scale_factor」「add_offset」が設定されているのに、ctlファイルにこの行を書かなかった場合、格納されている数値をそのまま扱ってしまう。

https://www.gfd-dennou.org/arch/ucar/netcdf-jman/g...

http://cola.gmu.edu/grads/gadoc/descriptorfile.htm...

http://geology.er.usgs.gov/eespteam/prism/prism_da...
より、BAS_P3_biome_veg_v1.0.nc を読むctlファイル

DSET ^BAS_P3_biome_veg_v1.0.nc
DTYPE netcdf
TITLE XXX
UNDEF -999
OPTIONS yrev
XDEF 180 linear -179.0 2.0
YDEF  90 linear -89.0 2.0
ZDEF   1 levels 0.0
TDEF   1 linear 01JAN0001 1mo
VARS 1
biome_vegetation=>q 0 y,x hoge
ENDVARS


sdfopenで開くことができない場合

COARSE規約でないnetcdfファイルを読む
NOCS Surface Flux Datasetを読むctlファイル

http://www.noc.soton.ac.uk/noc_flux/noc2.php
より、nocs_v2_0_at_1973.nc を読むctlファイル

DSET    ^nocs_v2_0_shf_1973.nc
DTYPE   netcdf
TITLE   NOCS Surface Flux Dataset v2.0 (NOCS v2.0)
UNDEF   -9999.
OPTIONS
XDEF  360 linear -179.5   1.0
YDEF  180 linear  -89.5   1.0
ZDEF    1 levels 0
TDEF   12 linear 00Z01JAN1973 1mo
VARS    6
shf=>shf  1 t,y,x Sensible Heat Flux [watt/m2]
shf_err_rand=>shfer  1 t,y,x Sensible Heat Flux Random Uncertainty Estimate [watt/m2]
shf_err_bias=>shfeb  1 t,y,x Sensible Heat Flux Bias Uncertainty Estimate [watt/m2]
shf_err_total=>shfet  1 t,y,x Sensible Heat Flux Total Uncertainty Estimate [watt/m2]
shf_sdv=>shfs  1 t,y,x Sensible Heat Flux Intra-monthly Standard Deviation [watt/m2]
shf_qflag=>shfq  1 t,y,x Sensible Heat Flux Quality Indicator Flag [flag]
ENDVARS


WRF outputのnetCDFを読むctlファイル

DSET ^wrfout_d01_2008-07-27_00%3A00%3A00
DTYPE netcdf
TITLE wrf output atmosphere & surface
UNPACK scale_factor add_offset
UNDEF -999
PDEF 119 119 LCC 35.698349 139.0202 60 60 30 60 139.0202 4100 4100
XDEF 150 linear 136 0.04
YDEF 115 linear 33.4 0.04
ZDEF 30 linear 0.0 1
TDEF 8 linear 00:00Z27jul2008 3hr
VARS 6                                           #一部の変数だけ
U=>u      30 t,z,y,x   x-wind component [m s-1]
V=>v      30 t,z,y,x   y-wind component [m s-1]
W=>w      30 t,z,y,x   z-wind component [m s-1]
T=>t      30 t,z,y,x   perturbation potential temperature (theta-t0) [K]
T2=>t2    0 t,y,x      TEMP at 2 M [K]
HGT=>hgt  0 t,y,x      Terrain Height [m]
ENDVARS

WRFのoutputのnetCDFファイルは、そのままではGrADSでsdfopenできないため、
wrf2gradsを使ってgrads用に変換し直す?ようだが、
コントロールファイルを作れば元のファイルのままでも読める。

http://www.mdl.nws.noaa.gov/~applications/LAD/data...

http://www.mmm.ucar.edu/wrf/users/tutorial/200801/...

http://cola.gmu.edu/grads/gadoc/pdef.html

HDF


GrADSはHDFファイルを部分的にサポートしているので、開けるものはそのままsdfopenで開く。
sdfopen hoge.hdf

HDFを読むxdfファイル


xdfファイルを作成してxdfopenする。

http://hdfeos.org/software/grads.php

http://www26.atwiki.jp/rffbl22/pages/96.html


hoge.xdf
DSET AMSR_E_L3_RainGrid_B05_200707.hdf
TITLE AE_RnGd
OPTIONS YREV
XDEF XDim:MonthlyRainTotal_GeoGrid 72 LINEAR 2.55
YDEF YDim:MonthlyRainTotal_GeoGrid 28 LINEAR -67.55
VARS 1
RrLandRain=>RrLandRain Rain rate derived monthly rain total over land.
ENDVARS 
xdfopen hoge.xdf

HDFを読むctlファイル


COARDS規約に沿っていないHDFファイルは、コントロールファイルを作成してopenで開く。

hoge.xdf
DSET AMSR_E_L3_SeaIce12km_B02_20020619.hdf
DTYP Ehdfsds
UNDEF 0_FillValue
PDEF 608 896 BILIN STREAM BINARY bilin_file
XDEF 360 linear -179.5 1
YDEF 180 linear -89.5 1
ZDEF 1 levels 0
TDEF 1 linear 00Z19jun2002 1mo
VARS 1
SI_12km_NH_SNOWDEPTH_5DAY=>snow 0 y,x SI_12 Snow Depth
ENDVARS 
open hoge.xdf

このページへのコメント

ykamaeさん教えていただきありがとうございました。またWRFのこともわからないのに私のために時間を割いていただき、本当にありがとうございました。
ykamaeさんのご教授でグラフを作れるようになりました。
大変お世話になりました。また質問があったら、お邪魔させていただくこともあると思いますが、その時はよろしくお願いいたします。

0
Posted by カイ 2015年01月21日(水) 18:42:48 返信

(続き)GrADSでctlファイルを開いて、そのままd u10などで水平分布図ができますね。(それが出ない場合はデータが正しく出来ていないということです。)
その状態で、風のデータが存在する点をset x、set y(あるいはset lon、set lat)で指定して、時間の幅を指定して(set t 始点 終点)、d 変数名で時系列グラフになるはずです。それが出てこないということは、x, y, z, tの指定が何か間違っているか、変数名が間違っているかのどちらかです。

datファイルは、この場合は4byte 実数でデータが格納されているバイナリファイルだと思いますので、ctlファイルを使ってGrADSで解析する、fortran等で読み込んで計算処理する、といった活用方法が考えられますね。いずれもGrADS、fortranの勉強をして頂ければと思います。

いずれにしても、お近くにWRF経験者がもしいるのであれば、その人に教えを乞うのがベストでしょう。

0
Posted by ykamae 2015年01月20日(火) 22:01:04 返信

カイさん

追加の情報をありがとうございます。
私はWRFを使ったことがありませんのでわかりませんが、ARWPOSTで検索すると、ARWpostのインストールから実行、結果の図化まで、一連のステップについて解説しているサイトが見つかりますので、まずはそこを参考にするとよいのではないでしょうか。

と思って見ていたのですが、そこのサイトでも同じお名前の質問者がいらっしゃいましたので、どうやらそこでもご質問されていたようですね。(続く)

0
Posted by ykamae 2015年01月20日(火) 21:58:32 返信

ykamaeさんありがとうございます。
WRFの計算をしてARWPOSTで.CTLファイルと.DATをつくって、.CTLファイルのデータを用いて最終的には東京湾の観測点においての1日くらいの風強の推移を折れ線グラフを作りたいのです。
でいまできないのはグラフ自体を作れないのですが、マニュアルを見て少しやってみたのですが、線の太さや対象時間などはコマンドが入るのですが、
可視できるようになるところの画面にまったく反応されずSyntax Error: Invalid Operand
'var' not a variable or function name
Error ocurred at column 1
DISPLAY error: Invalid expression
Expression = var
と出てきます。またこの.DATファイルとはどのような活用の仕方があるのか教えていただきたいです。
貴重な時間申し訳ありません。

0
Posted by カイ 2015年01月20日(火) 19:06:53 返信

カイさん、はじめまして。ご質問の文章だけでは情報が少なくて、そもそも値が描けないのか、思うようなデザインのグラフにできないのか、が判断できませんが、後者でしょうか?時系列図であれば折れ線の色、太さ、マーク、線の種類、軸や軸ラベルの色や範囲、枠の大きさなど、設定するコマンドを使うと改善されるのではないでしょうか。最低限の情報は トップページの「GrADSの使い方資料」 や 「GrADSスクリプトでよく使う文まとめ」→折れ線グラフのオプション に掲載しています。

0
Posted by ykamae 2015年01月17日(土) 14:26:48 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます