━━━━━━━━━━━━━━━━━━━━━━━━
BUFR4フォーマットの解読方法
━━━━━━━━━━━━━━━━━━━━━━━━

気象業務支援センターから提供されている流域雨量指数のデータは、bufr4というフォーマットで書かれています。
このフォーマットの情報がほとんどなく苦労したので、 解読するための手順を備忘録がわりにメモしておきます。(2015/8現在)

0.私のサーバー環境

・Linux Redhut 64bit

1.libECBUFRを入手

まず、libECBUFRというbufrフォーマットの解読ツールをインストールします。
本家(https://launchpad.net/libecbufr)のダウンロードサイトはこちら
私は使い方が良く分からなかったので、toyoda-eizi.netさんのここからlibecbufr_0.8.5.tar.gzをダウンロードしました。

2.libECBUFRをインストール

tar.gzファイルを展開し、libecbufr ディレクトリに入ります。

./reconf
./configure
make(管理者である必要がある)
make install(管理者である必要がある)

とタイプしてインストールします。自動的に/usr/bin/bufr_decoderがインストールされました。

3.まだ読めないことの確認

export BUFR_TABLES=/usr/share/libecbufr (bashの場合)
setenv BUFR_TABLES /usr/share/libecbufr (cshの場合)
bufr_decoder -inbufr Z__C_RJTD_xxxxxxxxxxx_bufr4.bin(ファイル名)

とタイプしてみましょう。途中で止まって読めないはずです。
(私の場合、"Error: can't decode messages"というメッセージが出ました。)

4.さらなるテーブルと解読プログラムを入手

toyoda-eizi.netさんのここの一番下からtable_b_bufr table_d_bufr readdump.f90 を取ってくる。
(なぜ必要かはtoyoda-eizi.netさんのページを読んで下さい。)
各自のFortran環境に合わせてreaddump.f90をコンパイルしてください。
(例:gfortran readdump.f90 -o readdump)

5.いよいよ解読

入手したテーブルを以下のように指定して、再度デコードを行います。

bufr_decoder -inbufr Z__C_RJTD_xxxxxxxxxxx_bufr4.bin(ファイル名)
-ltableb ./table_b_bufr -ltabled ./table_d_bufr -dump -output dump.txt

echo dump.txt |./readdump >dump.csv

readdumpを使うと、出力結果がCSVファイルで整形されて出てきます。
出力結果(ANALファイルの場合)は以下の順番に並んでいます。(一列目の数字が、内容を示している。)
この数字の意味は、配信資料に関する技術情報(気象編)第302号に書いてあります。

列数 時間の特定(16:解析) 年 月 日 時 分 河川番号 緯度 経度 流域雨量指数
2869 8021 4001 4002 4003 4004 4005 1210 5001 6001 13209

Link