Analysis-Ready, Cloud Optimized ERA5

September 10, 2025 · View on GitHub

Recipes for reproducing Analysis-Ready & Cloud Optimized (ARCO) ERA5 datasets.

IntroductionOverviewGet Started with Colab NotebooksAnalysis Ready DataRaw Cloud Optimized DataProject roadmapHow to reproduceFAQsHow to cite this workLicense

Introduction

Our goal is to make a global history of the climate highly accessible in the cloud. To that end, we present a curated copy of the ERA5 corpus in Google Cloud Public Datasets.

What is ERA5?

ERA5 is the fifth generation of ECMWF's Atmospheric Reanalysis. It spans atmospheric, land, and ocean variables. ERA5 is an hourly dataset with global coverage at 30km resolution (~0.28° x 0.28°), ranging from 1979 to the present. The total ERA5 dataset is about 5 petabytes in size.

Check out ECMWF's documentation on ERA5 for more.

What is a reanalysis?

A reanalysis is the "most complete picture currently possible of past weather and climate." Reanalyses are created from assimilation of a wide range of data sources via numerical weather prediction (NWP) models.

Read ECMWF's introduction to reanalysis for more.

So far, we have ingested meteorologically valuable variables for the land and atmosphere. From this, we have produced a cloud-optimized version of ERA5, in which we have converted grib data to Zarr with no other modifications. In addition, we have created "analysis-ready" versions on regular lat-lon grids, oriented towards common research & ML workflows.

This two-pronged approach for the data serves different user needs. Some researchers need full control over the interpolation of data for their analysis. Most will want a batteries-included dataset, where standard pre-processing and chunk optimization is already applied. In general, we ensure that every step in this pipeline is open and reproducible, to provide transparency in the provenance of all data.

Overview

LocationTypeDescription
$BUCKET/ar/Analysis ReadyAn ML-ready, unified (surface & atmospheric) version of the data in Zarr.
$BUCKET/co/Cloud OptimizedA port of gaussian-gridded ERA5 data to Zarr.
$BUCKET/raw/Raw DataAll raw grib & NetCDF data.
  • The gcp-public-data-arco-era5 bucket is stored in the us-central1 (Iowa) Google Cloud region.
  • The stable version of ERA5 is updated on a monthly cadence (on roughly the 9th of each month) with a 3 month delay. The preliminary version of ERA5, known as ERA5T is available with approximately 1 week delay (where 5-6 days delay are due to processing at ECWMF).
  • The most recent data available can be found by examining the metadata associated with each Zarr store. The metadata encompasses three essential attributes: valid_time_start, valid_time_stop (for ERA5), and last_updated. For ERA5T, use valid_time_stop_era5t instead. These attributes specify the start date, stop date, and most recent time of update for the dataset's data, respectively. Please note that both start and end times are inclusive, and all times are given in UTC.

Get Started with Colab Notebooks

Explore the ERA5 dataset interactively with these notebooks:

NotebookDescriptionOpen in Colab
Surface Reanalysis WalkthroughLearn how to work with surface-level ERA5 dataOpen In Colab
Model Levels WalkthroughExplore atmospheric model levels dataOpen In Colab

Analysis Ready Data

These datasets have been regridded to a uniform 0.25° equiangular horizontal resolution to facilitate downstream analyses, e.g., with WeatherBench2.

0.25° Pressure and Surface Level Data

This dataset contains most pressure-level fields and all surface-level field regridded to a uniform 0.25° resolution. It is a superset of the data used to train GraphCast and NeuralGCM.

import xarray

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3',
    chunks=None,
    storage_options=dict(token='anon'),
)
ar_full_37_1h = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))
  • Times: 00/to/23
  • Levels: 1/2/3/5/7/10/20/30/50/70/100/125/150/175/200/225/250/300/350/400/450/500/550/600/650/700/750/775/800/825/850/875/900/925/950/975/1000
  • Grid: equiangular lat-lon
  • Size: 2.05 PB
  • Chunking: {'time': 1, 'latitude': 721, 'longitude': 1440, 'level': 37}
  • Chunk size (per variable): 154 MB
