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)

  • 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 nameValueDescriptionComments
6-7centre98European Centre for Medium-Range Weather Forecasts (common/c-11.table)WMO Centre's code (table below)
8-9subCentre0WMO Sub-Centre's code if needed (table below)
10tablesVersion36Version implemented on 17 November 2025 (grib2/tables/1.0.table)The latest WMO table*1
12significanceOfReferenceTime0Analysis (grib2/tables/36/1.2.table)


1Start of forecast (grib2/tables/36/1.2.table)
20productionStatusOfProcessedData14

Lead Centre for Global Climate Reanalyses (LC-GCR)  (grib2/tables/36/1.3.table) *2

Use for production data



15Lead Centre for Global Climate Reanalyses test (LC-GCR)  (grib2/tables/36/1.3.table) *2Use for test data
21typeOfProcessedData0Analysis products (grib2/tables/36/1.4.table)


1Forecast 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
OctetsKey name

Value

Description

Comments
13-14gridDefinitionTemplateNumber0Latitude/longitude (Also called equidistant cylindrical, or Plate Carree)  (grib2/tables/36/3.1.table)
15shapeOfTheEarth6Earth assumed spherical with radius of 6 371 229.0 m (grib2/tables/36/3.2.table)
31-34Ni288

35-38Nj145

39-42basicAngleOfTheInitialProductionDomain0

43-46subdivisionsOfBasicAngleMISSING

47-50latitudeOfFirstGridPoint90000000

51-54longitudeOfFirstGridPoint0

55resolutionAndComponentFlags4800110000 (grib2/tables/36/3.3.table)
56-59latitudeOfLastGridPoint-90000000

60-63longitudeOfLastGridPoint358750000

64-67iDirectionIncrement1250000

68-71jDirectionIncrement1250000

72scanningMode000110000 (grib2/tables/36/3.3.table)See also paragraph above Grid and resolution
Section 4
OctetsKey name

Value

Description

8-9productDefinitionTemplateNumber

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
OctetsKey name

Value

Description

Comments
6-7NV0

8-9productDefinitionTemplateNumber8Average, 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)
10parameterCategory1Moisture (grib2/tables/36/4.1.0.table)parameter specification valid for paramId 235055
11parameterNumber52Total precipitation rate (kg m-2 s-1)  (grib2/tables/36/4.2.0.1.table)
12typeOfGeneratingProcess0Analysis (grib2/tables/36/4.3.table)


2Forecast (grib2/tables/36/4.3.table)
13backgroundProcess255
see the paragraph Model version below
14generatingProcessIdentifier146
see the paragraph Model version below
15-16hoursAfterDataCutoffMISSING

17minutesAfterDataCutoffMISSING

18indicatorOfUnitForForecastTime1Hour (grib2/tables/36/4.4.table)
19-22forecastTime0

23typeOfFirstFixedSurface1Ground or water surface (-)  (grib2/tables/36/4.5.table)
24scaleFactorOfFirstFixedSurfaceMISSING

25-28scaledValueOfFirstFixedSurfaceMISSING

29typeOfSecondFixedSurface255Missing (grib2/tables/36/4.5.table)
30scaleFactorOfSecondFixedSurfaceMISSING

31-34scaledValueOfSecondFixedSurfaceMISSING

35-36yearOfEndOfOverallTimeInterval1991
data specification valid for monthly mean od daily means for January 1991
37monthOfEndOfOverallTimeInterval2

38dayOfEndOfOverallTimeInterval1

39hourOfEndOfOverallTimeInterval0

40minuteOfEndOfOverallTimeInterval0

41secondOfEndOfOverallTimeInterval0

42numberOfTimeRanges2

43-46numberOfMissingInStatisticalProcess0

47typeOfStatisticalProcessing0Average (grib2/tables/36/4.10.table) Monthly mean specification (in hours)
48typeOfTimeIncrement1Successive times processed have same forecast time, start time of forecast is incremented (grib2/tables/36/4.11.table)
49indicatorOfUnitForTimeRange1Hour (grib2/tables/36/4.4.table)
50-53lengthOfTimeRange744

54indicatorOfUnitForTimeIncrement1Hour (grib2/tables/36/4.4.table)
55-58timeIncrement1

59typeOfStatisticalProcessing0Average (grib2/tables/36/4.10.table)Daily mean specification (in hours)
60typeOfTimeIncrement1Successive times processed have same forecast time, start time of forecast is incremented (grib2/tables/36/4.11.table)
61indicatorOfUnitForTimeRange1Hour (grib2/tables/36/4.4.table)
62-65lengthOfTimeRange24

66indicatorOfUnitForTimeIncrement1Hour (grib2/tables/36/4.4.table)
67-70timeIncrement1
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


OrganisationAcronymCentre acronym*1WMO Centre codebackgroundProcess*1generatingProcessIdentifier*1model*2remark
1

China Meteorological Administration, China

CMAbabj3811CRA-40
2

European Centre for  Medium-Range Weather, UK

ECMWFecmf98255146ERA5model version CY41R2 for ERA5
3Japan Meteorological Agency, JapanJMArjtd3421JRA-3Q
4National Aeronautics and Space AdministrationNASAnasa17331MERRA-2
5National Centers for Environmental PredictionNCEPkwbc741CORe

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

parameter

Sample file


GRIB metadata dump

Time-mean 2 metre temperature

ecmf.19910101.an.sfc.grib2ecCodes output

Time-mean mean sea level pressure

Time-mean total precipitation rateecmf.19910101.fc.sfc.grib2ecCodes output
Time-mean total precipitation

Remarks

Example of encoding script (TBU)

The package includes conversion script, input data (ERA5, GRIB1) and outputs after conversion to LC-GCR GRIB2.


convert.ksh info
# 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