| Spatial domain | Global |
| Spatial resolution | 0-240 hours: 0.25 degrees (~20km), 243-840 hours: 0.5 degrees (~40km) |
| Time domain | Forecasts initialized 2020-10-01 00:00:00 UTC to Present |
| Time resolution | Forecasts initialized every 24 hours |
| Forecast domain | Forecast lead time 0-840 hours (0-35 days) ahead |
| Forecast resolution | Forecast step 0-240 hours: 3 hourly, 243-840 hours: 6 hourly |
The Global Ensemble Forecast System (GEFS) is a National Oceanic and Atmospheric Administration (NOAA) National Centers for Environmental Prediction (NCEP) weather forecast model. GEFS creates 31 separate forecasts (ensemble members) to describe the range of forecast uncertainty.
This dataset is an archive of past and present GEFS forecasts. Forecasts are identified by an initialization time (init_time) denoting the start time of the model run as well as by the ensemble_member. Each forecast has a 3 hourly forecast step along the lead_time dimension. This dataset contains only the 00 hour UTC initialization times which produce the full length, 35 day forecast.
| Quickstart (Github) | |
| Quickstart (Colab) |
import dynamical_catalog # dynamical-catalog>=0.7.0
ds = dynamical_catalog.open("noaa-gefs-forecast-35-day", chunks=None)
ds["temperature_2m"].sel(init_time="2025-01-01T00", latitude=0, longitude=0).max()
import icechunk
import pystac
import xarray as xr
catalog = pystac.Catalog.from_file("https://stac.dynamical.org/catalog.json")
collection = catalog.get_child("noaa-gefs-forecast-35-day")
asset = collection.assets["icechunk-https"]
repo = icechunk.Repository.open(icechunk.http_storage(asset.href))
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
ds["temperature_2m"].sel(init_time="2025-01-01T00", latitude=0, longitude=0).max()
| min | max | units | |
|---|---|---|---|
| ensemble_member | 0 | 30 | 1 |
| init_time | 2020-10-01T00:00:00Z | Present | seconds since 1970-01-01 |
| latitude | -90 | 90 | degree_north |
| lead_time | 0 | 3024000 | seconds |
| longitude | -180 | 179.75 | degree_east |
Access a variable by its name (the bold identifier, e.g. ds["categorical_freezing_rain_surface"]).
Dimensions: init_time × ensemble_member × lead_time × latitude × longitude
| variable | units |
|---|---|
categorical_freezing_rain_surface
Categorical freezing rain (cfrzr)0=no; 1=yes
|
1 |
categorical_ice_pellets_surface
Categorical ice pellets (cicep)0=no; 1=yes
|
1 |
categorical_rain_surface
Categorical rain (crain)0=no; 1=yes
|
1 |
categorical_snow_surface
Categorical snow (csnow)0=no; 1=yes
|
1 |
downward_long_wave_radiation_flux_surface
Surface downward long-wave radiation flux (sdlwrf)Average value in the last 6 hour period (00, 06, 12, 18 UTC) or 3 hour period (03, 09, 15, 21 UTC).
|
W m-2 |
downward_short_wave_radiation_flux_surface
Surface downward short-wave radiation flux (sdswrf)Average value in the last 6 hour period (00, 06, 12, 18 UTC) or 3 hour period (03, 09, 15, 21 UTC).
|
W m-2 |
geopotential_height_500hpa
Geopotential height (gh)
|
m |
geopotential_height_cloud_ceiling
Geopotential height (gh)
|
m |
maximum_temperature_2m
Maximum temperature (tmax)
|
degree_Celsius |
minimum_temperature_2m
Minimum temperature (tmin)
|
degree_Celsius |
percent_frozen_precipitation_surface
Percent frozen precipitation (cpofp)Contains the value -50 when there is no precipitation.
|
percent |
precipitable_water_atmosphere
Precipitable water (pwat)
|
kg m-2 |
precipitation_surface
Precipitation rate (prate)Average precipitation rate since the previous forecast step. Units equivalent to mm/s.
|
kg m-2 s-1 |
pressure_80m
80 metre pressure (80sp)
|
Pa |
pressure_reduced_to_mean_sea_level
Pressure reduced to MSL (prmsl)
|
Pa |
pressure_surface
Surface pressure (sp)
|
Pa |
relative_humidity_2m
2 metre relative humidity (2r)
|
percent |
temperature_2m
2 metre temperature (2t)
|
degree_Celsius |
temperature_80m
80 metre temperature (80t)
|
degree_Celsius |
total_cloud_cover_atmosphere
Total cloud cover (tcc)Average value in the last 6 hour period (00, 06, 12, 18 UTC) or 3 hour period (03, 09, 15, 21 UTC).
|
percent |
wind_u_100m
100 metre U wind component (100u)
|
m s-1 |
wind_u_10m
10 metre U wind component (10u)
|
m s-1 |
wind_u_80m
80 metre U wind component (80u)
|
m s-1 |
wind_v_100m
100 metre V wind component (100v)
|
m s-1 |
wind_v_10m
10 metre V wind component (10v)
|
m s-1 |
wind_v_80m
80 metre V wind component (80v)
|
m s-1 |
Dataset licensed under CC BY 4.0.
NOAA NWS NCEP GEFS data processed by dynamical.org from NOAA Open Data Dissemination archives.
Or NOAA GEFS from dynamical.org.
Source data is available at both 0.25-degree and 0.5-degree resolutions. All variables except the 100m wind components are derived from a 0.25-degree grid for the first 240 hours of each forecast and from a 0.5-degree grid for the remainder. 100m wind components are derived from a 0.5-degree grid for all lead times. Bilinear interpolation is used to convert 0.5-degree data to a 0.25-degree grid. The original 0.5-degree values can be retrieved by selecting every other pixel starting from offset 0 in both the latitude and longitude dimensions (e.g. array[::2, ::2]).
The source grib files this archive is constructed from are provided by NOAA Open Data Dissemination (NODD) and accessed from the AWS Open Data Registry. Operational data is additionally accessed from NOAA NOMADS.
Storage for this dataset is generously provided by Source Cooperative, a Radiant Earth initiative. Icechunk storage generously provided by AWS Open Data.
This dataset is stored in Zarr format, which splits each variable into a grid of chunks — the smallest unit read from storage. Chunks are grouped into larger shards (the objects actually written to storage), which keeps the object count manageable for long-archive datasets. When possible, aligning your reads with this dataset's chunk grid can significantly improve data access speed.
The element count and coordinate span of this dataset:
| dimension | chunk | shard |
|---|---|---|
| init_time | 1 (1 day) | 1 (1 day) |
| ensemble_member | 31 | 31 |
| lead_time | 64 (~8 days) | 192 (843 hours) |
| latitude | 17 (4.25°) | 374 (93.5°) |
| longitude | 16 (4°) | 368 (92°) |
| uncompressed | 2.1 MiB | 3.1 GiB |
The data values in this dataset have been rounded in their binary floating point representation to improve compression. See Klöwer et al. 2021 for more information on this approach. The exact number of rounded bits can be found in our reformatting code.