General requirements
Encoding format
- WMO GRIB2 data format.
Missing values
- Bitmaps shall be used to indicate missing values.
Grid and resolution
- Data should be provided on a 1.25/1.25 regular lat-lon grid (288x145 grid points, including poles).
- First grid point is 90N 0E. The data will be archived first from west to east (OE to 358.75), and then from north to south (90N to 90S).
- The related GRIB 2 key called scanning mode must be equal to 0 then
Scanning mode 0
- i scans positively (west to east)
- i points are consecutive
- j scans negatively (north to south)
- i scans positively (west to east)
- Grids are defined in GRIB2 using an accuracy of 1/1000000 (one millionth) of a degree.
GRIB2 encoding
All data must be encoded following the required rules described below to achieve fully compliant LC-GCR format from all centres.
Encoding software
ECMWF makes available a GRIB decoding library (ecCodes) for the benefit of the WMO community. The ecCodes can be freely downloaded from here and the documentation can be found here.
For more general information about GRIB2 format please refer to WMO Manual on Codes.
Encoding details
Data compression
The CCSDS compression should be used. More information can be found in What is CCSDS/AEC packing and how I can set it - ecCodes GRIB FAQ
General encoding
Specific details which should be encoded in GRIB 2 sections.
Data encoding GRIB2 sections example below is valid for:
- centre ECMWF
- Time-mean total precipitation rate (paramId 235055)
- monthly mean of daily means for January 1991
| Section 1 | ||||
|---|---|---|---|---|
| Octets | Key name | Value | Description | Comments |
| 6-7 | centre | 98 | European Centre for Medium-Range Weather Forecasts (common/c-11.table) | WMO Centre's code (table below) |
| 8-9 | subCentre | 0 | WMO Sub-Centre's code if needed (table below) | |
| 10 | tablesVersion | 36 | Version implemented on 17 November 2025 (grib2/tables/1.0.table) | The latest WMO table*1 |
| 12 | significanceOfReferenceTime | 0 | Analysis (grib2/tables/36/1.2.table) | |
| 1 | Start of forecast (grib2/tables/36/1.2.table) | |||
| 20 | productionStatusOfProcessedData | 14 | Lead Centre for Global Climate Reanalyses (LC-GCR) (grib2/tables/36/1.3.table) *2 | Use for production data |
| 15 | Lead Centre for Global Climate Reanalyses test (LC-GCR) (grib2/tables/36/1.3.table) *2 | Use for test data | ||
| 21 | typeOfProcessedData | 0 | Analysis products (grib2/tables/36/1.4.table) | |
| 1 | Forecast products (grib2/tables/36/1.4.table) | |||
*1 New WMO tables version 36 and higher containing new LC-GCR keys
*2 New codes for the LC-GCR (part of GRIB 2 tables version 35) approved by WMO in January 2025 (Manual on Codes (WMO-No. 306), Volume I.2, GRIB code table 1.3)
| Section 3 | ||||
|---|---|---|---|---|
| Octets | Key name | Value | Description | Comments |
| 13-14 | gridDefinitionTemplateNumber | 0 | Latitude/longitude (Also called equidistant cylindrical, or Plate Carree) (grib2/tables/36/3.1.table) | |
| 15 | shapeOfTheEarth | 6 | Earth assumed spherical with radius of 6 371 229.0 m (grib2/tables/36/3.2.table) | |
| 31-34 | Ni | 288 | ||
| 35-38 | Nj | 145 | ||
| 39-42 | basicAngleOfTheInitialProductionDomain | 0 | ||
| 43-46 | subdivisionsOfBasicAngle | MISSING | ||
| 47-50 | latitudeOfFirstGridPoint | 90000000 | ||
| 51-54 | longitudeOfFirstGridPoint | 0 | ||
| 55 | resolutionAndComponentFlags | 48 | 00110000 (grib2/tables/36/3.3.table) | |
| 56-59 | latitudeOfLastGridPoint | -90000000 | ||
| 60-63 | longitudeOfLastGridPoint | 358750000 | ||
| 64-67 | iDirectionIncrement | 1250000 | ||
| 68-71 | jDirectionIncrement | 1250000 | ||
| 72 | scanningMode | 0 | 00110000 (grib2/tables/36/3.3.table) | See also paragraph above Grid and resolution |
| Section 4 | |||
|---|---|---|---|
| Octets | Key name | Value | Description |
| 8-9 | productDefinitionTemplateNumber | 8 | 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/36/4.0.table) |
| Section 5 | ||||
|---|---|---|---|---|
| Octets | Key name | Value | Description | Comments |
| 6-7 | NV | 0 | ||
| 8-9 | productDefinitionTemplateNumber | 8 | 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/36/4.0.table) | |
| 10 | parameterCategory | 1 | Moisture (grib2/tables/36/4.1.0.table) | parameter specification valid for paramId 235055 |
| 11 | parameterNumber | 52 | Total precipitation rate (kg m-2 s-1) (grib2/tables/36/4.2.0.1.table) | |
| 12 | typeOfGeneratingProcess | 0 | Analysis (grib2/tables/36/4.3.table) | |
| 2 | Forecast (grib2/tables/36/4.3.table) | |||
| 13 | backgroundProcess | 255 | see the paragraph Model version below | |
| 14 | generatingProcessIdentifier | 146 | see the paragraph Model version below | |
| 15-16 | hoursAfterDataCutoff | MISSING | ||
| 17 | minutesAfterDataCutoff | MISSING | ||
| 18 | indicatorOfUnitForForecastTime | 1 | Hour (grib2/tables/36/4.4.table) | |
| 19-22 | forecastTime | 0 | ||
| 23 | typeOfFirstFixedSurface | 1 | Ground or water surface (-) (grib2/tables/36/4.5.table) | |
| 24 | scaleFactorOfFirstFixedSurface | MISSING | ||
| 25-28 | scaledValueOfFirstFixedSurface | MISSING | ||
| 29 | typeOfSecondFixedSurface | 255 | Missing (grib2/tables/36/4.5.table) | |
| 30 | scaleFactorOfSecondFixedSurface | MISSING | ||
| 31-34 | scaledValueOfSecondFixedSurface | MISSING | ||
| 35-36 | yearOfEndOfOverallTimeInterval | 1991 | data specification valid for monthly mean od daily means for January 1991 | |
| 37 | monthOfEndOfOverallTimeInterval | 2 | ||
| 38 | dayOfEndOfOverallTimeInterval | 1 | ||
| 39 | hourOfEndOfOverallTimeInterval | 0 | ||
| 40 | minuteOfEndOfOverallTimeInterval | 0 | ||
| 41 | secondOfEndOfOverallTimeInterval | 0 | ||
| 42 | numberOfTimeRanges | 2 | ||
| 43-46 | numberOfMissingInStatisticalProcess | 0 | ||
| 47 | typeOfStatisticalProcessing | 0 | Average (grib2/tables/36/4.10.table) | Monthly mean specification (in hours) |
| 48 | typeOfTimeIncrement | 1 | Successive times processed have same forecast time, start time of forecast is incremented (grib2/tables/36/4.11.table) | |
| 49 | indicatorOfUnitForTimeRange | 1 | Hour (grib2/tables/36/4.4.table) | |
| 50-53 | lengthOfTimeRange | 744 | ||
| 54 | indicatorOfUnitForTimeIncrement | 1 | Hour (grib2/tables/36/4.4.table) | |
| 55-58 | timeIncrement | 1 | ||
| 59 | typeOfStatisticalProcessing | 0 | Average (grib2/tables/36/4.10.table) | Daily mean specification (in hours) |
| 60 | typeOfTimeIncrement | 1 | Successive times processed have same forecast time, start time of forecast is incremented (grib2/tables/36/4.11.table) | |
| 61 | indicatorOfUnitForTimeRange | 1 | Hour (grib2/tables/36/4.4.table) | |
| 62-65 | lengthOfTimeRange | 24 | ||
| 66 | indicatorOfUnitForTimeIncrement | 1 | Hour (grib2/tables/36/4.4.table) | |
| 67-70 | timeIncrement | 1 | All available time steps are used for tp mean rate computation (i.e. hourly data in case of ERA5) as per Parameters | |
Model version
Each model is identified in ecCodes for given centre and model version from the following keys:
- centre (WMO centre code)
- backgroundProcess (uniquely defined for each model, see table below)
- generatingProcessIdentifier (uniquely defined for each model version, see table below)
For example model=CRA-40 is encoded using:
- centre=38
- backgroundProcess=1
- generatingProcessIdentifier=1
Model version encoding
| Organisation | Acronym | Centre acronym*1 | WMO Centre code | backgroundProcess*1 | generatingProcessIdentifier*1 | model*2 | remark | |
|---|---|---|---|---|---|---|---|---|
| 1 | China Meteorological Administration, China | CMA | babj | 38 | 1 | 1 | CRA-40 | |
| 2 | European Centre for Medium-Range Weather, UK | ECMWF | ecmf | 98 | 255 | 146 | ERA5 | model version CY41R2 for ERA5 |
| 3 | Japan Meteorological Agency, Japan | JMA | rjtd | 34 | 2 | 1 | JRA-3Q | |
| 4 | National Aeronautics and Space Administration | NASA | nasa | 173 | 3 | 1 | MERRA-2 | |
| 5 | National Centers for Environmental Prediction | NCEP | kwbc | 7 | 4 | 1 | CORe |
Remarks:
*1 in ECMWF's ecCodes package
*2 LC-GCR model names are correctly recognised in ecCodes v.2.48.0 and higher
Examples of LC-GCR GRIB2 files
- Parameters
- examples based on the ERA5/ECMWF data
- meta data of the encoded fields are fully compliant to the required standard
- grib-check v.0.0.9 or higher must be used to verify LC-GCR GRIB2 encoding
- meta data of the encoded fields are fully compliant to the required standard
parameter | Sample file | GRIB metadata dump |
|---|---|---|
Time-mean 2 metre temperature | ecmf.19910101.an.sfc.grib2 | ecCodes output |
Time-mean mean sea level pressure | ||
| Time-mean total precipitation rate | ecmf.19910101.fc.sfc.grib2 | ecCodes output |
| Time-mean total precipitation |
Remarks
- ecCodes Version 2.48.0 (and higher) should be used to display correctly LC-GCR related meta data
Example of encoding script (TBU)
The package includes conversion script, input data (ERA5, GRIB1) and outputs after conversion to LC-GCR GRIB2.
# Example of ERA5 GRIB1 monthly average fields conversion to LC-GCR compliant GRIB2 # requirements: # eccodes 2.48.2 or higher recommended (2.48.0 minimum) # grib-check version 0.0.9 or higher (https://github.com/ecmwf/grib-check) # run: # ksh convert.ksh 2>&1 | tee convert.out # remarks: # grib_filter rules must be modified for given model! # search for xxx marking such places
$ tar tvf encoding_example.tar drwxr-x--- marm/ma 0 2026-09-07 13:01 encoding_example/ drwxr-x--- marm/ma 0 2026-09-07 12:44 encoding_example/log/ -rw-r----- marm/ma 748 2026-09-07 12:37 encoding_example/log/grib_check.ecmf.19910101.fc.sfc.out -rw-r----- marm/ma 748 2026-09-07 12:37 encoding_example/log/grib_check.ecmf.19910101.an.sfc.out -rw-r----- marm/ma 18036 2026-09-07 12:52 encoding_example/log/ecmf.19910101.an.sfc.dump -rw-r----- marm/ma 18095 2026-09-07 12:52 encoding_example/log/ecmf.19910101.fc.sfc.dump drwxr-x--- marm/ma 0 2026-09-04 14:02 encoding_example/data/ -rw-r----- marm/ma 501552 2026-09-04 09:44 encoding_example/data/lcgcr.199101.grib1 drwxr-x--- marm/ma 0 2026-09-07 12:06 encoding_example/out/ -rw-r----- marm/ma 101185 2026-09-07 12:52 encoding_example/out/ecmf.19910101.fc.sfc.grib2 -rw-r----- marm/ma 102828 2026-09-07 12:52 encoding_example/out/ecmf.19910101.an.sfc.grib2 -rw-r----- marm/ma 3867 2026-09-07 12:52 encoding_example/convert.out -rw-r----- marm/ma 5383 2026-09-07 12:52 encoding_example/convert.ksh