気象データ表現のためのバイナリユニバーサルフォーム(BUFR )は、世界気象機関(WMO)が管理するバイナリ データ形式です。最新バージョンはBUFR Edition 4です。BUFR Edition 3も運用に使用できる最新版と考えられています。BUFRは、SYNOP(地表観測)、TEMP(高層気象観測)、CLIMAT (月間気候データ)など、 WMOの数十の文字ベースの位置駆動型気象コードを置き換えることを目的として、1988年に作成されました。BUFRは、移植性、コンパクト性、汎用性を考慮して設計されました。あらゆる種類のデータを、その特定の空間的/時間的コンテキストやその他の関連メタデータとともに表現できます。WMO用語では、BUFRはテーブル駆動型コード形式のカテゴリに属し、データ要素の意味は、メッセージ自体とは別に保持および管理されている一連のテーブルを参照して決定されます。
BUFRは複雑なフォーマットであり、使いこなすのが難しい場合がある[1]。また、いくつかの弱点もある[2]。BUFRフォーマットの導入により、データの「不一致」や多くのフォーマットエラーが発生した[3]。 [4 ] [5]
フォーマットの説明
BUFR メッセージは、0 から 5 までの番号が付けられた 6 つのセクションで構成されます。
- セクション 0、1、および 5 には、主にメッセージ識別用の静的メタデータが含まれています。
- セクション 2 はオプションです。使用する場合は、メッセージの作成者が希望する任意の形式で任意のデータを含めることができます (これはローカルでの使用にのみ推奨されます)。
- セクション 3 には、BUFR データ製品の形式と内容を定義する、いわゆる記述子のシーケンスが含まれています。
- セクション 4 は、セクション 3 で説明されているメッセージのコア データとメタデータ値を含むビット ストリームです。
第3節に含まれる製品記述は、複製記述子や演算子記述子を用いることで、より複雑かつ高度なものとなります。(各種記述子の概要については以下を参照してください。詳細については、BUFRに関するWMOガイドを参照してください。)
テンプレート
セクション 3 には、短いヘッダーと、それに続くセクション 4 のビット ストリームの内容に一致する一連の記述子が含まれています。セクション 3 の記述子のシーケンスは、 BUFR メッセージのテンプレートとして理解できます。テンプレートには、対応するビット ストリームに埋め込まれたデータ値の構造を記述するために必要な情報が含まれています。これは、ステップごとにアルゴリズムのような方法で解釈されます。一連の BUFR メッセージがある場合、セクション 4 に含まれる値はメッセージごとに異なる場合がありますが、セクション 3 で提供されるテンプレートが変更されない限り、その順序と構造は予測可能です。テンプレートは、特定のデータ製品 (たとえば、気象観測) の要件を満たすように設計できます。このようなテンプレートを使用して、BUFR データ製品の内容と構造を標準化できます。WMO は、地表および高層大気の観測データ用の BUFR テンプレートを多数公開しています。
記述子
すべての記述子は16ビット幅で、FXY構造を持ちます。Fは最上位2ビット(左端)、Xは中央6ビット、Yは最下位8ビット(右端)を表します。F値(0~3)は記述子の種類を決定します。
- 要素記述子(F=0): 名前が示すように、これらの記述子は要素データと関連メタデータを伝達するために使用されます。X値
は記述子のクラス(水平座標パラメータ、温度パラメータなど)を識別します。Y値は、そのクラス内での記述子の番号です。クラス1から9までの要素記述子は、矛盾またはキャンセルされない限り、出現した瞬間からBUFRテンプレートの残りの部分全体にわたって有効であるという特別な特性を持っています。実際には、クラス1から9までの記述子は、BUFRメッセージのコアデータに適用される空間、時間、その他のメタデータに使用されます。すべての要素記述子は、BUFR仕様の「表B」と呼ばれるセクションで定義されています。表Bに新しい要素記述子を追加しても、BUFRソフトウェア仕様の変更は必要ありません。表Bにおける要素記述子の定義には、要素記述子の番号、短いテキスト定義、デコードパラメータ(ビット幅、スケール係数、バイアス)、およびタイプ(数値、文字列、コード表など)が含まれます。 - レプリケーション記述子(F=1): 指定された数の記述子を制御的に繰り返し実行することを可能にする特別な記述子です。これはBUFRテンプレートにループのような構造を導入する非常に強力な操作です。X値はレプリケーションに含める後続の記述子の数を指定します。Y値はレプリケーションの実行回数を示します。Y =0の場合、レプリケーションは「遅延レプリケーション」と呼ばれ、レプリケーション回数は特別な要素記述子の値から取得されます。
- 演算子記述子(F=2): これらの記述子は、データの特性を変更したり、元のデータに加えて追加データを作成・操作したりするための特別な操作を伝達します。X値は演算子を識別し、Y値はその適用を制御するために使用されます。これらの記述子は、BUFR仕様の「表C」と呼ばれるセクションで定義されています。表Cに新しい演算子記述子を追加すると、 BUFRソフトウェア仕様の変更が必要となり、新しいBUFRエディション番号が付与されます。
- シーケンス記述子(F=3): 単一のシーケンス記述子は、レプリケーション記述子やテーブルB、C、Dエントリを含む他の記述子のシーケンスの別名です。これらの記述子は、BUFR仕様の「テーブルD」と呼ばれるセクションで定義されています。X値とY値の使用方法は、要素記述子の場合と同じです。
サブセット
セクション3のテンプレートで確立されたデータ構造は、単一のBUFRメッセージ内で複数回再利用される場合があります。そのような場合、セクション4にはいわゆるサブセットの連続が含まれます。例えば、サブセットを使用することで、複数の場所からの観測結果を単一のメッセージで伝達することができます。
参考文献
- ^ 「BUFR: 21世紀の気象コード (pdf)」。2018年2月15日時点のオリジナルよりアーカイブ。2018年2月14日閲覧。
- ^ 「BUFRとGRIBのアーカイブデータとしての適合性について」2013年1月10日。
- ^ Hand, E. (2016). 「気球データの陳腐化が迫る」 . Science . 352 (6283): 281– 282. Bibcode :2016Sci...352..281H. doi :10.1126/science.352.6283.281. PMID 27081049.
- ^ 「消えゆく地表データへの対応:BUFRへの移行とテキストSYNOPおよびブイレポートの廃止」2017年1月25日。
- ^ 「ECMWF - TAC2BUFR - ECMWF Confluence Wiki」(PDF) 。 2018年2月15日時点のオリジナル(PDF)からアーカイブ。 2018年2月14日閲覧。
外部リンク
- 公式BUFRマニュアル、表、およびその他の運用WMOコードフォーム
- 一連の入門用PowerPointプレゼンテーション
- WMO テーブル駆動型コードフォームガイド (BUFR マニュアルを拡張したものですが、マニュアルの二次資料として考えてください)
- BUFRの概要
- BUFR テンプレートの作成に関するサードパーティのチュートリアル (Environment Canada より)
オンラインBUFRバリデータ
- CCD 無料オンラインバリデーター&商用ライブラリ
- ECMWF BUFR/CREX フォーマット チェッカー
ソフトウェアライブラリ
- ECMWFはBUFRDCライブラリと新しいecCodesライブラリを提供しました(Wayback Machineに2022年1月22日アーカイブ) 。MagicsとMetviewはこれらを使用してBUFRデータを処理および視覚化しています。
- NCEPライブラリ
- libECBUFR カナダ環境省図書館
- NCAR wmobufr ライブラリ — Java ライブラリと XML 実装
- ECMWF ライブラリの Fortran および C ベースの Python ラッパー
- wreport Archived 2011-07-22 at the Wayback Machine BUFRとCREXのエンコードとデコードを実装したフリーソフトウェアC++ライブラリ
- trollbufr、FOSS の純粋な Python BUFR リーダーおよびライター
- csv2bufr — CSV データを WMO BUFR 形式に変換する Python パッケージ