Data summary table
nameshort nameunitsdocsconfig
100m_u_component_of_wind100um s**-1https://codes.ecmwf.int/grib/param-db/228246era5_sl_hourly.cfg
100m_v_component_of_wind100vm s**-1https://codes.ecmwf.int/grib/param-db/228247era5_sl_hourly.cfg
10m_u_component_of_neutral_windu10nm s**-1https://codes.ecmwf.int/grib/param-db/228131era5_sl_hourly.cfg
10m_u_component_of_wind10um s**-1https://codes.ecmwf.int/grib/param-db/165era5_sl_hourly.cfg
10m_v_component_of_neutral_windv10nm s**-1https://codes.ecmwf.int/grib/param-db/228132era5_sl_hourly.cfg
10m_v_component_of_wind10vm s**-1https://codes.ecmwf.int/grib/param-db/166era5_sl_hourly.cfg
10m_wind_gust_since_previous_post_processing10fgm s**-1https://codes.ecmwf.int/grib/param-db/49era5_sl_hourly.cfg
2m_dewpoint_temperature2dKhttps://codes.ecmwf.int/grib/param-db/168era5_sl_hourly.cfg
2m_temperature2tKhttps://codes.ecmwf.int/grib/param-db/167era5_sl_hourly.cfg
air_density_over_the_oceansrhoaokg m**-3https://codes.ecmwf.int/grib/param-db/140209era5_sl_hourly.cfg
angle_of_sub_gridscale_orographyanorradianshttps://codes.ecmwf.int/grib/param-db/162era5_sl_hourly.cfg
anisotropy_of_sub_gridscale_orographyisor~https://codes.ecmwf.int/grib/param-db/161era5_sl_hourly.cfg
benjamin_feir_indexbfidimensionlesshttps://codes.ecmwf.int/grib/param-db/140253era5_sl_hourly.cfg
boundary_layer_dissipationbldJ m**-2https://codes.ecmwf.int/grib/param-db/145era5_sl_hourly.cfg
boundary_layer_heightblhmhttps://codes.ecmwf.int/grib/param-db/159era5_sl_hourly.cfg
charnockchnk~https://codes.ecmwf.int/grib/param-db/148era5_sl_hourly.cfg
clear_sky_direct_solar_radiation_at_surfacecdirJ m**-2https://codes.ecmwf.int/grib/param-db/228022era5_sl_hourly.cfg
cloud_base_heightcbhmhttps://codes.ecmwf.int/grib/param-db/228023era5_sl_hourly.cfg
coefficient_of_drag_with_wavescdwwdimensionlesshttps://codes.ecmwf.int/grib/param-db/140233era5_sl_hourly.cfg
convective_available_potential_energycapeJ kg**-1https://codes.ecmwf.int/grib/param-db/59era5_sl_hourly.cfg
convective_inhibitioncinJ kg**-1https://codes.ecmwf.int/grib/param-db/228001era5_sl_hourly.cfg
convective_precipitationcpmhttps://codes.ecmwf.int/grib/param-db/228143era5_sl_hourly.cfg
convective_rain_ratecrrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/228218era5_sl_hourly.cfg
convective_snowfallcsfm of water equivalenthttps://codes.ecmwf.int/grib/param-db/239era5_sl_hourly.cfg
convective_snowfall_rate_water_equivalentcsfrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/228220era5_sl_hourly.cfg
downward_uv_radiation_at_the_surfaceuvbJ m**-2https://codes.ecmwf.int/grib/param-db/57era5_sl_hourly.cfg
duct_base_heightdctbmhttps://codes.ecmwf.int/grib/param-db/228017era5_sl_hourly.cfg
eastward_gravity_wave_surface_stresslgwsN m**-2 shttps://codes.ecmwf.int/grib/param-db/195era5_sl_hourly.cfg
eastward_turbulent_surface_stressewssN m**-2 shttps://codes.ecmwf.int/grib/param-db/180era5_sl_hourly.cfg
evaporationem of water equivalenthttps://codes.ecmwf.int/grib/param-db/182era5_sl_hourly.cfg
forecast_albedofal(0 - 1)https://codes.ecmwf.int/grib/param-db/243era5_sl_hourly.cfg
forecast_logarithm_of_surface_roughness_for_heatflsr~https://codes.ecmwf.int/grib/param-db/245era5_sl_hourly.cfg
forecast_surface_roughnessfsrmhttps://codes.ecmwf.int/grib/param-db/244era5_sl_hourly.cfg
fraction_of_cloud_covercc(0 - 1)https://codes.ecmwf.int/grib/param-db/248era5_pl_hourly.cfg
free_convective_velocity_over_the_oceanswstarm s**-1https://codes.ecmwf.int/grib/param-db/140208era5_sl_hourly.cfg
friction_velocityzustm s**-1https://codes.ecmwf.int/grib/param-db/228003era5_sl_hourly.cfg
geopotential_at_surfacezm2 s-2https://codes.ecmwf.int/grib/param-db/129era5_sl_hourly.cfg
gravity_wave_dissipationgwdJ m**-2https://codes.ecmwf.int/grib/param-db/197era5_sl_hourly.cfg
high_cloud_coverhcc(0 - 1)https://codes.ecmwf.int/grib/param-db/3075era5_sl_hourly.cfg
high_vegetation_covercvh(0 - 1)https://codes.ecmwf.int/grib/param-db/28era5_sl_hourly.cfg
ice_temperature_layer_1istl1Khttps://codes.ecmwf.int/grib/param-db/35era5_sl_hourly.cfg
ice_temperature_layer_2istl2Khttps://codes.ecmwf.int/grib/param-db/36era5_sl_hourly.cfg
ice_temperature_layer_3istl3Khttps://codes.ecmwf.int/grib/param-db/37era5_sl_hourly.cfg
ice_temperature_layer_4istl4Khttps://codes.ecmwf.int/grib/param-db/38era5_sl_hourly.cfg
instantaneous_10m_wind_gusti10fgm s**-1https://codes.ecmwf.int/grib/param-db/228029era5_sl_hourly.cfg
instantaneous_eastward_turbulent_surface_stressiewsN m**-2https://codes.ecmwf.int/grib/param-db/229era5_sl_hourly.cfg
instantaneous_large_scale_surface_precipitation_fractionilspf(0 - 1)https://codes.ecmwf.int/grib/param-db/228217era5_sl_hourly.cfg
instantaneous_moisture_fluxiekg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/232era5_sl_hourly.cfg
instantaneous_northward_turbulent_surface_stressinssN m**-2https://codes.ecmwf.int/grib/param-db/230era5_sl_hourly.cfg
instantaneous_surface_sensible_heat_fluxishfW m**-2https://codes.ecmwf.int/grib/param-db/231era5_sl_hourly.cfg
k_indexkxKhttps://codes.ecmwf.int/grib/param-db/260121era5_sl_hourly.cfg
lake_bottom_temperaturelbltKhttps://codes.ecmwf.int/grib/param-db/228010era5_sl_hourly.cfg
lake_covercl(0 - 1)https://codes.ecmwf.int/grib/param-db/26era5_sl_hourly.cfg
lake_depthdlmhttps://codes.ecmwf.int/grib/param-db/228007era5_sl_hourly.cfg
lake_ice_depthlicdmhttps://codes.ecmwf.int/grib/param-db/228014era5_sl_hourly.cfg
lake_ice_temperaturelictKhttps://codes.ecmwf.int/grib/param-db/228013era5_sl_hourly.cfg
lake_mix_layer_depthlmldmhttps://codes.ecmwf.int/grib/param-db/228009era5_sl_hourly.cfg
lake_mix_layer_temperaturelmltKhttps://codes.ecmwf.int/grib/param-db/228008era5_sl_hourly.cfg
lake_shape_factorlshfdimensionlesshttps://codes.ecmwf.int/grib/param-db/228012era5_sl_hourly.cfg
lake_total_layer_temperatureltltKhttps://codes.ecmwf.int/grib/param-db/228011era5_sl_hourly.cfg
land_sea_masklsm(0 - 1)https://codes.ecmwf.int/grib/param-db/172era5_sl_hourly.cfg
large_scale_precipitationlspmhttps://codes.ecmwf.int/grib/param-db/3062era5_sl_hourly.cfg
large_scale_precipitation_fractionlspfshttps://codes.ecmwf.int/grib/param-db/50era5_sl_hourly.cfg
large_scale_rain_ratelsrrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/228219era5_sl_hourly.cfg
large_scale_snowfalllsfm of water equivalenthttps://codes.ecmwf.int/grib/param-db/240era5_sl_hourly.cfg
large_scale_snowfall_rate_water_equivalentlssfrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/228221era5_sl_hourly.cfg
leaf_area_index_high_vegetationlai_hvm2 m-2https://codes.ecmwf.int/grib/param-db/67era5_sl_hourly.cfg
leaf_area_index_low_vegetationlai_lvm2 m-2https://codes.ecmwf.int/grib/param-db/66era5_sl_hourly.cfg
low_cloud_coverlcc(0 - 1)https://codes.ecmwf.int/grib/param-db/3073era5_sl_hourly.cfg
low_vegetation_covercvl(0 - 1)https://codes.ecmwf.int/grib/param-db/27era5_sl_hourly.cfg
maximum_2m_temperature_since_previous_post_processingmx2tKhttps://codes.ecmwf.int/grib/param-db/201era5_sl_hourly.cfg
maximum_individual_wave_heighthmaxmhttps://codes.ecmwf.int/grib/param-db/140218era5_sl_hourly.cfg
maximum_total_precipitation_rate_since_previous_post_processingmxtprkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/228226era5_sl_hourly.cfg
mean_boundary_layer_dissipationavg_ibldW m**-2https://codes.ecmwf.int/grib/param-db/235032era5_sl_hourly.cfg
mean_convective_precipitation_rateavg_cprkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235030era5_sl_hourly.cfg
mean_convective_snowfall_rateavg_csfrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235056era5_sl_hourly.cfg
mean_direction_of_total_swellmdtsdegreeshttps://codes.ecmwf.int/grib/param-db/140238era5_sl_hourly.cfg
mean_direction_of_wind_wavesmdwwdegreeshttps://codes.ecmwf.int/grib/param-db/500072era5_sl_hourly.cfg
mean_eastward_gravity_wave_surface_stressavg_iegwssN m**-2https://codes.ecmwf.int/grib/param-db/235045era5_sl_hourly.cfg
mean_eastward_turbulent_surface_stressavg_iewsN m**-2https://codes.ecmwf.int/grib/param-db/235041era5_sl_hourly.cfg
mean_evaporation_rateeratem*s**-1https://codes.ecmwf.int/grib/param-db/172182era5_sl_hourly.cfg
mean_gravity_wave_dissipationavg_igwdW m**-2https://codes.ecmwf.int/grib/param-db/235047era5_sl_hourly.cfg
mean_large_scale_precipitation_fractionavg_ilspfProportionhttps://codes.ecmwf.int/grib/param-db/235026era5_sl_hourly.cfg
mean_large_scale_precipitation_rateavg_lspratekg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235029era5_sl_hourly.cfg
mean_large_scale_snowfall_rateavg_lssfrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235057era5_sl_hourly.cfg
mean_northward_gravity_wave_surface_stressavg_ingwssN m**-2https://codes.ecmwf.int/grib/param-db/235046era5_sl_hourly.cfg
mean_northward_turbulent_surface_stressavg_inssN m**-2https://codes.ecmwf.int/grib/param-db/235042era5_sl_hourly.cfg
mean_period_of_total_swellmptsshttps://codes.ecmwf.int/grib/param-db/140239era5_sl_hourly.cfg
mean_period_of_wind_wavesmpwwshttps://codes.ecmwf.int/grib/param-db/500074era5_sl_hourly.cfg
mean_potential_evaporation_rateavg_pevrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235070era5_sl_hourly.cfg
mean_runoff_rateavg_rorwekg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235048era5_sl_hourly.cfg
mean_sea_level_pressuremslPahttps://codes.ecmwf.int/grib/param-db/151era5_sl_hourly.cfg
mean_snow_evaporation_rateavg_esrwekg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235023era5_sl_hourly.cfg
mean_snowfall_rateavg_tsrwekg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235031era5_sl_hourly.cfg
mean_snowmelt_rateavg_smrkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235024era5_sl_hourly.cfg
mean_square_slope_of_wavesmsqsdimensionlesshttps://codes.ecmwf.int/grib/param-db/140244era5_sl_hourly.cfg
mean_sub_surface_runoff_rateavg_ssurfrorkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235021era5_sl_hourly.cfg
mean_surface_direct_short_wave_radiation_fluxavg_sdirswrfW m**-2https://codes.ecmwf.int/grib/param-db/235058era5_sl_hourly.cfg
mean_surface_direct_short_wave_radiation_flux_clear_skyavg_sdirswrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235059era5_sl_hourly.cfg
mean_surface_downward_long_wave_radiation_fluxavg_sdlwrfW m**-2https://codes.ecmwf.int/grib/param-db/235036era5_sl_hourly.cfg
mean_surface_downward_long_wave_radiation_flux_clear_skyavg_sdlwrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235069era5_sl_hourly.cfg
mean_surface_downward_short_wave_radiation_fluxavg_sdswrfW m**-2https://codes.ecmwf.int/grib/param-db/235035era5_sl_hourly.cfg
mean_surface_downward_short_wave_radiation_flux_clear_skyavg_sdswrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235068era5_sl_hourly.cfg
mean_surface_downward_uv_radiation_fluxavg_sduvrfW m**-2https://codes.ecmwf.int/grib/param-db/235027era5_sl_hourly.cfg
mean_surface_latent_heat_fluxavg_slhtfW m**-2https://codes.ecmwf.int/grib/param-db/235034era5_sl_hourly.cfg
mean_surface_net_long_wave_radiation_fluxavg_snlwrfW m**-2https://codes.ecmwf.int/grib/param-db/235038era5_sl_hourly.cfg
mean_surface_net_long_wave_radiation_flux_clear_skyavg_snlwrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235052era5_sl_hourly.cfg
mean_surface_net_short_wave_radiation_fluxavg_snswrfW m**-2https://codes.ecmwf.int/grib/param-db/235037era5_sl_hourly.cfg
mean_surface_net_short_wave_radiation_flux_clear_skyavg_snswrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235051era5_sl_hourly.cfg
mean_surface_runoff_rateavg_surfrorkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235020era5_sl_hourly.cfg
mean_surface_sensible_heat_fluxavg_ishfW m**-2https://codes.ecmwf.int/grib/param-db/235033era5_sl_hourly.cfg
mean_top_downward_short_wave_radiation_fluxavg_tdswrfW m**-2https://codes.ecmwf.int/grib/param-db/235053era5_sl_hourly.cfg
mean_top_net_long_wave_radiation_fluxavg_tnlwrfW m**-2https://codes.ecmwf.int/grib/param-db/235040era5_sl_hourly.cfg
mean_top_net_long_wave_radiation_flux_clear_skyavg_tnlwrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235050era5_sl_hourly.cfg
mean_top_net_short_wave_radiation_fluxavg_tnswrfW m**-2https://codes.ecmwf.int/grib/param-db/235039era5_sl_hourly.cfg
mean_top_net_short_wave_radiation_flux_clear_skyavg_tnswrfcsW m**-2https://codes.ecmwf.int/grib/param-db/235049era5_sl_hourly.cfg
mean_total_precipitation_rateavg_tpratekg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235055era5_sl_hourly.cfg
mean_vertical_gradient_of_refractivity_inside_trapping_layerdndzam**-1https://codes.ecmwf.int/grib/param-db/228016era5_sl_hourly.cfg
mean_vertically_integrated_moisture_divergenceavg_vimdfkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/235054era5_sl_hourly.cfg
mean_wave_directionmwdDegree truehttps://codes.ecmwf.int/grib/param-db/500185era5_sl_hourly.cfg
mean_wave_direction_of_first_swell_partitionmwd1degreeshttps://codes.ecmwf.int/grib/param-db/140122era5_sl_hourly.cfg
mean_wave_direction_of_second_swell_partitionmwd2degreeshttps://codes.ecmwf.int/grib/param-db/140125era5_sl_hourly.cfg
mean_wave_direction_of_third_swell_partitionmwd3degreeshttps://codes.ecmwf.int/grib/param-db/140128era5_sl_hourly.cfg
mean_wave_periodmwpshttps://codes.ecmwf.int/grib/param-db/140232era5_sl_hourly.cfg
mean_wave_period_based_on_first_momentmp1shttps://codes.ecmwf.int/grib/param-db/140220era5_sl_hourly.cfg
mean_wave_period_based_on_first_moment_for_swellp1psshttps://codes.ecmwf.int/grib/param-db/140226era5_sl_hourly.cfg
mean_wave_period_based_on_first_moment_for_wind_wavesp1wwshttps://codes.ecmwf.int/grib/param-db/140223era5_sl_hourly.cfg
mean_wave_period_based_on_second_moment_for_swellp2psshttps://codes.ecmwf.int/grib/param-db/140227era5_sl_hourly.cfg
mean_wave_period_based_on_second_moment_for_wind_wavesp2wwshttps://codes.ecmwf.int/grib/param-db/140224era5_sl_hourly.cfg
mean_wave_period_of_first_swell_partitionmwp1shttps://codes.ecmwf.int/grib/param-db/140123era5_sl_hourly.cfg
mean_wave_period_of_second_swell_partitionmwp2shttps://codes.ecmwf.int/grib/param-db/140126era5_sl_hourly.cfg
mean_wave_period_of_third_swell_partitionmwp3shttps://codes.ecmwf.int/grib/param-db/140129era5_sl_hourly.cfg
mean_zero_crossing_wave_periodmp2shttps://codes.ecmwf.int/grib/param-db/140221era5_sl_hourly.cfg
medium_cloud_covermcc(0 - 1)https://codes.ecmwf.int/grib/param-db/3074era5_sl_hourly.cfg
minimum_2m_temperature_since_previous_post_processingmn2tKhttps://codes.ecmwf.int/grib/param-db/202era5_sl_hourly.cfg
minimum_total_precipitation_rate_since_previous_post_processingmntprkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/228227era5_sl_hourly.cfg
minimum_vertical_gradient_of_refractivity_inside_trapping_layerdndznm**-1https://codes.ecmwf.int/grib/param-db/228015era5_sl_hourly.cfg
model_bathymetrywmbmhttps://codes.ecmwf.int/grib/param-db/140219era5_sl_hourly.cfg
near_ir_albedo_for_diffuse_radiationalnid(0 - 1)https://codes.ecmwf.int/grib/param-db/18era5_sl_hourly.cfg
near_ir_albedo_for_direct_radiationalnip(0 - 1)https://codes.ecmwf.int/grib/param-db/17era5_sl_hourly.cfg
normalized_energy_flux_into_oceanphiocdimensionlesshttps://codes.ecmwf.int/grib/param-db/140212era5_sl_hourly.cfg
normalized_energy_flux_into_wavesphiawdimensionlesshttps://codes.ecmwf.int/grib/param-db/140211era5_sl_hourly.cfg
normalized_stress_into_oceantauocdimensionlesshttps://codes.ecmwf.int/grib/param-db/140214era5_sl_hourly.cfg
northward_gravity_wave_surface_stressmgwsN m**-2 shttps://codes.ecmwf.int/grib/param-db/196era5_sl_hourly.cfg
northward_turbulent_surface_stressnsssN m**-2 shttps://codes.ecmwf.int/grib/param-db/181era5_sl_hourly.cfg
ocean_surface_stress_equivalent_10m_neutral_wind_directiondwidegreeshttps://codes.ecmwf.int/grib/param-db/140249era5_sl_hourly.cfg
ocean_surface_stress_equivalent_10m_neutral_wind_speedwindm s**-1https://codes.ecmwf.int/grib/param-db/140245era5_sl_hourly.cfg
ozone_mass_mixing_ratioo3kg kg**-1https://codes.ecmwf.int/grib/param-db/500242era5_pl_hourly.cfg
peak_wave_periodpp1dshttps://codes.ecmwf.int/grib/param-db/500190era5_sl_hourly.cfg
period_corresponding_to_maximum_individual_wave_heighttmaxshttps://codes.ecmwf.int/grib/param-db/140217era5_sl_hourly.cfg
potential_evaporationpevmhttps://codes.ecmwf.int/grib/param-db/228251era5_sl_hourly.cfg
potential_vorticitypvK m2 kg-1 s**-1https://codes.ecmwf.int/grib/param-db/60era5_pl_hourly.cfg
precipitation_typeptypecode table (4.201)https://codes.ecmwf.int/grib/param-db/260015era5_sl_hourly.cfg
runoffromhttps://codes.ecmwf.int/grib/param-db/228205era5_sl_hourly.cfg
sea_ice_coversiconc(0 - 1)https://codes.ecmwf.int/grib/param-db/262001era5_sl_hourly.cfg
sea_surface_temperaturesstKhttps://codes.ecmwf.int/grib/param-db/151159era5_sl_hourly.cfg
significant_height_of_combined_wind_waves_and_swellswhmhttps://codes.ecmwf.int/grib/param-db/500071era5_sl_hourly.cfg
significant_height_of_total_swellshtsmhttps://codes.ecmwf.int/grib/param-db/140237era5_sl_hourly.cfg
significant_height_of_wind_wavesshwwmhttps://codes.ecmwf.int/grib/param-db/500073era5_sl_hourly.cfg
significant_wave_height_of_first_swell_partitionswh1mhttps://codes.ecmwf.int/grib/param-db/140121era5_sl_hourly.cfg
significant_wave_height_of_second_swell_partitionswh2mhttps://codes.ecmwf.int/grib/param-db/140124era5_sl_hourly.cfg
significant_wave_height_of_third_swell_partitionswh3mhttps://codes.ecmwf.int/grib/param-db/140127era5_sl_hourly.cfg
skin_reservoir_contentsrcm of water equivalenthttps://codes.ecmwf.int/grib/param-db/198era5_sl_hourly.cfg
skin_temperaturesktKhttps://codes.ecmwf.int/grib/param-db/235era5_sl_hourly.cfg
slope_of_sub_gridscale_orographyslor~https://codes.ecmwf.int/grib/param-db/163era5_sl_hourly.cfg
snow_albedoasn(0 - 1)https://codes.ecmwf.int/grib/param-db/228032era5_sl_hourly.cfg
snow_densityrsnkg m**-3https://codes.ecmwf.int/grib/param-db/33era5_sl_hourly.cfg
snow_depthsdm of water equivalenthttps://codes.ecmwf.int/grib/param-db/228141era5_sl_hourly.cfg
snow_evaporationesm of water equivalenthttps://codes.ecmwf.int/grib/param-db/44era5_sl_hourly.cfg
snowfallsfm of water equivalenthttps://codes.ecmwf.int/grib/param-db/228144era5_sl_hourly.cfg
snowmeltsmltm of water equivalenthttps://codes.ecmwf.int/grib/param-db/45era5_sl_hourly.cfg
soil_temperature_level_1stl1Khttps://codes.ecmwf.int/grib/param-db/139era5_sl_hourly.cfg
soil_temperature_level_2stl2Khttps://codes.ecmwf.int/grib/param-db/170era5_sl_hourly.cfg
soil_temperature_level_3stl3Khttps://codes.ecmwf.int/grib/param-db/183era5_sl_hourly.cfg
soil_temperature_level_4stl4Khttps://codes.ecmwf.int/grib/param-db/236era5_sl_hourly.cfg
soil_typeslt~https://codes.ecmwf.int/grib/param-db/43era5_sl_hourly.cfg
specific_cloud_ice_water_contentciwckg kg**-1https://codes.ecmwf.int/grib/param-db/247era5_pl_hourly.cfg
specific_cloud_liquid_water_contentclwckg kg**-1https://codes.ecmwf.int/grib/param-db/246era5_pl_hourly.cfg
specific_humidityqkg kg**-1https://codes.ecmwf.int/grib/param-db/133era5_pl_hourly.cfg
standard_deviation_of_filtered_subgrid_orographysdformhttps://codes.ecmwf.int/grib/param-db/74era5_sl_hourly.cfg
standard_deviation_of_orographysdormhttps://codes.ecmwf.int/grib/param-db/160era5_sl_hourly.cfg
sub_surface_runoffssromhttps://codes.ecmwf.int/grib/param-db/9era5_sl_hourly.cfg
surface_latent_heat_fluxslhfJ m**-2https://codes.ecmwf.int/grib/param-db/147era5_sl_hourly.cfg
surface_net_solar_radiationssrJ m**-2https://codes.ecmwf.int/grib/param-db/180176era5_sl_hourly.cfg
surface_net_solar_radiation_clear_skyssrcJ m**-2https://codes.ecmwf.int/grib/param-db/210era5_sl_hourly.cfg
surface_net_thermal_radiationstrJ m**-2https://codes.ecmwf.int/grib/param-db/180177era5_sl_hourly.cfg
surface_net_thermal_radiation_clear_skystrcJ m**-2https://codes.ecmwf.int/grib/param-db/211era5_sl_hourly.cfg
surface_pressurespPahttps://codes.ecmwf.int/grib/param-db/500026era5_sl_hourly.cfg
surface_runoffsromhttps://codes.ecmwf.int/grib/param-db/174008era5_sl_hourly.cfg
surface_sensible_heat_fluxsshfJ m**-2https://codes.ecmwf.int/grib/param-db/146era5_sl_hourly.cfg
surface_solar_radiation_downward_clear_skyssrdcJ m**-2https://codes.ecmwf.int/grib/param-db/228129era5_sl_hourly.cfg
surface_solar_radiation_downwardsssrdJ m**-2https://codes.ecmwf.int/grib/param-db/169era5_sl_hourly.cfg
surface_thermal_radiation_downward_clear_skystrdcJ m**-2https://codes.ecmwf.int/grib/param-db/228130era5_sl_hourly.cfg
surface_thermal_radiation_downwardsstrdJ m**-2https://codes.ecmwf.int/grib/param-db/175era5_sl_hourly.cfg
temperaturetKhttps://codes.ecmwf.int/grib/param-db/500014era5_pl_hourly.cfg
temperature_of_snow_layertsnKhttps://codes.ecmwf.int/grib/param-db/238era5_sl_hourly.cfg
toa_incident_solar_radiationtisrJ m**-2https://codes.ecmwf.int/grib/param-db/212era5_sl_hourly.cfg
top_net_solar_radiationtsrJ m**-2https://codes.ecmwf.int/grib/param-db/180178era5_sl_hourly.cfg
top_net_solar_radiation_clear_skytsrcJ m**-2https://codes.ecmwf.int/grib/param-db/208era5_sl_hourly.cfg
top_net_thermal_radiationttrJ m**-2https://codes.ecmwf.int/grib/param-db/180179era5_sl_hourly.cfg
top_net_thermal_radiation_clear_skyttrcJ m**-2https://codes.ecmwf.int/grib/param-db/209era5_sl_hourly.cfg
total_cloud_covertcc(0 - 1)https://codes.ecmwf.int/grib/param-db/228164era5_sl_hourly.cfg
total_column_cloud_ice_watertciwkg m**-2https://codes.ecmwf.int/grib/param-db/79era5_sl_hourly.cfg
total_column_cloud_liquid_watertclwkg m**-2https://codes.ecmwf.int/grib/param-db/78era5_sl_hourly.cfg
total_column_ozonetco3kg m**-2https://codes.ecmwf.int/grib/param-db/206era5_sl_hourly.cfg
total_column_rain_watertcrwkg m**-2https://codes.ecmwf.int/grib/param-db/228089era5_sl_hourly.cfg
total_column_snow_watertcswkg m**-2https://codes.ecmwf.int/grib/param-db/228090era5_sl_hourly.cfg
total_column_supercooled_liquid_watertcslwkg m**-2https://codes.ecmwf.int/grib/param-db/228088era5_sl_hourly.cfg
total_column_watertcwkg m**-2https://codes.ecmwf.int/grib/param-db/136era5_sl_hourly.cfg
total_column_water_vapourtcwvkg m**-2https://codes.ecmwf.int/grib/param-db/137era5_sl_hourly.cfg
total_precipitationtpmhttps://codes.ecmwf.int/grib/param-db/228228era5_sl_hourly.cfg
total_totals_indextotalxKhttps://codes.ecmwf.int/grib/param-db/260123era5_sl_hourly.cfg
trapping_layer_base_heighttplbmhttps://codes.ecmwf.int/grib/param-db/228018era5_sl_hourly.cfg
trapping_layer_top_heighttpltmhttps://codes.ecmwf.int/grib/param-db/228019era5_sl_hourly.cfg
type_of_high_vegetationtvh~https://codes.ecmwf.int/grib/param-db/30era5_sl_hourly.cfg
type_of_low_vegetationtvl~https://codes.ecmwf.int/grib/param-db/29era5_sl_hourly.cfg
u_component_of_windum s**-1https://codes.ecmwf.int/grib/param-db/500028era5_pl_hourly.cfg
u_component_stokes_driftustm s**-1https://codes.ecmwf.int/grib/param-db/140215era5_sl_hourly.cfg
uv_visible_albedo_for_diffuse_radiationaluvd(0 - 1)https://codes.ecmwf.int/grib/param-db/16era5_sl_hourly.cfg
uv_visible_albedo_for_direct_radiationaluvp(0 - 1)https://codes.ecmwf.int/grib/param-db/15era5_sl_hourly.cfg
v_component_of_windvm s**-1https://codes.ecmwf.int/grib/param-db/500030era5_pl_hourly.cfg
v_component_stokes_driftvstm s**-1https://codes.ecmwf.int/grib/param-db/140216era5_sl_hourly.cfg
vertical_integral_of_divergence_of_cloud_frozen_water_fluxviiwdkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/162057era5_sl_hourly.cfg
vertical_integral_of_divergence_of_cloud_liquid_water_fluxvilwdkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/162056era5_sl_hourly.cfg
vertical_integral_of_divergence_of_geopotential_fluxvigdW m**-2https://codes.ecmwf.int/grib/param-db/162085era5_sl_hourly.cfg
vertical_integral_of_divergence_of_kinetic_energy_fluxvikedW m**-2https://codes.ecmwf.int/grib/param-db/162082era5_sl_hourly.cfg
vertical_integral_of_divergence_of_mass_fluxvimadkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/162081era5_sl_hourly.cfg
vertical_integral_of_divergence_of_moisture_fluxviwvdkg m**-2 s**-1https://codes.ecmwf.int/grib/param-db/162084era5_sl_hourly.cfg
vertical_integral_of_divergence_of_ozone_fluxviozdkg m**-2 s**-1https://apps.ecmwf.int/codes/grib/param-db/162087era5_sl_hourly.cfg
vertical_integral_of_divergence_of_thermal_energy_fluxvithedW m**-2https://apps.ecmwf.int/codes/grib/param-db/162083era5_sl_hourly.cfg
vertical_integral_of_divergence_of_total_energy_fluxvitoedW m**-2https://apps.ecmwf.int/codes/grib/param-db/162086era5_sl_hourly.cfg
vertical_integral_of_eastward_cloud_frozen_water_fluxviiwekg m**-1 s**-1https://apps.ecmwf.int/codes/grib/param-db/162090era5_sl_hourly.cfg
vertical_integral_of_eastward_cloud_liquid_water_fluxvilwekg m**-1 s**-1https://apps.ecmwf.int/codes/grib/param-db/162088era5_sl_hourly.cfg
vertical_integral_of_eastward_geopotential_fluxvigeW m**-1https://apps.ecmwf.int/codes/grib/param-db/162073era5_sl_hourly.cfg
vertical_integral_of_eastward_heat_fluxvitheeW m**-1https://codes.ecmwf.int/grib/param-db/162069era5_sl_hourly.cfg
vertical_integral_of_eastward_kinetic_energy_fluxvikeeW m**-1https://codes.ecmwf.int/grib/param-db/162067era5_sl_hourly.cfg
vertical_integral_of_eastward_mass_fluxvimaekg m**-1 s**-1https://codes.ecmwf.int/grib/param-db/162065era5_sl_hourly.cfg
vertical_integral_of_eastward_ozone_fluxviozekg m**-1 s**-1https://codes.ecmwf.int/grib/param-db/162077era5_sl_hourly.cfg
vertical_integral_of_eastward_total_energy_fluxvitoeeW m**-1https://codes.ecmwf.int/grib/param-db/162075era5_sl_hourly.cfg
vertical_integral_of_eastward_water_vapour_fluxviwvekg m**-1 s**-1https://codes.ecmwf.int/grib/param-db/162071era5_sl_hourly.cfg
vertical_integral_of_energy_conversionviecW m**-2https://codes.ecmwf.int/grib/param-db/162064era5_sl_hourly.cfg
vertical_integral_of_kinetic_energyvikeJ m**-2https://apps.ecmwf.int/codes/grib/param-db/162059era5_sl_hourly.cfg
vertical_integral_of_mass_of_atmospherevimakg m**-2https://apps.ecmwf.int/codes/grib/param-db/162053era5_sl_hourly.cfg
vertical_integral_of_mass_tendencyvimatkg m**-2 s**-1https://apps.ecmwf.int/codes/grib/param-db/162092era5_sl_hourly.cfg
vertical_integral_of_northward_cloud_frozen_water_fluxviiwnkg m**-1 s**-1https://apps.ecmwf.int/codes/grib/param-db/162091era5_sl_hourly.cfg
vertical_integral_of_northward_cloud_liquid_water_fluxvilwnkg m**-1 s**-1https://apps.ecmwf.int/codes/grib/param-db/162089era5_sl_hourly.cfg
vertical_integral_of_northward_geopotential_fluxvignW m**-1https://apps.ecmwf.int/codes/grib/param-db/162074era5_sl_hourly.cfg
vertical_integral_of_northward_heat_fluxvithenW m**-1https://codes.ecmwf.int/grib/param-db/162070era5_sl_hourly.cfg
vertical_integral_of_northward_kinetic_energy_fluxvikenW m**-1https://codes.ecmwf.int/grib/param-db/162068era5_sl_hourly.cfg
vertical_integral_of_northward_mass_fluxvimankg m**-1 s**-1https://codes.ecmwf.int/grib/param-db/162066era5_sl_hourly.cfg
vertical_integral_of_northward_ozone_fluxvioznkg m**-1 s**-1https://codes.ecmwf.int/grib/param-db/162078era5_sl_hourly.cfg
vertical_integral_of_northward_total_energy_fluxvitoenW m**-1https://codes.ecmwf.int/grib/param-db/162076era5_sl_hourly.cfg
vertical_integral_of_northward_water_vapour_fluxviwvnkg m**-1 s**-1https://codes.ecmwf.int/grib/param-db/162072era5_sl_hourly.cfg
vertical_integral_of_potential_and_internal_energyvipieJ m**-2https://apps.ecmwf.int/codes/grib/param-db/162061era5_sl_hourly.cfg
vertical_integral_of_potential_internal_and_latent_energyvipileJ m**-2https://codes.ecmwf.int/grib/param-db/162062era5_sl_hourly.cfg
vertical_integral_of_temperaturevitK kg m**-2https://codes.ecmwf.int/grib/param-db/162054era5_sl_hourly.cfg
vertical_integral_of_thermal_energyvitheJ m**-2https://codes.ecmwf.int/grib/param-db/162060era5_sl_hourly.cfg
vertical_integral_of_total_energyvitoeJ m**-2https://codes.ecmwf.int/grib/param-db/162063era5_sl_hourly.cfg
vertical_velocitywPa s**-1https://codes.ecmwf.int/grib/param-db/500032era5_pl_hourly.cfg
vertically_integrated_moisture_divergencevimdkg m**-2https://codes.ecmwf.int/grib/param-db/213era5_sl_hourly.cfg
volumetric_soil_water_layer_1swvl1m3 m-3https://codes.ecmwf.int/grib/param-db/39era5_sl_hourly.cfg
volumetric_soil_water_layer_2swvl2m3 m-3https://codes.ecmwf.int/grib/param-db/40era5_sl_hourly.cfg
volumetric_soil_water_layer_3swvl3m3 m-3https://codes.ecmwf.int/grib/param-db/41era5_sl_hourly.cfg
volumetric_soil_water_layer_4swvl4m3 m-3https://codes.ecmwf.int/grib/param-db/42era5_sl_hourly.cfg
wave_spectral_directional_widthwdwradianshttps://codes.ecmwf.int/grib/param-db/140222era5_sl_hourly.cfg
wave_spectral_directional_width_for_swelldwpsradianshttps://codes.ecmwf.int/grib/param-db/140228era5_sl_hourly.cfg
wave_spectral_directional_width_for_wind_wavesdwwwradianshttps://codes.ecmwf.int/grib/param-db/140225era5_sl_hourly.cfg
wave_spectral_kurtosiswskdimensionlesshttps://codes.ecmwf.int/grib/param-db/140252era5_sl_hourly.cfg
wave_spectral_peakednesswspdimensionlesshttps://codes.ecmwf.int/grib/param-db/140254era5_sl_hourly.cfg
wave_spectral_skewnesswssdimensionlesshttps://codes.ecmwf.int/grib/param-db/140207era5_sl_hourly.cfg
zero_degree_leveldeg0lmhttps://codes.ecmwf.int/grib/param-db/228024era5_sl_hourly.cfg

