...
ECMWF makes available a GRIB decoding library (GRIB-API) for the benefit of the WMO community. GRIB-API can be freely downloaded from here and the documentation can be found here. The GRIB-API provides a simplified access to GRIB2 headers through a set of virtual keys documented here
...
Code Block |
---|
> module load grib_api/1.17.0 > load grib_api 1.17.0 Library (GRIB_API_MODE, GRIB_API_VERSION, GRIB_API_INCLUDE, GRIB_API_LIB, GRIB_API_INCLUDE_DIR, GRIB_API_LIB_DIR, EC_FFLAGS, EC_CFLAGS, EC_CXXFLAGS, EC_FLDFLAGS, EC_CLDFLAGS, EC_CXXLDFLAGS) > # example with one data value ranges warning and one encoding error > tigge_check -u -w -v *.grib2 > warning: an.enda.tcw.sfc.0.fp.grib2, field 1 [total_column_water_sfc]: total_column_water_sfc maximum value 31.5638 is not in [50,150] => [31.5638,150] > fc.oper.2t.sfc.2.grib2 , field 1 [temperature_hl]: invalid height level 3 |
GRIB2 encoding details
The complete WMO compliant GRIB2 definitions of all UERRA parameters are linked here.
...
Section 1 | |||||
---|---|---|---|---|---|
Octets | Key name | Value | Description | ||
6-7 | centre | 78 | COSMO products (code Offenbach edzw) | ||
84 | Meteo-France products (code Toulouse lfpw ) | ||||
82 | HARMONIE products (code Sweden eswi) | ||||
74 | MO products (code UK Meteorological Office Exeter egrr) | ||||
10 | tablesVersion | 17 | latest WMO table with some new definitions for UERRA | ||
20 | productionStatusOfProcessedData | 8 | operational UERRA products | ||
9 | test UERRA products | ||||
21 | typeOfProcessedData | 0 | Analysis products | ||
1 | Forecast products |
Deterministic system (both analysis and forecast products)
Section 4 | |||||
---|---|---|---|---|---|
Octets | Key name | Value | Description | ||
8-9 | productDefinitionTemplateNumber | 0 | Analysis and Forecast products (instantaneous) (Analysis or forecast at a horizontal level or in a horizontal layer at a point in time (grib2/tables/17/4.0.table)) | ||
8 | Analysis and Forecast products (statistically processed = accumulated/min/max values) (Average, accumulation, extreme values or other statistically processed values at a horizontal level or in a horizontal layer in a continuous or non-continuous time interval (grib2/tables/17/4.0.table)) |
Ensemble DA system (both analysis and forecast products)
Section 4 | |||||
---|---|---|---|---|---|
Octets | Key name | Value | Description | ||
8-9 | productDefinitionTemplateNumber | 1
| Analysis and Forecast products (instantaneous) (Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer at a point in time (grib2/tables/17/4.0.table)) | ||
11 | Analysis and Forecast products (statistically processed = accumulated/min/max values) (Individual ensemble forecast, control and perturbed, at a horizontal level or in a horizontal layer, in a continuous or non-continuous time interval (grib2/tables/17/4.0.table)) | ||||
35 | type of ensemble forecast | 255 | missing | ||
36 | perturbation number | 2 | Example for 2nd eps member of ensemble with 4 members (0/1/2/3) | ||
37 | number of forecasts in ensemble | 4 |
Examples of UERRA compliant GRIB2 files
...
deterministic | ensemble DA | |||||
AN | FC | AN | FC | |||
Accumulations | N/A | N/A | ||||
Instantaneous on surface level | ||||||
Instantaneous on model level (Specific humidity on model level 1) | ||||||
Maximum since previous post-processing (Surface air maximum temperature since previous post-processing) | N/A | grib* | N/A | |||
Minimum since previous post-processing (Surface air minimum temperature since previous post-processing) | N/A | N/A | ||||
Parameter on soil level (Soil temperature on soil level 1) |
*disregard data values in this grib (some step/level values were created artificially as real data has not been available yet)
...
Time ( instantaneous ) | |||||
---|---|---|---|---|---|
Start of forecast ( section 1 ) | |||||
Octets | values | Meaning of values | Grib_api values | ||
12 | Significance of Reference Time | 1 | Start of forecast | ||
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 | |
15 | Month | 01 | month of start of forecast | ||
16 | Day | 01 | day of start of forecast | ||
17 | Hour | 00 | hour of start of forecast | ||
section 4 e.g. template 4.1 | |||||
18 | Indicator of unit of time range | 1 | Hour | ||
19-22 | Forecast time | 48 | Forecast step | stepType=instant, step=48 |
...
Time ( accumulated ) | ||||||
---|---|---|---|---|---|---|
Start of forecast ( section 1 ) | ||||||
Octets | Values | Meaning of values | Grib_api key | |||
12 | Significance of Reference Time | 1 | Start of forecast | |||
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 | ||
15 | Month | 01 | month of start of forecast | |||
16 | Day | 01 | day of start of forecast | |||
17 | Hour | 00 | hour of start of forecast | |||
Accumulation ( section 4 e.g. template 4.11 ) | ||||||
18 | Indicator of unit of time range | 1 | Hour | |||
19-22 | Forecast time | 0 | Accumulation starts at step=0 | startStep=0 | ||
38-39 | year of end of overall time interval | 2012 |
End of accumulated period, 20120103 06Z |
endStep=54
| ||
40 | month of end of overall time interval | 01 | ||||
41 | day of end of overall time interval | 03 | ||||
42 | hour of end of overall time interval | 06 | ||||
45 | number of time ranges | 1 | Only one type of time statistics used (accumulation) | |||
46-49 | total number of data values missing in statistical process | 0 | ||||
50 | Statistical process used to calculate the processed field from the field at each time increment during the time range | 1 | Accumulation | stepType=accum | ||
51 | Type of time increment between successive fields used in the statistical processing | 2 | Successive times processed have same start time of forecast, forecast time is incremented | |||
52 | Indicator of unit of time for time range over which statistical processing is done | 1 | Hour | |||
53-56 | Length of the time range over which statistical processing is done, in units defined by the previous octet | 54 |
| |||
57 | Indicator of unit of time for the increment between the successive fields used | 255 | Missing | |||
58-61 | Time increment between successive fields, in units defined by the previous octet | 0 | 0 |
...
Maximum since the previous post-processing
...
Time (Maximum over the last 6 hours ) | ||||||
---|---|---|---|---|---|---|
Start of forecast ( section 1 ) | ||||||
Octets | values | Meaning of values | Grib_api keys | |||
12 | Significance of Reference Time | 1 | Start of forecast | |||
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 | ||
15 | Month | 01 | month of start of forecast | |||
16 | Day | 01 | day of start of forecast | |||
17 | Hour | 00 | hour of start of forecast | |||
Maximum ( section 4 e.g. Template 4.11) | ||||||
18 | Indicator of unit of time range | 1 | Hour | |||
19-22 | Forecast time | 42 | Step at the beginning of the 6-hourly interval | startStep=42 | ||
38-39 | year of end of overall time interval | 2012 |
End of maximum period |
endStep=48 | ||
40 | month of end of overall time interval | 01 | ||||
41 | day of end of overall time interval | 03 | ||||
42 | hour of end of overall time interval | 00 | ||||
45 | number of time ranges | 1 | Only one time statistics applied (maximum) | |||
46-49 | total number of data values missing in statistical process | 0 | ||||
50 | Statistical process used to calculate the processed field from the field at each time increment during the time range | 2 | Maximum | stepType=max | ||
51 | Type of time increment between successive fields used in the statistical processing | 2 | Successive times processed have same start time of forecast, forecast time is incremented | |||
52 | Indicator of unit of time for time range over which statistical processing is done | 1 | Hour | indicatorOfUnitForTimeRange=1 | ||
53-56 | Length of the time range over which statistical processing is done, in units defined by the previous octet | 6 | 6-hourly maximum | lengthOfTimeRange=6 | ||
57 | Indicator of unit of time for the increment between the successive fields used | 1 | Hour | indicatorOfUnitForTimeIncrement=1 | ||
58-61 | Time increment between successive fields, in units defined by the previous octet | 0 | Maximum computed continuously in the 6 hourly interval | timeIncrement=0 |
...
Minimum since the previous post-processing
...
Time (Minimum over the last 6 hours ) | ||||||
---|---|---|---|---|---|---|
Start of re-forecast ( section 1 ) | ||||||
Octets | Fixed | Meaning of values | Grib_api keys | |||
12 | Significance of Reference Time | 1 | Start of forecast | |||
13-14 | Year (four digits) | 2012 | year of start of forecast | dataDate=20120101 dataTime=0 | ||
15 | Month | 01 | month of start of forecast | |||
16 | Day | 01 | day of start of forecast | |||
17 | Hour | 00 | hour of start of forecast | |||
Minimum ( section 4 e.g. Template 4.11) | ||||||
18 | Indicator of unit of time range | 1 | Hour | |||
19-22 | Forecast time | 42 | Step at the beginning of the 6-hourly interval | startStep=42 | ||
45-46 | year of end of overall time interval | 2012 | End of minimum period |
endStep=48 | ||
47 | month of end of overall time interval | 01 | ||||
48 | day of end of overall time interval | 03 | ||||
49 | hour of end of overall time interval | 00 | ||||
52 | number of time ranges | 1 | Only one time statistics applied (minimum) | |||
53-56 | total number of data values missing in statistical process | 0 | ||||
57 | Statistical process used to calculate the processed field from the field at each time increment during the time range | 3 | Minimum | stepType=min | ||
58 | Type of time increment between successive fields used in the statistical processing | 2 | Successive times processed have same start time of forecast, forecast time is incremented | |||
59 | Indicator of unit of time for time range over which statistical processing is done | 1 | Hour | indicatorOfUnitForTimeRange=1 | ||
60-63 | Length of the time range over which statistical processing is done, in units defined by the previous octet | 6 | 6-hourly minimum | lengthOfTimeRange=6 | ||
64 | Indicator of unit of time for the increment between the successive fields used | 1 | Hour | indicatorOfUnitForTimeIncrement=1 | ||
65-68 | Time increment between successive fields, in units defined by the previous octet | 0 | Minimum computed continuously in the 6 hourly interval | timeIncrement=0 |
...