ecCodes version 0.10.0 beta was released end of March 2015. Here is a summary of its most relevant features
- Is an extension of GRIB-API to decode more data formats
- Is provided under Apache 2.0 license
- GRIB-API version 1.13.0 is entirely contained in it and programs using GRIB-API can be linked with ecCodes library without any change on the user interface.
- ecCodes provides the same key/value decoding approach to GRIB, BUFR and GTS headers
- Fortran 90, python, C interfaces are provided similar to GRIB-API functions. The prefix of functions is changed from "grib_" to "codes_". The prefix "grib_" is still supported for backwards compatibility with GRIB-API.
- A set of command line tools are provided. GRIB-API grib_X tools are identical to the tools in GRIB-API version 1.13.0. New bufr_X and gts_X tools are provided and have similar options and behaviour as the grib_X.
- BUFR can be converted to JSON with bufr_dump.
- BUFR has a complex structure and some keys can be repeated at different levels of the tree. For this reason two new ways of accessing the keys is provided.
- Access by rank. The key “airTemperature” will give back the array of all the values corresponding to all the instances of the key in the tree. The key “airTemperature#2” will return only the values of the second instance in the tree.
- Access by condition. The key “backscatter” will return an array with all the backscatter values in the BUFR tree, while “/beamIdentifier=3/backscatter” will return the values of backscatter in the branch of the tree where the condition beamIdentifier=3 is satisfied. If the condition is satisfied by more than one branch, all the values for all the branches satisfying the condition are returned. As an example we can have in a temp message the need of getting the values of the temperature or humidity significant levels and this can be achieved by getting the values of the key “/verticalSoundingSignificance=4/dewpointTemperature”. This will return all the values of dewpointTemperature in the BUFR tree for which the verticalSoundingSignificance is 4.
- Attributes. All the keys in the BUFR data section are provided with the following attributes: units, code, scale, reference, width. The attributes are accessible as key name attributes like “airTemperature->units”
- Quality control and BUFR bitmap. Quality control values are coded in BUFR through a bitmap. ecCodes is providing access to quality control as attributes of the key. Example “airTemperature->percentConfidence”, “airTemperature->percentConfidence->units”. This is also clearly visible in the structure of the JSON output provided by bur_dump.
All new features are provided as a new key syntax and are available in all provided languages and the command line tools using the get functions.
For more details and to try ecCodes: https://confluence.ecmwf.int/display/ECC/ecCodes+Home