0.25° Model Level Data

This dataset contains 3D fields at 0.25° resolution with ERA5's native vertical coordinates (hybrid pressure/sigma coordinates).

import xarray

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/ar/model-level-1h-0p25deg.zarr-v1',
    chunks=None,
    storage_options=dict(token='anon'),
)
ar_native_vertical_grid_data = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))

It can combined with surface-level variables from the 0.25° pressure- and surface-level dataset:

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3',
    chunks=None,
    storage_options=dict(token='anon'),
)
ar_full_37_1h = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))

ar_model_level_and_surface_data = xarray.merge([
    ar_native_vertical_grid_data, ar_full_37_1h.drop_dims('level')
])
  • Times: 00/to/23
  • Levels: 1/to/137
  • Grid: equiangular lat-lon
  • Size: 5.88 PB
  • Chunking: {'time': 1, 'hybrid': 18, 'latitude': 721, 'longitude': 1440}
  • Chunk size (per variable): 74.8 MB
Data summary table
nameshort nameunitsdocsconfig
vorticity (relative)vos^-1https://apps.ecmwf.int/codes/grib/param-db?id=138era5_ml_dve.cfg
divergenceds^-1https://apps.ecmwf.int/codes/grib/param-db?id=155era5_ml_dve.cfg
geopotentialzm^2 s^-2https://apps.ecmwf.int/codes/grib/param-dbid=129era5_sfc.cfg
temperaturetKhttps://apps.ecmwf.int/codes/grib/param-db?id=130era5_ml_tw.cfg
vertical velocitywPa s^-1https://apps.ecmwf.int/codes/grib/param-db?id=135era5_ml_tw.cfg
specific humidityqkg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=133era5_ml_o3q.cfg
ozone mass mixing ratioo3kg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=203era5_ml_o3q.cfg
specific cloud liquid water contentclwckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=246era5_ml_o3q.cfg
specific cloud ice water contentciwckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=247era5_ml_o3q.cfg
fraction of cloud covercc(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=248era5_ml_o3q.cfg
specific rain water contentcrwckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=75era5_ml_qrqs.cfg
specific snow water contentcswckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=76era5_ml_qrqs.cfg
u component of windum s**-1https://codes.ecmwf.int/grib/param-db/500028era5_pl_hourly.cfg
v component of windvm s**-1https://codes.ecmwf.int/grib/param-db/500030era5_pl_hourly.cfg

Raw Cloud Optimized Data

These datasets contain the raw data used to produce the Analysis Ready data. Whenever possible, parameters are represented by their native grid resolution See this ECMWF documentation for more.

Please view our walkthrough notebook for demos of these cloud-optimized datasets: Open In Colab

Model Level Wind

This dataset contains model-level wind fields on ERA5's native grid, as spherical harmonic coefficients. Open In Colab

import xarray

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/co/model-level-wind.zarr-v2',
    chunks=None,
    storage_options=dict(token='anon'),
)
model_level_wind = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))
  • Levels: 1/to/137
  • Times: 00/to/23
  • Grid: T639 spherical harmonic coefficients (docs)
  • Size: 664 TB
  • Chunking: {'time': 1, 'hybrid': 1, 'values': 410240}
  • Chunk size (per variable): 1.64 MB
