GRIB2 ファイルの dump (wgrib2 コマンド)
GIRB-2 形式ファイル(単にGRIB2ファイルと称されることもある)の 読み出し(デコード; decode)に関するメモ.
- GRIB & wgrib 情報 or GRIB-1 ファイルのdump (wgrib コマンド) を見る
- 気候学気象学関連情報 に戻る
- GRIB-2形式で配布されているデータ:
wgrib2 の使用方法
読み出したいGRIB2 ファイル名を hoge.grib とする.
コマンドラインでの使い方はこんな感じ:
wgrib2 [オプション] hoge.grib
これだけじゃ単純過ぎると思うかもしれませんが, wgrib2 のオプションと UN*X コマンドを使い, シェルスクリプト内で時間に関するループ(スクリプト雛型以下)などを使えば, データの抜き出し・バイナリ変換など,データ解析時に必要な一次処理の大部分が実現できます.
私的に作った wgrib2 の使い方
下記のメモ,自分でもたまに間違いを見つける (2012-10-10, 記述開始は2010年1月20日頃). 本ページで間違いを見つけたら,遠慮なく私まで連絡を.
注意点
wgrib ユーザが陥りやすい, wgrib2 になってからの大きな違いは, ファイル出力時の緯度方向の記録順序が,南から北向きをデフォルトとしていること です.くれぐれも間違えないように!! (私は間違えてました.少なくとも丸1日悩んだ.アホや)
wgrib2 の基本
以下の6つの実行例だけを知れば,とりあえずGRIB2ファイルの中身の情報を知ることができ, バイナリダンプして GrADS やら Fortran の計算プログラムに流し込むなどが出来るはず. これで大抵の事は出来るでしょう.
それ以外にも wgrib2 には豊富な機能(データを選択して切り出し,出力形式の変更など)がある. 詳細はwgrib2 メモ(早崎私家版) または tricks.wgrib2 の簡易日本語訳を参照.
データの中身を表示
変数名,日付などの基本情報だけを知りたいとき
wgrib2 ifile.grb2
上記に加え,グリッド数,データの単位,データの範囲(最大・最小値など)を知りたいとき
(1データブロックにつき複数行表示) wgrib2 -V ifile.grb2 (グリッド情報のみ) wgrib2 -grid ifile.grb2 (1データブロックは1行表示.ただし,オプションの付け方で表示情報が変化) wgrib2 -v0 ifile.grb2 wgrib2 -v ifile.grb2 wgrib2 -v2 ifile.grb2 (-v2 が最も verbose )
バイナリ形式に変換
ダイレクトアクセスバイナリ形式(direct-access binary format)への変換. GrADSユーザにとって使い易い形式,と表現すれば,(気象学の関係者なら)わかる人も多いだろう.
big endian バイナリ形式に変換したいとき. オプション(-no_header & -ieee)の順序は入替え不可. -ieee オプション(IEEE形式,いわゆる big endian に相当?)は,直後の引数を出力ファイル名に使うため.
wgrib2 ifile.grb2 -no_header -ieee ofile.bin
little endian (Intel 系CPUで使用してるバイナリコード) バイナリ形式に変換したいとき. オプション(-no_header & -bin)の順序は入替え不可. -bin オプションは,直後の引数を出力ファイル名に使うため.
wgrib2 ifile.grb2 -no_header -bin ofile.bin (例: 500 hPa面のジオポテンシャル高度のみ変換したいとき) wgrib2 ifile.grb2 -match ":HGT:500 mb:" -no_header -bin ofile_z500.bin
オプションの種類・意味を知りたい
コマンドラインにて引数無しで wgrib2 を実行.パイプを通してページャ less に渡す. 大学生くらいなら,表示されたものを見ればわかるでしょう. オプションは,種類によっては引数を伴うものがある. そこだけは注意.
wgrib2 | less
wgrib2 メモ(早崎私家版)
以下は早崎による使用例とその解説. 個人的メモのテキストファイルHOW2USE-jp_wgrib2を HTMLに include して掲載.
tricks.wgrib2 の簡易日本語訳
個人的メモのテキストファイルtricks.wgrib2-jpを HTMLに include して掲載.
GRIB2 データへの GrADS による直接アクセス
g2ctl (perl script) と GrADS 付属の gribmap コマンドを使用.
JMA GPV data の場合
JMA GPVデータの情報は, JMA GPV メモ (hysk) も参照. See also 大気科学データ情報 > 現業気象データ.
私の場合は, g2ctl を /usr/local/bin/ 以下にコピー & chmod 755 して使用.
g2ctl hogehoge.grib > hogehoge.ctl gribmap -i hogehoge.ctl -0 ※gribmap の最後のオプションは「ゼロ」です.0時間予報値(解析値)だけを使う場合.
- Problems
- 格子間隔の異なるデータが混在していると, GrADS で正常表示されない? (JMA GSM データを使い,g2ctl & gribmap による ctl, idx ファイル作成した場合に確認)
- 時間降水量(1時間積算値)とそれ以外の気象要素が混在しているデータ
(例: JMA MSM) を使って,gribmap を実行すると異常終了する
(自分の使用方法に問題があるためかもしれない.詳細は後述)
- ctl ファイルで options template を使い, 初期時刻ごとに分割された GRIB2 ファイルの idx を作成しようとして失敗
- (以下は個人的推測.内部のコードを見たわけじゃないので, 間違っている可能性も十分ある.要注意) ある初期時刻(hour=00 とする) のデータファイルには, 毎正時の解析値・予報値と時間積算降水量が入っている. この時,ファイル内に含まれる時刻情報が2つ(hour=00 & hour=+01)存在する
- ctl ファイル内の tdef の時間数を, 日数 x 24 で与えてしまうと,GRIB2 ファイルの時間数と一致 (ctl ファイルの指定が1時間不足)せず,データ不足とみなされて異常終了... といったところか?
NCEP FNL (GRIB2) の場合
JMA GPV と特に違いは無い(と思う). というより,現時点では違いを見つけられるほど私が使い込んでいない, というのが実状.
気象庁レーダーアメダス解析雨量
- 気象業務支援センター販売のDVD,2006年以後のデータが GRIB-2 形式
- g2ctl & gribmap を使った GrADS idx ファイル作成が出来ない. まだ原因究明してない
- バイナリダンプはどうやら正常に出来ていそうなので, GRIB2 ファイルの直接アクセスは(とりあえず)断念. 見たい期間があれば,必要に応じてバイナリダンプする,という方法で当座は対応
NCEP CFSR
ごく一般的な GRIB2ファイル. 使用上の問題,特に無し. このデータに関する情報は, 長期再解析 # NCEP CFS 再解析, or CFS 再解析 メモ に記載.
上記以外の GRIB2 データ
今のところ(update 2016-02-28),上記以外で GRIB2 形式で配布しているデータセットを知らない. 他に存在するときには教えてください >> 皆様
wgrib2 サンプルスクリプト
GRIB-2 から IEEE形式への変換
- 対象スクリプト: grib2_to_bin(下に表示してるものと同一)
- 私はこれを自分用バイナリ変換スクリプトとして,~/local/bin/ 以下に置いて使用.
- 使い方: grib2_to_bin 入力ファイル 出力ファイル
実際の使用例として, 気温データを温位に変換, grdmath の POW & MUL operator も参照. GRIB-2形式データをGMTで使う例として,細かいけど結構有用なノウハウを使っている(つもり).
JMA GPV (MSM) 再アーカイブ
- 対象スクリプト: rearchive_MSM_pall.sh(下に表示してるものと同一)
- MSM の 3-hourly analysis file (1日分で1ファイル)を, 必要な期間分だけ1つのGRIB-2ファイルに再アーカイブ(つなげる). ついでに GrADS ctl & idx も作成.
- スクリプト冒頭の source にて, 自分用関数(See also シェルスクリプトメモ(hysk) > 自分専用コマンド・関数)を読み込んでる. 詳しくは chk_dir_file & get_dateinfoを参照.
- 時間に関するループについては, スクリプト雛型 > dateコマンドを使った時間に関する繰り返し作業 を参照.
NCEP CFSR 6-hourly の再アーカイブ
CISL RDA ds093.0より取得した, NCEP CFSv1 6-hourly (ファイル名の例: pgbhnl.gdas.1979010100.grb2) を,月別・要素別のGRIB-2形式ファイルに再編集するスクリプト. 37-level & 6-hourly のデータを1ヶ月分,1ファイルにまとめている (ファイルサイズ: 300 - 800 MB; 要素によりサイズが大きく異なる).
- 要素: HGT (ジオポテンシャル高度), UGRD (東西風), VGRD (南北風), TMP (気温), SPFH (比湿), VVEL (鉛直p速度), STRM (流線関数), VPOT (速度ポテンシャル).
- period = 1979-01-01 to 2011-03-31. 2011-04-01 以後は,アーカイブファイルの命名規則が変更されているので, 入力ファイル名の代入部分を改変せねばならない.
- script path: ~/NCEP/CFSR/util/re_archive_CFSR_var_month.sh
- Input: ${prefix}.${yyyymmddhh}.grb2 (ex. pgbhnl.gdas.2009101500.grb2)
- Output: ${data_src}_${var}_${yyyymm}.grb2 (ex. CFSR_HGT_200910.grb2)
wgrib2 & GRIB-2 関連リンク
- WMO International codes:
- GRIB1, GRIB2 に関するドキュメントあり.
- 同ページ内にリンクあり: Guide to FM92 GRIB edition 2 (Nov2007); Introduction to GRIB Edition 1 and GRIB Edition 2
- ここに書くべき話題ではないが,GRIBなどデータ形式のドキュメントだけでなく,観測データに関するコードテーブルも. 有人地上気象官署における現在天気のコード表(code table 4680)など. 黄砂研究でよく使われる現在天気区分の定義が書かれてある. See also Manual on Codes Vol. I.1 Part A -Alphanumeric Codes (WMO-No.306)
- wgrib2 本家サイト
- g2ctl
- GRIB-2形式で配布されているデータ:
更新履歴
| Date | Changes |
|---|---|
| 2016-02-28 | 更新履歴の追加,CFS 関連の情報追加, リンク切れの修正など. |
| 2010-01-20 | 初稿作成. |