| ID |
google-weathernext2-forecast-historical-virtual
|
| Spatial domain | Global |
| Spatial resolution | 0.25 degrees (~20km) |
| Time domain | Forecasts initialized 2022-01-01 00:00:00 UTC to 2024-12-31 18:00:00 |
| Time resolution | Forecasts initialized every 6 hours |
| Forecast domain | Forecast lead time 6-360 hours (0.25-15 days) ahead |
| Forecast resolution | 6 hourly |
STAC (browse) · validation report
WeatherNext 2 is Google's second-generation, global, medium-range, probabilistic weather forecasting model.
This data product is the fixed 2022-2024 archive of Google WeatherNext 2 forecasts, optimized for spatial (map) access patterns. Forecasts are identified by an initialization time (init_time) denoting the start time of the model run as well as by the ensemble_member, and step forward along the lead_time dimension. A new forecast was initialized every 6 hours.
Variables on pressure levels live in the pressure_level group. The spatial dimensions y and x hold latitude and 0-360 degree longitude.
| WeatherNext 2 forecasts, historical and operational, virtual (Github) | |
| WeatherNext 2 forecasts, historical and operational, virtual (Colab) |
import dynamical_catalog # dynamical-catalog>=1.0.0
ds = dynamical_catalog.open("google-weathernext2-forecast-historical-virtual", chunks=None)
ds["pressure_reduced_to_mean_sea_level"].sel(init_time="2024-07-04T00", lead_time="96h", ensemble_member=slice(0, 3), y=slice(10, 35), x=slice(255, 305))
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = dynamical_catalog.open("google-weathernext2-forecast-historical-virtual", group="pressure_level", chunks=None)
ds_pressure["geopotential_height"].sel(init_time="2024-07-04T00", lead_time="96h", pressure_level=500).mean("ensemble_member")
import dynamical_catalog # dynamical-catalog>=1.0.0
ds = dynamical_catalog.open("google-weathernext2-forecast-historical-virtual", chunks=None)
ds["pressure_reduced_to_mean_sea_level"].sel(init_time="2024-07-04T00", lead_time="96h", ensemble_member=slice(0, 3), y=slice(10, 35), x=slice(255, 305))
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = dynamical_catalog.open("google-weathernext2-forecast-historical-virtual", group="pressure_level", chunks=None)
ds_pressure["geopotential_height"].sel(init_time="2024-07-04T00", lead_time="96h", pressure_level=500).mean("ensemble_member")
import icechunk
import pystac
import xarray as xr
catalog = pystac.Catalog.from_file("https://stac.dynamical.org/catalog.json")
collection = catalog.get_child("google-weathernext2-forecast-historical-virtual")
asset = collection.assets["icechunk-https"]
authorize = icechunk.containers_credentials({"https://wn.dynamical.org/chunks/": icechunk.Credentials.HttpAccess()})
repo = icechunk.Repository.open(
icechunk.http_storage(asset.href),
authorize_virtual_chunk_access=authorize,
)
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
ds["pressure_reduced_to_mean_sea_level"].sel(init_time="2024-07-04T00", lead_time="96h", ensemble_member=slice(0, 3), y=slice(10, 35), x=slice(255, 305))
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = xr.open_zarr(session.store, group="pressure_level", chunks=None)
ds_pressure["geopotential_height"].sel(init_time="2024-07-04T00", lead_time="96h", pressure_level=500).mean("ensemble_member")
import icechunk
import pystac
import xarray as xr
catalog = pystac.Catalog.from_file("https://stac.dynamical.org/catalog.json")
collection = catalog.get_child("google-weathernext2-forecast-historical-virtual")
asset = collection.assets["icechunk-https"]
authorize = icechunk.containers_credentials({"https://wn.dynamical.org/chunks/": icechunk.Credentials.HttpAccess()})
repo = icechunk.Repository.open(
icechunk.http_storage(asset.href),
authorize_virtual_chunk_access=authorize,
)
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
ds["pressure_reduced_to_mean_sea_level"].sel(init_time="2024-07-04T00", lead_time="96h", ensemble_member=slice(0, 3), y=slice(10, 35), x=slice(255, 305))
# Variables with a vertical dimension live in the pressure_level group
ds_pressure = xr.open_zarr(session.store, group="pressure_level", chunks=None)
ds_pressure["geopotential_height"].sel(init_time="2024-07-04T00", lead_time="96h", pressure_level=500).mean("ensemble_member")
| min | max | units | |
|---|---|---|---|
| ensemble_member | 0 | 63 | 1 |
| init_time | 2022-01-01T00:00:00Z | Present | seconds since 1970-01-01 |
| lead_time | 21600 | 1296000 | seconds |
| x | 0 | 359.75 | degree_east |
| y | -90 | 90 | degree_north |
| pressure_level | 50 | 1000 | hPa |
Access a variable by its name (the bold identifier, e.g. ds["pressure_reduced_to_mean_sea_level"]).
Dimensions: init_time × ensemble_member × lead_time × y × x
| variable | units |
|---|---|
pressure_reduced_to_mean_sea_level
Pressure reduced to MSL (prmsl)
|
Pa |
sea_surface_temperature
Sea surface temperature (sst)NaN over land where sea surface temperature does not apply. Value changes once every 24 hours.
|
degree_Celsius |
temperature_2m
2 metre temperature (2t)
|
degree_Celsius |
total_precipitation_surface
Total precipitation (tp)Accumulated over a six-hour forecast interval. Small negative values are raw model artifacts; set values < 0 to zero.
|
kg m-2 |
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_v_100m
100 metre V wind component (100v)
|
m s-1 |
wind_v_10m
10 metre V wind component (10v)
|
m s-1 |
These variables live in the pressure_level Zarr group (e.g. pass group="pressure_level" to dynamical_catalog.open() or xr.open_zarr()).
Dimensions: init_time × ensemble_member × lead_time × y × x × pressure_level
| variable | units |
|---|---|
geopotential_height
Geopotential height (gh)
|
m |
specific_humidity
Specific humidity (q)Small negative values are raw model artifacts; set values < 0 to zero.
|
1 |
temperature
Temperature (t)
|
degree_Celsius |
vertical_velocity
Vertical velocity (w)
|
Pa s-1 |
wind_u
U component of wind (u)
|
m s-1 |
wind_v
V component of wind (v)
|
m s-1 |
Dataset licensed under CC BY 4.0.
Google WeatherNext 2 forecast data processed by dynamical.org from Google's WeatherNext 2 experimental data. © 2025 DeepMind Technologies Limited's machine learning models used to create the experimental data made available at https://developers.google.com/earth-engine/datasets/catalog/projects_gcp-public-data-weathernext_assets_weathernext_2_0_0 under CC BY 4.0 licence terms. This data is intended for experimental modelling only and is not intended, validated, or approved for real world use. Use of the third-party materials referred to in the Acknowledgements section may be governed by separate terms and conditions or license provisions. Your use of the third-party materials is subject to any such terms and you should check that you can comply with any applicable restrictions or terms and conditions before use.
Or Google WeatherNext 2 from dynamical.org.
This data product is built from Google's WeatherNext 2 experimental forecast dataset. WeatherNext 2 is a global, medium-range ensemble forecast produced by an operational version of Google DeepMind's Functional Generative Network (FGN) weather model. The Acknowledgements on Google's dataset page list third-party materials whose terms may also apply.
Modifications. dynamical.org restructures the source into an Icechunk virtual data product with dynamical.org's variable and dimension names, and converts units as the data is read: temperatures from kelvin to degrees Celsius, geopotential to geopotential height (divided by standard gravity), and total precipitation from metres of water to kg m⁻². Values are otherwise the unchanged model output.
This fixed data product contains forecasts initialized from 2022-01-01T00 through 2024-12-31T18 UTC. Forecasts from 2025 onward are in the operational WeatherNext 2 data product. It has the same variables, dimensions and coordinates, so the two can be concatenated along init_time.
This dataset is stored in Zarr format, which splits each variable into a grid of chunks — the smallest unit read from storage. 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 |
|---|---|
| init_time | 1 (6 hours) |
| ensemble_member | 4 |
| lead_time | 1 (6 hours) |
| y | 721 (180.25°) |
| x | 1440 (360°) |
| uncompressed | 15.8 MiB |
Review the validation report for variable availability, missing data, known quirks, fill values, value distributions, and sample plots.