Data summary table
nameshort nameunitsdocsconfig
vorticity (relative)vos^-1https://apps.ecmwf.int/codes/grib/param-db?id=138era5_ml_dve.cfg
divergenceds^-1https://apps.ecmwf.int/codes/grib/param-db?id=155era5_ml_dve.cfg
temperaturetKhttps://apps.ecmwf.int/codes/grib/param-db?id=130era5_pl_hourly.cfg
vertical velocitywPa s^-1https://apps.ecmwf.int/codes/grib/param-db?id=135era5_ml_tw.cfg

Model Level Moisture

This dataset contains model-level moisture fields on ERA5's native reduced Gaussian grid.

import xarray

ds = xr.open_zarr(
    'gs://gcp-public-data-arco-era5/co/model-level-moisture.zarr-v2/',
    chunks=None,
    storage_options=dict(token='anon'),
)
model_level_moisture = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))
  • Levels: 1/to/137
  • Times: 00/to/23
  • Grid: N320, a Reduced Gaussian Grid (docs)
  • Size: 1.54 PB
  • Chunking: {'time': 1, 'hybrid': 1, 'values': 542080}
  • Chunk size (per variable): 2.17 MB
Data summary table
nameshort nameunitsdocsconfig
specific humidityqkg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=133era5_ml_o3q.cfg
ozone mass mixing ratioo3kg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=203era5_ml_o3q.cfg
specific cloud liquid water contentclwckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=246era5_ml_o3q.cfg
specific cloud ice water contentciwckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=247era5_ml_o3q.cfg
fraction of cloud covercc(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=248era5_ml_o3q.cfg
specific rain water contentcrwckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=75era5_ml_qrqs.cfg
specific snow water contentcswckg kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=76era5_ml_qrqs.cfg

Single Level Surface

This dataset contains single-level renanalysis fields on ERA5's native grid, as spherical harmonic coefficients.

import xarray

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/co/single-level-surface.zarr-v2/',
    chunks=None,
    storage_options=dict(token='anon'),
)
single_level_surface = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))
  • Times: 00/to/23
  • Grid: TL639 spherical harmonic coefficients (docs)
  • Size: 2.42 TB
  • Chunking: {'time': 1, 'values': 410240}
  • Chunk size (per variable): 1.64 MB
