氣象資料二進制通用表示格式[1](英語:Binary Universal Form for the Representation of meteorological data,縮寫:「BUFR」,又稱「二進制通用數據表示格式」[2]、「二進制通用氣象數據表示格式」[3])是由世界氣象組織所維護的二進制文件檔案格式,最新版本為BUFR Edition 4,而BUFR Edition 3則仍可繼續被使用。此格式於1988年被創造,目的是取代世界氣象組織舊有的數十種資料設定識別碼,其中包含代表地面綜觀報的SYNOP、探空觀測的TEMP及浮標觀測報的BUOY[4]。BUFR的主要設計目的是以可攜、緊湊及通用為基準,用以表達任何類型的資料,或特定時間、空間及任何關聯的元資料。在世界氣象組織的術語中,BUFR是屬於表格驅動碼格式資料,資料的元素是透過表格來訂定,而這些表格與資料是分開進行儲存與維護。
BUFR是一種複雜的資料格式,使用起來會較為困難[5],並且存在弱點[6],而BUFR的格式參照「不一致」的資料會引起格式錯誤[7][8][9]。
格式說明
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 指南[10]》)
- 元素描述碼(F=0):顧名思義,用以傳遞標準要素及相關元資料。
- 複製描述碼(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報文中傳遞多個地點的觀測結果。