What version of Tables B and D do I have? Where can I get the latest?

Created by Yves Pelletier on
Keywords:
bufr tables encoding decoding
Last updated by:
Yves Pelletier on

The latest version of the Tables available for libECBUFR is found in the Tables directory of the trunk code tree, at http://bazaar.launchpad.net/~libecbufr-dev/libecbufr/trunk/files/head:/Tables/ . You can update the Tables in your installation by replacing the existing table_b_bufr and table_d_bufr files with the new ones.

To find out which version you currently have in your own installation, you need to look into the first few lines of file /usr/share/libecbufr/table_b_bufr. The first portion of the file is a changelog. Look for the topmost instance of the string "Update to Version N" (probably on line 6 of the file). N will be the current version.

Here is some background information I recommend you read, to get a better understanding of the meaning of the version number. Tables B and D are always updated at the same time and share the same version number. This is more formally referred to as the "Master Table version number".

The BUFR encoding and decoding process makes reference to Tables B and D (as defined in the BUFR regulations). Broadly speaking, these tables contain "constant" metadata about the BUFR descriptors and so help keep the messages compact by avoiding having to transmit repetitive business metadata with each bulletin. Just as importantly, Tables B and D can be updated and augmented without requiring changes to BUFR software. This is one of the defining features of the WMO Table-Driven Code Forms, and of BUFR in particular. This is useful because it makes it possible to increase the business content of the Tables and create new data products without requiring software modifications. This was not the case with the Traditional Alphanumeric Code Forms.

With this approach, for the recipient of a BUFR message to be able to decode it, she needs her version of the Tables B and D to contain the same descriptor definitions as the sender's version. The Table version number used for encoding is to be specified in Section 1 of the BUFR message, and ideally, this number would be read by the decoder and same version of the Tables would be used at decoding. If both instances of the tables are error-free, this would ensure correct decoding of the message. In practice, this has been a difficult point of implementation for BUFR. Far too frequently, the version number stated in Section one is unreliable.

In historical practice, every effort has been made to keep successive versions of the Tables backward-compatible. This makes it so that a message encoded with descriptors valid in, say, Table version 15 will remain unchanged and decodable through subsequent versions. For instance, a message encoded with version 15 of the Tables will be decodable if you operate with version 23 of the Tables. However, if your decoder only has version 15 of the Tables, there is no guarantee you will be able to decode a message encoded with version 23.

There was (only) one episode of a breakdown of backward compatibility. For a few element descriptors, there was a break of compatibility between versions 13 and 14 of the Tables. Unfortunately, this can affect BUFR SYNOP messages and we strongly recommend always encoding SYNOP data with version 14 or later of the Tables.

The latest version of the Tables is published by the WMO in May and November each year. There is a bit of a time lag as we (the MSC), transcribe the information and test the new Tables in our systems, and then publish it in the libECBUFR source code tree.