ERA5 Wave HRES native grid exact coordinates

I would like to obtain the exact coordinates of the ERA5 wave HRES native grid and unfortunately I cannot get a hold of them.

ERA5 documentation states a resolution of 0.36 degrees for the ERA wave HRES, in a reduced latitude/longitude grid - however I cannot see to find a reduced Gaussian grid providing this exact spacing. 

In the FAQ: Frequently Asked Questions, under the Q. How do I know the grid from from the 'T' number? question, there is the below list of reduced Gaussian grids and their equivalent spacing between grid nodes :

From the list above there is no grid providing an exact 0.36 degree spacing. The closest value is 0.351deg and that would correspond to the N256 grid.

Is the ERA5 HRES wave grid using the N256 reduced Gaussian grid? If not, what grid is it exactly using? A custom one?

For the atmospheric HRES ERA5 values is quite clear the N320 is used...

Thanks in advance!


 sorry it might be a bit confusing. As stated ERA5 HRES native grid is on a 0.36 degrees reduced latitude/longitude grid.

i.e. reduced latitude/longitude grid

NOT a reduced Gaussian grid   (the coupled wave model does not share the same grid with the atmosphere)

So what is the difference:

A Gaussian grid has its latitudes set by 'the T-number'

It is then reduced, by specifying the number of grid points for each latitude in order to limit the convergence in actual distance near the poles.

A reduced latitude/longitude grid on the other hand, has its latitudes evenly spaced (0.36 degrees in the case of ERA5 HRES),

and it is reduced in a similar fashion as the Gaussian grid so that the number of points per latitude is set so that the actual distance between grid points

is kept roughly constant, equal to the distance spacing between latitudes (0.36 degrees → 40 km).

For the actual position of the model grid points, one will need to get from the grib headers, the number of points per latitude N(j), j=1,Ny

where Ny is the number of latitudes in the grid. For each latitude j, the spacing in degrees is then 360/N(j), with the first point starting at 0, wrapping around the latitude, with the last point at 360 - 360/N(j)

SO in short, the resolution of the native grid for ERA5 HRES is ~ 40km

NOTE: this is for the native grid. Most users will only access the default data from the CDS which have already been pre-interpolated onto a REGULAR latitude-longitude grid of 0.5x0.5 degree (i.e. grid point equally spaced)

To get the native grid data, one needs to fetch the data from the mars tape archive which is not usually recommended but feasible (Please as the CDS help desk). Also note that the in-house converter grib to netcdf does NOT work with native grid wave data and so it is then best to request the data to be interpolated on a 0.36x0.36 regular lat/lon grid before conversion from grib to netcdf.

Hi Jean,

Thank you for your comprehensive reply, it's much appreciated.

I'm interested in locating the native grid and already got the data from the MARS archived data tape  in grib format - now figuring out how to extract the data using Eccodes on Windows following the steps in here.

Best regards,


Hi Guillermo,

if this helps, I have attached a fortran code that used eccodes

check the following line for how the get the grid points



Hi Jean and thank you again for your reply, much appreciated.

I already have the native ERA5 wave grid in a grib file downloaded from the MARS archive, so the data is there. I just cannot seem to extract the locations inside the GRIB file. I'm used to handling the interpolated grib/nc files from the cds api with python/matlab with no issues. However this task is significantly harder to crack ... I've trying to extract the data for the last week without success.

I know its a long shot but, could you please share an easily readable file (e.g. .txt) with the native ERA5 HRES wave grid locations?

For other non-scientist like me who struggle with this data handling and are curious about where these values originate from, it'd be great if the CDS had a file in the ERA5 product page with the native grids. Something like this for each ERA5 data set (waves, atmospheric surface, levels..) and resolution (HRES, EDA...)  in here so people could directly see everything in one page. What do you think?


Hi Guillermo,

this is to be handled by my CDS colleagues.

Why do need to exact grid point location

Are you really sure that you want to handle the native grid. We usually recommend to handle the data interpolated on a regular lat-lon grid. From mars, the closest lat-lon grid would be 0.36x0.36  (add grid=0.36/0.36, in the mars request)

and then the data would be evenly spaced, starting from the northern most latitude (90 if you have not specified a sub area in the mars request), at 0 longitude (all this is specified in the grid headers) and unrolling eastwards by step of 0.36

(i.e. 0,90; 0.36,90;...) until you reach the point just before it wraps around to the 0 meridian (90, 360-0.36), then in goes to the next latitude below (90-0.36) and so on

Again, I am not in the data support team. I can answer question on the wave modelling aspect, but for specific question on how to handle the data, please request help from the CDS support team

ECMWF support simple grib tool (Ask the CDS team, or search for GRIB tools). the following will dump all the longitudes and latitudes of grib file my_data:

grib_dump -d -p distinctLongitudes,distinctLatitudes  my_data

Not super useful, but it all depends what you want to do. Ask my colleagues


Hi Jean and thanks again for your reply.

The reason for extracting the native grid is that when retrieving ERA5 HRES values from the CDS API interpolated at 0.25deg, some onshore locations closeby the coastline (<40km I presume)  show wave height values e.g. see below blue dots representing locations with 0.25 deg spacing.

My understanding is that these onshore locations show wave values because they're interpolated from the surrounding on and offshore grid nodes. I think having the native wave grid with land-sea mask values in it would help explaining why these onshore points have wave values in them... This does make sense to me, but maybe I'm wrong ?

I has been decided that the HRES wave data on the CDS would be pre-interpolated on a 0.5x0.5 grid. Requesting CDS data on a finer grid does not give you more information and produce artefact like the one you are showing.

I understand using the native grid, a compromise for easier use is to go to mars and request the data on a 0.36x0.36 because it limits the impact of interpolation because the native grid already has all its latitude spaced by 0.36  degree (This is why the CDS data should have been pre-interpolated on a 0.36x0.36 grid rather than 0.5x0.5...)

I will produce a map that shows the grid point locations

For you area of interest the grid points locations are as shown

The native grid points might be slightly over land because they are meant to represent the wave condidtion over an area of 40x40 km and near coastlines the centre of that area might be over land

Do you intend to extract values at specific grid points?

If so, use the native grid and use a tool such as grib_ls


grib_ls -l 53.0,1.0,1 data_no_interpolation

will extract the closest model value to target point 53N, 1E

Otherwise, to plot maps and etc, just use the mars data interpolated to the 0.36x0.26

I have already extracted data globally through the CDS, which is as you say pre-interpolated to 0.5 deg. I retrieved the data at every 0.25 deg, so then the points from which the data is interpolated from are already at 0.5 deg resolution, not the native grid..... 

Now I understand it would make sense to get the native grid if I downloaded the data directly from the archived data tape, which has not been the case. my "starting point" was already at 0.5 deg.

To explain the wave values on onshore locations then the sea-land mask layer is my best option?

Thanks again for the support and the nice looking map ! (smile)

Ideally, one should only use the 0.5 deg data if based on the CDS product. The problem with wave data is that there isn't a land/sea mask field, it is implicit in the data, but the interpolation software is very poor and does not really respect the native grid implicit land/sea mask. You can try the land/sea mask from the atmospheric model as it might help you removing interpolated wave points on land.