BUFR Table Handling in CDM
Standard table mapping
A standard table is a BUFR parameter table that is automatically used by the CDM. A standard table map is an association of a standard table with a center/subcenter/version id. The CDM internally loads one table map located in bufr.jar at /resources/bufrTables/local/tablelookup.csv_. It is a csv (comma separated value) format:
#
# BUFR TableLookup
#
# ids = Identification Section. bytes refer to editions 3 or 4. -1 means dont match
#
# name = for display only
# center = originating/generating centre (ed3=ids bytes 6, ed4=ids byte 5,6)
# subcenter = originating/generating sub-centre (ed3=ids byte 5, ed4=ids byte 7,8)
# master = Version number of master tables used (ed3=ids byte 11, ed4=ids byte 14)
# local = Version number of local tables used to augment the master table (ed3=ids byte 12, ed4=ids byte 15)
# cat = data category (ed3=ids byte 9, ed4=ids byte 11)
# tableB,tableD = file name or resource name
# format = ecmwf, mel_bufr, mel_tabs, ncep, ncep_nm, opera, ukmet, wmo_csv, wmo_xml
# mode = "wmoOnly", "wmoLocal", "localWmo" (default "localWmo")
#
# name,center,subcenter,master,local,cat,tableB,tableBformat,tableD,tableDformat, mode
WMO.07, 0, 0, 7, 0, -1, resource:/resources/bufrTables/cypher/B_d00v07.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v07.htm, cypher
WMO.08, 0, 0, 8, 0, -1, resource:/resources/bufrTables/cypher/B_d00v08.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v08.htm, cypher
WMO.09, 0, 0, 9, 0, -1, resource:/resources/bufrTables/cypher/B_d00v09.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v09.htm, cypher
WMO.10, 0, 0, 10, 0, -1, resource:/resources/bufrTables/cypher/B_d00v10.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v10.htm, cypher
WMO.11, 0, 0, 11, 0, -1, resource:/resources/bufrTables/cypher/B_d00v11.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v11.htm, cypher
WMO.12, 0, 0, 12, 0, -1, resource:/resources/bufrTables/cypher/B_d00v12.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v12.htm, cypher
WMO.13, 0, 0, 13, 0, -1, resource:/resources/bufrTables/cypher/B_d00v13.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v13.htm, cypher
WMO.14, 0, 0, 14, 0, -1, resource:/resources/bufrTables/wmo/BCTableB_BUFR14_2_0_CREX_6_2_0.xml, wmo_xml,resource:/resources/bufrTables/wmo/BTableD_BUFR14_2_0_CREX_6_2_0.xml, wmo_xml
WMO.15, 0, 0, 15, 0, -1, resource:/resources/bufrTables/wmo/BUFR_15_1_1_TableB_E.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_15_1_1_TableD_E.xml, wmo_xml
WMO.16, 0, 0, 16, 0, -1, resource:/resources/bufrTables/wmo/BUFRCREX_16_0_0_TableB_E.xml, wmo_xml, resource:/resources/bufrTables/wmo/BUFR_16_0_0_TableD_E.xml, wmo_xml
WMO.any,0, 0, -1, 0, -1, resource:/resources/bufrTables/cypher/B_d00v13.htm, cypher, resource:/resources/bufrTables/cypher/D_d00v13.htm, cypher
#
# NCEP
# see http://www.emc.ncep.noaa.gov/mmb/data_processing/bufrtab_tablea.htm#1
# also http://www.emc.ncep.noaa.gov/mmb/data_processing/bufrtab_tabled.htm
# also http://www.nco.ncep.noaa.gov/pmb/codes/nwprod/parm/
NCEP.ETA, 7, 3, -1, -1, 241, resource:/resources/bufrTables/local/ncep/ncep.bufrtab.ETACLS1, ncep_nm, resource:/resources/bufrTables/local/ncep/ncep.bufrtab.ETACLS1, ncep_nm
NCEP.NGM, 7, 3, -1, -1, 242, resource:/resources/bufrTables/local/ncep/ncep.bufrtab.NGMCLS1, ncep_nm, resource:/resources/bufrTables/local/ncep/ncep.bufrtab.NGMCLS1, ncep_nm
NCEP.GFS, 7, 3, -1, -1, 243, resource:/resources/bufrTables/local/ncep/ncep.bufrtab.GFSCLS1, ncep_nm, resource:/resources/bufrTables/local/ncep/ncep.bufrtab.GFSCLS1, ncep_nm
NCEP.12, 7, 8, 12, -1, -1, resource:/resources/bufrTables/local/ncep/ncepAwc.v12.override.csv, wmo_csv, , ,
NCEP.14, 7, -1, 14, -1, -1, resource:/resources/bufrTables/local/ncep/ncep.B07.14.local.csv, wmo_csv, resource:/resources/bufrTables/local/ncep/ncep.B4L-007-013-D.diff, mel_bufr
NCEP.any, 7, -1, -1, -1, -1, resource:/resources/bufrTables/local/ncep/ncep.B07.local.csv, wmo_csv, resource:/resources/bufrTables/local/ncep/ncep.B4L-007-013-D.diff, mel_bufr
...
- Each row contains the center id, subcenter id, master table version, and local table version. These are use to look for a match on the BUFR record. The first exact match is used.
- If there is no exact match, then a wildcard match is used, where a “-1” matches any id. The first wildcard match is used.
- When a match is made, the given path to a BUFR table B and a BUFR table D_ is used. Various table formats are available, given by the format.
- NCEP uses a matching scheme that may depend on the data category.
- The mode has the following meaning:
- wmoOnly: wmo entries (x < 48 && y < 192) can only be taken from wmo table (center = 0)
- wmoLocal: if wmo entries not found in wmo table, look in local table
- localWmo: look in local table first, then wmo table
Adding a user-defined standard table map
A user can programmatically add another lookup table by calling ucar.nc2.iosp.bufr.tables.BufrTables.addLookupFile(). It must be in the same csv format as above. It will be searched first.
This can also be done through the runtime configuration XML file.