解析雨量 (GRIB2形式)読み出しメモ (2013.9)

2013年9月頃、気象庁(というか国土交通省)解析雨量のデータ (2008-2013) を 読み出して処理した。 環境は、Ubuntu + gfortran

通常、気象業務支援センターから購入したディスクについている、 SAMPLE_C の中の grib2_dec を使ってデコードし、その値(整数値)を、 GRIB2のヘッダ情報の第5節

 --
 	      17	データ代表値の尺度因子(E),現解析雨量の場合は1【注7】
 	16+2×m~
 	     17+2×m	レベルmに対応するデータ代表値 R(m),m=1~M,
 			   レベル0は欠測値,単位はmm【注7】
を見て、値に変換する。私も以前こうした覚えがある。(当時はFreeBSDだった)

しかし、今回、セグメンテーションエラーが起こって、最後まで実行できず、当然 データのデコードが行えない事態が発生した。そこで、NOAA から wgrib2 を取ってきた。 ダウンロードサイト
で、実際これで、bin データに変換(wgrib2 -no_header データファイル -bin 出力ファイル ) すると、

になってしまう。(以前の変換結果と比較して確認した)
注: 77mm 以上で 1mm 引くではすまなくなります。( アクト・ウェザーの真中さん、ご指摘ありがとう )
なかなか、そんなに大きな雨量はみれないので、確認できていないが、 実はここから変換式が変わるからです。

つまり、

    if(level<2) then
     data=0
    else if(level==2) then
     data=0.4
    else if(level<80) then
     data=level-2
    else if(level<91) then
     data=80+5*(level-80)
    else if(level<98) then
     data=130+10*(level-90)
    else
     data=255
    end if
というように変換されているのです。(2015.6 追記)

そこで、もう1段データ変換のフィルターを噛ませて処理した。
2015年3月19日以前の記述では、77mm 以上でおかしくなるそうです。( アクト・ウェザーの真中さん、ご指摘ありがとう )
同日、変換式を考慮して、1レベル値がずれているとして処理するようフィルター ソフトfindval_mod_v2.f90 を修正しました。
蛇足だが、run length 圧縮をかけてあるこのデータを単純な bin 形式に変換すると かなりデータが大きくなるので、1ファイルずつ変換して必要情報を処理するスクリプトを作ることがおすすめ。また、時刻がUTCなので、JSTで処理するには、9時間ずらす必要がある。

そんなこんなで、以下の2つのスクリプトと関連ソフトで処理した。 日本時間(JST)でデータファイルからシンボリックリンクするスクリプト その中で、使われている generator.f90 と z2jst2.f90 日本時間なファイル名になったGRIB2形式の解析雨量データを ベタ書きのバイナリデータ (bin) に変換して、値を修正し、その中から、 必要な地点のデータを取り出す (findval_mod) スクリプト。 (緯度経度も計算している) 使用時には、各行に、地点名 経度 緯度を記入した"JALPS_Place_tbl.txt" を使用する。
注: findval_mod_v2.f90 の 77mm 以上での動作は未確認です。

メモのページへ サンプルプログラムのページへ