Data summary table
nameshort nameunitsdocsconfig
logarithm of surface pressurelnspNumerichttps://apps.ecmwf.int/codes/grib/param-db?id=152era5_ml_lnsp.cfg
surface geopotentialzsm^2 s^-2https://apps.ecmwf.int/codes/grib/param-db?id=162051era5_ml_zs.cfg

Single Level Reanalysis

This dataset contains single-level renanalysis fields on ERA5's native reduced Gaussian grid.

import xarray

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/co/single-level-reanalysis.zarr-v2',
    chunks=None,
    storage_options=dict(token='anon'),
)
single_level_reanalysis = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))
  • Times: 00/to/23
  • Grid: N320, a Reduced Gaussian Grid (docs)
  • Size: 60.9 TB
  • Chunking: {'time': 1, 'values': 542080}
  • Chunk size (per variable): 2.17 MB
Data summary table
nameshort nameunitsdocsconfig
convective available potential energycapeJ kg^-1https://apps.ecmwf.int/codes/grib/param-db?id=59era5_sfc_cape.cfg
total column cloud ice watertciwkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=79era5_sfc_cape.cfg
vertical integral of divergence of cloud frozen water fluxwiiwdkg m^-2 s^-1https://apps.ecmwf.int/codes/grib/param-db?id=162080era5_sfc_cape.cfg
100 metre U wind component100um s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228246era5_sfc_cape.cfg
100 metre V wind component100vm s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228247era5_sfc_cape.cfg
sea ice area fractionci(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=31era5_sfc_cisst.cfg
sea surface temperaturesstPahttps://apps.ecmwf.int/codes/grib/param-db?id=34era5_sfc_cisst.cfg
skin temperaturesktKhttps://apps.ecmwf.int/codes/grib/param-db?id=235era5_sfc_cisst.cfg
soil temperature level 1stl1Khttps://apps.ecmwf.int/codes/grib/param-db?id=139era5_sfc_soil.cfg
soil temperature level 2stl2Khttps://apps.ecmwf.int/codes/grib/param-db?id=170era5_sfc_soil.cfg
soil temperature level 3stl3Khttps://apps.ecmwf.int/codes/grib/param-db?id=183era5_sfc_soil.cfg
soil temperature level 4stl4Khttps://apps.ecmwf.int/codes/grib/param-db?id=236era5_sfc_soil.cfg
temperature of snow layertsnKhttps://apps.ecmwf.int/codes/grib/param-db?id=238era5_sfc_soil.cfg
volumetric soil water layer 1swvl1m^3 m^-3https://apps.ecmwf.int/codes/grib/param-db?id=39era5_sfc_soil.cfg
volumetric soil water layer 2swvl2m^3 m^-3https://apps.ecmwf.int/codes/grib/param-db?id=40era5_sfc_soil.cfg
volumetric soil water layer 3swvl3m^3 m^-3https://apps.ecmwf.int/codes/grib/param-db?id=41era5_sfc_soil.cfg
volumetric soil water layer 4swvl4m^3 m^-3https://apps.ecmwf.int/codes/grib/param-db?id=42era5_sfc_soil.cfg
ice temperature layer 1istl1Khttps://apps.ecmwf.int/codes/grib/param-db?id=35era5_sfc_soil.cfg
ice temperature layer 2istl2Khttps://apps.ecmwf.int/codes/grib/param-db?id=36era5_sfc_soil.cfg
ice temperature layer 3istl3Khttps://apps.ecmwf.int/codes/grib/param-db?id=37era5_sfc_soil.cfg
ice temperature layer 4istl4Khttps://apps.ecmwf.int/codes/grib/param-db?id=38era5_sfc_soil.cfg
total column cloud liquid watertclwkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=78era5_sfc_tcol.cfg
total column rain watertcrwkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=228089era5_sfc_tcol.cfg
total column snow watertcswkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=228090era5_sfc_tcol.cfg
total column watertcwkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=136era5_sfc_tcol.cfg
total column vertically-integrated water vapourtcwvkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=137era5_sfc_tcol.cfg
Geopotentialzm^2 s^-2https://apps.ecmwf.int/codes/grib/param-dbid=129era5_sfc.cfg
Surface pressurespPahttps://apps.ecmwf.int/codes/grib/param-db?id=134era5_sfc.cfg
Total column vertically-integrated water vapourtcwvkg m^-2https://apps.ecmwf.int/codes/grib/param-db?id=137era5_sfc.cfg
Mean sea level pressuremslPahttps://apps.ecmwf.int/codes/grib/param-db?id=151era5_sfc.cfg
Total cloud covertcc(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=164era5_sfc.cfg
10 metre U wind component10um s^-1https://apps.ecmwf.int/codes/grib/param-db?id=165era5_sfc.cfg
10 metre V wind component10vm s^-1https://apps.ecmwf.int/codes/grib/param-db?id=166era5_sfc.cfg
2 metre temperature2tKhttps://apps.ecmwf.int/codes/grib/param-db?id=167era5_sfc.cfg
2 metre dewpoint temperature2dKhttps://apps.ecmwf.int/codes/grib/param-db?id=168era5_sfc.cfg
Low cloud coverlcc(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=186era5_sfc.cfg
Medium cloud covermcc(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=187era5_sfc.cfg
High cloud coverhcc(0 - 1)https://apps.ecmwf.int/codes/grib/param-db?id=188era5_sfc.cfg
100 metre U wind component100um s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228246era5_sfc.cfg
100 metre V wind component100vm s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228247era5_sfc.cfg

Single Level Forecast

This dataset contains single-level forecast fields on ERA5's native reduced Gaussian grid.

import xarray

ds = xarray.open_zarr(
    'gs://gcp-public-data-arco-era5/co/single-level-forecast.zarr-v2/', 
    chunks=None,
    storage_options=dict(token='anon'),
)
single_level_forecasts = ds.sel(time=slice(ds.attrs['valid_time_start'], ds.attrs['valid_time_stop']))
  • Times: 06:00/18:00
  • Steps: 0/1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18
  • Grid: N320, a Reduced Gaussian Grid (docs)
  • Size: 53.2 TB
  • Chunking: {'time': 1, 'step': 1, 'values': 542080}
  • Chunk size (per variable): 2.17 MB
Data summary table
nameshort nameunitsdocsconfig
snow densityrsnkg m^-3https://apps.ecmwf.int/codes/grib/param-db?id=33era5_sfc_pcp.cfg
snow evaporationesm of water equivalenthttps://apps.ecmwf.int/codes/grib/param-db?id=44era5_sfc_pcp.cfg
snow meltsmltm of water equivalenthttps://apps.ecmwf.int/codes/grib/param-db?id=45era5_sfc_pcp.cfg
large-scale precipitation fractionlspfshttps://apps.ecmwf.int/codes/grib/param-db?id=50era5_sfc_pcp.cfg
snow depthsdm of water equivalenthttps://apps.ecmwf.int/codes/grib/param-db?id=141era5_sfc_pcp.cfg
large-scale precipitationlspmhttps://apps.ecmwf.int/codes/grib/param-db?id=142era5_sfc_pcp.cfg
convective precipitationcpmhttps://apps.ecmwf.int/codes/grib/param-db?id=143era5_sfc_pcp.cfg
snowfallsfm of water equivalenthttps://apps.ecmwf.int/codes/grib/param-db?id=144era5_sfc_pcp.cfg
convective rain ratecrrkg m^-2 s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228218era5_sfc_pcp.cfg
large scale rain ratelsrrkg m^-2 s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228219era5_sfc_pcp.cfg
convective snowfall rate water equivalentcsfrkg m^-2 s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228220era5_sfc_pcp.cfg
large scale snowfall rate water equivalentlssfrkg m^-2 s^-1https://apps.ecmwf.int/codes/grib/param-db?id=228221era5_sfc_pcp.cfg
total precipitationtpmhttps://apps.ecmwf.int/codes/grib/param-db?id=228era5_sfc_pcp.cfg
convective snowfallcsfm of water equivalenthttps://apps.ecmwf.int/codes/grib/param-db?id=239era5_sfc_pcp.cfg
large-scale snowfalllsfm of water equivalenthttps://apps.ecmwf.int/codes/grib/param-db?id=240era5_sfc_pcp.cfg
precipitation typeptypecode table (4.201)https://apps.ecmwf.int/codes/grib/param-db?id=260015era5_sfc_pcp.cfg
surface solar radiation downwardsssrdJ m^-2https://apps.ecmwf.int/codes/grib/param-db?id=169era5_sfc_rad.cfg
top net thermal radiationttrJ m^-2https://apps.ecmwf.int/codes/grib/param-db?id=179era5_sfc_rad.cfg
gravity wave dissipationgwdJ m^-2https://apps.ecmwf.int/codes/grib/param-db?id=197era5_sfc_rad.cfg
surface thermal radiation downwardsstrdJ m^-2https://apps.ecmwf.int/codes/grib/param-db?id=175era5_sfc_rad.cfg
surface net thermal radiationstrJ m^-2https://apps.ecmwf.int/codes/grib/param-db?id=177era5_sfc_rad.cfg

Project roadmap

Updated on 2024-06-25

  1. Phase 0: Ingest raw ERA5
  2. Phase 1: Cloud-Optimize to Zarr, without data modifications
    1. Use Pangeo-Forge to convert the data from grib to Zarr.
    2. Create example notebooks for common workflows, including regridding and variable derivation.
  3. Phase 2: Produce an Analysis-Ready corpus
    1. Update GCP CPDs documentation.
    2. Create walkthrough notebooks.
  4. Phase 3: Automatic dataset updates, data is back-fillable.
  5. WIP Phase 4: Mirror ERA5 data in Google BigQuery.
  6. Phase 5: Derive a high-resolution version of ERA5
    1. Regrid datasets to lat/long grids.
    2. Convert model levels to pressure levels (at high resolution).
    3. Compute derived variables.
    4. Expand on example notebooks.

How to reproduce

All phases of this dataset can be reproduced with scripts found here. To run them, please clone the repo and install the project.

git clone https://github.com/google-research/arco-era5.git

Or, via SSH:

git clone git@github.com:google-research/arco-era5.git

Then, install with pip:

cd arco-era5
pip install -e .

Acquire & preprocess raw data

Please consult the instructions described in raw/.

Cloud-Optimization

All our tools make use of Apache Beam, and thus are portable to any cloud (or Runner). We use GCP's Dataflow to produce this dataset. If you would like to reproduce the project this way, we recommend the following:

  1. Ensure you have access to a GCP project with GCS read & write access, as well as full Dataflow permissions (see these "Before you begin" instructions).
  2. Export the following variables:
    export PROJECT=<your-gcp-project>
    export REGION=us-central1
    export BUCKET=<your-beam-runner-bucket>
    

From here, we provide examples of how to run the recipes at the top of each script.

pydoc src/single-levels-to-zarr.py
pydoc src/ar-to-zarr.py

You can also discover available command line options by invoking the script with -h/--help:

python src/model-levels-to-zarr.py --help

Automating dataset Updates in zarr and BigQuery

This feature is works in 4 parts.

  1. Acquiring raw data from CDS, facilitated by weather-dl tool.
  2. Splitting raw data using weather-sp.
  3. Ingest this splitted data into a zarr file.

How to Run.

  1. Set up a Cloud project with sufficient permissions to use cloud storage (such as GCS) and a Beam runner (such as Dataflow).

    Note: Other cloud systems should work too, such as S3 and Elastic Map Reduce. However, these are untested. If you experience an error here, please let us know by filing an issue.

  2. Acquire one or more licenses from Copernicus.

  3. Add the all Copernicus licenses into the secret-manager with value likes this: {"api_url": "URL", "api_key": "KEY"}

    NOTE: for every API_KEY there must be unique secret-key.

  4. Update all of these variable in docker-file.

    • PROJECT
    • REGION
    • BUCKET
    • MANIFEST_LOCATION
    • API_KEY_*
      • In case of multiple API keys, API_KEY must follow this format: API_KEY_*. here * can be numeric value i.e. 1, 2.
      • API_KEY_* value is the resource name of secret-manager key and it's value looks like this :: projects/PROJECT_NAME/secrets/SECRET_KEY_NAME/versions/1
    • WEATHER_TOOLS_SDK_CONTAINER_IMAGE
      • Is made using this dockerfile and is stored in a docker registry.
    • ARCO_ERA5_SDK_CONTAINER_IMAGE
      • Is made using this dockerfile and is stored in a registry.
  5. Create docker image.

export PROJECT_ID=<your-project-here>
export REPO=<repo> eg:arco-era5-raw-to-zarr-to-bq

gcloud builds submit . --tag "gcr.io/$PROJECT_ID/$REPO:latest" 
  1. Run script to create cloud run jobs. create_job
python deployment/create_job.py
  1. There will be 5 different cloud run jobs.
    • arco-era5-zarr-ingestion - For zarr data ingestion.
    • arco-era5t-daily-executor - Triggers daily to process era5t-daily data.
    • arco-era5t-monthly-executor - Triggers monthly to process era5t-monthly data.
    • arco-era5-sanity - Sanity job to validate the data era5 vs era5t and replace in case of difference.
    • arco-era5-executor - Triggers every month to run a sanity job for every zarr available.
  2. Set up cloud schedulers to trigger above jobs on specified frequencies.
    • arco-era5t-daily-executor - Schedule a daily trigger for era5t-daily data.
    • arco-era5t-monthly-executor - Schedule a monthly trigger for era5t-monthly data.
    • arco-era5-executor - Schedule a monthly trigger to do era5 vs era5t sanity for current_month - 3 month.

Making the dataset "High Resolution" & beyond...

This phase of the project is under active development! If you would like to lend a hand in any way, please check out our contributing guide.

FAQs

How did you pick these variables?

This dataset originated in Loon, Alphabet’s project to deliver internet service using stratospheric balloons, and is now curated by Google Research & Google Cloud Platform. Loon’s Planning, Simulation and Control team needed accurate data on how the stratospheric winds have behaved in the past to evaluate the effectiveness of different balloon steering algorithms over a range of weather. This led us to download the model-level data. But Loon also needed information about the atmospheric radiation to model balloon gas temperatures, so we downloaded that. And then we downloaded the most commonly used meteorological variables to support different product planning needs (RF propagation models, etc)...

Eventually, we found ourselves with a comprehensive history of weather for the world.

Where are the U/V components of wind? Where is geopotential height? Why isn’t X variable in this dataset?

We intentionally did not include many variables that can be derived from other variables. For example, U/V components of wind can be computed from divergence and vorticity; geopotential is a vertical integral of temperature.

In the second phase of our roadmap (towards "Analysis Ready" data), we aim to compute all of these variables ourselves. If you’d like to make use of these parameters sooner, please check out our example notebooks where we demo common calculations. If you notice non-derived missing data, such as surface variables, please let us know of your needs by filing an issue, and we will be happy to incorporate them into our roadmap.

Do you have plans to get all of ERA5?

We aim to support hosting data that serves general meteorological use cases, rather than aim for total completeness. Wave variables are missing from this corpus, and are a priority on our roadmap. If there is a variable or dataset that you think should be included here, please file a Github issue.

For a complete ERA5 mirror, we recommend consulting with the Pangeo Forge project (especially staged-recipes#92).

Why are there two model-level datasets and not one?

It definitely is possible for all model level data to be represented in one grid, and thus one dataset. However, we opted to preserve the native representation for variables in ECMWF's models. A handful of core model variables (wind, temperature and surface pressure) are represented as spectral harmonic coefficients , while everything else is stored on a Gaussian grid. This avoids introducing numerical error by interpolating these variables to physical space. For a more in depth review of this topic, please consult these references:

Please note: in a future releases, we intend to create a dataset version where all model levels are in one grid and Zarr.

Why doesn’t this project make use of Pangeo Forge Cloud?

We are big fans of the Pangeo Forge project, and of Pangeo in general. While this project does make use of their Recipes, we have a few reasons to not use their cloud. First, we would prefer to use internal rather than community resources for computations of this scale. In addition, there are several technical reasons why Pangeo Forge as it is today would not be able to handle this case (0, 1, 2, 3). To work around this, we opted to combine familiar-to-us infrastructure with Pangeo-Forge's core and to use the right tool for the right job.

Why use this dataset? What uses are there for the data?

ERA5 can be used in many applications. It can be used to train ML models that predict the impact of weather on different phenomena. ERA5 data could also be used to train and evaluate ML models that forecast the weather. The data could be used to compute climatologies, or the average weather for a region over a given period of time. ERA5 data can be used to visualize and study historical weather events, such as Hurricane Sandy.

Where should I be cautious? What are the limitations of the dataset?

Mumbai, India
Mumbai, India
San Francisco, USA
San Francisco, USA
Tokyo, Japan
Tokyo, Japan
Singapore
Singapore
ERA5 Topography
ERA5 Topography
GMTED2010 Topography
GMTED2010 Topography

It is important to remember that a reanalysis is an estimate of what the weather was, it is not guaranteed to be an error-free estimate. There are several areas where the novice reanalysis user should be careful.

First, the user should be careful using reanalysis data at locations near coastlines. The first figure shows the fraction of land (1 for land, 0 for ocean) of ERA5 grid points at different coastal locations. This is important because the land-surface model used in ERA5 tries to blend in the influence of water with the influence of land based on this fraction. The most visible effect of this blending is that as the fraction of land decreases, the daily variation in temperature will also decrease. Looking at the first figure, there are sharp changes in the fraction of land between neighboring grid cells so there could be differences in daily temperature range that might not be reflected in actual weather observations.

The user should also be careful when using reanalysis data in areas with large variations in topography. The second figure is a plot of ERA5 topography around Mount Everest compared with GMTED2010 topography. The ERA5 topography is completely missing the high peaks of the Everest region and missing most of the structure of the mountain valleys. Topography strongly influences temperature and precipitation rate, so it is possible that ERA5’s temperature is too warm and ERA5’s precipitation patterns could be wrong as well.

ERA5’s precipitation variables aren’t directly constrained by any observations, so we strongly encourage the user to check ERA5 against observed precipitation (for example, Wu et al., 2022). A study comparing reanalyses (not including ERA5) against gridded precipitation observations showed striking differences between reanalyses and observation Lisa V Alexander et al 2020 Environ. Res. Lett. 15 055002.

Can I use the data for {research,commercial} purposes?

Yes, you can use our ERA5 data according to the terms of the Copernicus license.

Researchers, see the next section for how to cite this work.

Commercial users, please be sure to provide acknowledgement to the Copernicus Climate Change Service according to the Copernicus Licence terms.

How to cite this work

Please cite our presentation at the 22nd Conference on Artificial Intelligence for Environmental Science describing ARCO-ERA5.

Carver, Robert W, and Merose, Alex. (2023):
ARCO-ERA5: An Analysis-Ready Cloud-Optimized Reanalysis Dataset.
22nd Conf. on AI for Env. Science, Denver, CO, Amer. Meteo. Soc, 4A.1,
https://ams.confex.com/ams/103ANNUAL/meetingapp.cgi/Paper/415842

In addition, please cite the ERA5 dataset accordingly:

Hersbach, H., Bell, B., Berrisford, P., Hirahara, S., Horányi, A., 
Muñoz‐Sabater, J., Nicolas, J., Peubey, C., Radu, R., Schepers, D., 
Simmons, A., Soci, C., Abdalla, S., Abellan, X., Balsamo, G., 
Bechtold, P., Biavati, G., Bidlot, J., Bonavita, M., De Chiara, G., 
Dahlgren, P., Dee, D., Diamantakis, M., Dragani, R., Flemming, J., 
Forbes, R., Fuentes, M., Geer, A., Haimberger, L., Healy, S., 
Hogan, R.J., Hólm, E., Janisková, M., Keeley, S., Laloyaux, P., 
Lopez, P., Lupu, C., Radnoti, G., de Rosnay, P., Rozum, I., Vamborg, F.,
Villaume, S., Thépaut, J-N. (2017): Complete ERA5: Fifth generation of 
ECMWF atmospheric reanalyses of the global climate. Copernicus Climate 
Change Service (C3S) Data Store (CDS). (Accessed on DD-MM-YYYY)

Hersbach et al, (2017) was downloaded from the Copernicus Climate Change 
Service (C3S) Climate Data Store. We thank C3S for allowing us to 
redistribute the data.

The results contain modified Copernicus Climate Change Service 
information 2022. Neither the European Commission nor ECMWF is 
responsible for any use that may be made of the Copernicus information 
or data it contains.

License

This is not an official Google product.

Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.