氣象資料二進制通用表示格式

氣象資料二進制通用表示格式（，縮寫：「BUFR」，又稱「二進制通用數據表示格式」、「二進制通用氣象數據表示格式」）是由世界氣象組織所維護的二進制文件檔案格式，最新版本為BUFR Edition 4，而BUFR Edition 3則仍可繼續被使用。此格式於1988年被創造，目的是取代世界氣象組織舊有的數十種資料設定識別碼，其中包含代表地面綜觀報的SYNOP、探空觀測的TEMP及浮標觀測報的BUOY。BUFR的主要設計目的是以可攜、緊湊及通用為基準，用以表達任何類型的資料，或特定時間、空間及任何關聯的元数据。在世界氣象組織的術語中，BUFR是屬於表格驅動碼格式資料，資料的元素是透過表格來訂定，而這些表格與資料是分開進行保存與維護。

BUFR是一種複雜的資料格式，使用起來會較為困難，並且存在弱點，而BUFR的格式引用「不一致」的資料會引起格式錯誤。

格式說明
BUFR的資料格式分為六個部分，其編碼自0至5。
第0、1部份及第5部份為靜態元数据，主要用於報文的標示。
第2部分為可選用資料；若使用，則為創建者在本地端使用，呈現其所想呈現的資料。
第3部分包含一系列的描述碼，用以定義BUFR的格式及內容。
第4部分則是位元流，用以包含第3部分所定義的核心資料及元資料。
描述碼的複製與使用，會使得第3部分變得複雜而重要。

模板
第3部分的資料包含一個簡短的標題，後面則是由第4部分所匹配的描述碼序列進行對應。第3部分的描述碼序列可以被理解為BUFR的模板。模板包含匹配位元流中所嵌入的資料結構所需的訊息。他應以類似演算法的方式逐步解析。在給定一組BUFR的報文情況下，第4部分的值可能會因報文而異，但若第3部分所定義的模板保持不變，那麼其排序與結構是可被預測的。可以設計模板來滿足特定的氣象產品（例如氣象觀測）的需求，如此模板及可用以規範BUFR的內容與結構。世界氣象組織已經發布了許多地表與探空觀測資料的無損壓縮格式模板。

描述碼
所有的描述碼是16位元，具備F-X-Y結構，其中F指2個最高優先位元，X指中間6個位元，Y則為8個最低有效位元。F的值(0至3)將決定描述碼的類型。（更多使用方式請參考世界氣象組織《WMO BUFR 指南》）

元素描述碼（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報文中傳遞多個地點的觀測結果。

參考來源

外部連結
The official BUFR manual, tables, and other operational WMO code forms 
A series of introductory PowerPoint presentations 
WMO table-driven code forms guides  
BUFR in a nutshell  
 
A third-party tutorial on creating BUFR templates

線上解碼器
CCD 免費線上解碼與商業函式庫 
ECMWF BUFR/CREX格式解碼器

軟體函式庫
ECMWF提供BUFRDC函式庫 及新版 ecCodes函式庫 —Magics 及Metview透過這些函式庫處理視覺化BUFR資料
NCEP library 
libECBUFR Environment Canada library 
NCAR wmobufr library  — 基於JAVA函式庫的XML表達式
fortran  and c-based  ECMWF函式庫的Python封裝檔
wreport  實現BUFR和CREX編碼和解碼的C++函式庫自由軟體
trollbufr 一個FOSS純Python BUFR讀寫器
csv2bufr — 將CSV數據轉換為WMO BUFR格式的Python封裝檔

文件格式