Users can define their own local BUFR tables to adapt ecCodes to their own needs e.g. to use a local descriptor.
Please note:
According to the WMO, the use of local tables in messages intended for non-local or international exchange is strongly discouraged.
The local BUFR tables are stored in the following definitions directories:
definitions/bufr/tables/[masterTableNumber]/local/[localTablesVersionNumber]/[bufrHeaderCentre]/[bufrHeaderSubCentre]
e.g. definitions/bufr/tables/0/local/101/98/0/
(98 is for ecmwf)
The environment variable ECCODES_DEFINITION_PATH can be set to locate local BUFR tables. This is similar to how the PATH environment variable works in Unix, it is a list of directories separated by colons (":"):
export ECCODES_DEFINITION_PATH=/path/to/local/defs:/path/to/default/defs
The library searches for each required definition file first in /path/to/local/defs
and then in /path/to/default/defs
. If the file is found in /path/to/local/defs
then it used by the decoding engine.
In order to find out where the default definitions are stored, use the tool codes_info. E.g.
% codes_info ecCodes Version 2.2.0 Default definition files path is used: /usr/local/apps/eccodes/2.2.0/GNU/5.3.0/share/eccodes/definitions Definition files path can be changed setting ECCODES_DEFINITION_PATH environment variable Default SAMPLES path is used: /usr/local/apps/eccodes/2.2.0/GNU/5.3.0/share/eccodes/samples SAMPLES path can be changed setting ECCODES_SAMPLES_PATH environment variable
On this platform, ecCodes is installed in /usr/local/apps/eccodes/2.2.0/GNU/5.3.0
and the definitions are in /usr/local/apps/eccodes/2.2.0/GNU/5.3.0/share/eccodes/definitions
.