Skip to main content

NOAA Global Forecast System (GFS)

Original Data​

The origianl dataset is located at https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast

The Global Forecast System (GFS) is a National Centers for Environmental Prediction (NCEP) weather forecast model that generates data for dozens of atmospheric and land-soil variables, including temperatures, winds, precipitation, soil moisture, and atmospheric ozone concentration. The system couples four separate models (atmosphere, ocean model, land/soil model, and sea ice) that work together to accurately depict weather conditions.

Earthmover maintains an Arraylake of GFS data for demo purposes. The dataset begins on 2024-05-12 and is updated every six hours following the GFS forecast cycle.

Arraylake Repo​

The GFS Arraylake repo is called earthmover-demos/gfs and is available to browse at https://app.earthmover.io/earthmover-demos/gfs.

There are three sub-groups within the repo:

  • solar - A set of surface variables relevant to solar energy forecasting, chunked using an isotropic schema suitable for both spatial and temporal queries.
  • timeseries - The same data, but optimized more for timeseries queries.
  • 2023 - A static datastet of a single surface temperature temperature variable.

Open Repo and explore contents​

from arraylake import Client
client = Client()
repo = client.get_repo("earthmover-demos/gfs")
repo
Output
<arraylake.repos.v1.Repo 'earthmover-demos/gfs'>
ds = repo.to_xarray('solar')
print(ds)
Output
<xarray.Dataset> Size: 5TB
Dimensions: (longitude: 1440, latitude: 721, time: 1111, step: 209)
Coordinates:
* latitude (latitude) float64 6kB 90.0 89.75 89.5 ... -89.5 -89.75 -90.0
* longitude (longitude) float64 12kB 0.0 0.25 0.5 0.75 ... 359.2 359.5 359.8
* step (step) timedelta64[ns] 2kB 00:00:00 01:00:00 ... 16 days 00:00:00
* time (time) datetime64[ns] 9kB 2024-05-12T18:00:00 ... 2025-02-14T0...
Data variables:
gust (longitude, latitude, time, step) float32 964GB ...
prate (longitude, latitude, time, step) float32 964GB ...
r2 (longitude, latitude, time, step) float32 964GB ...
t2m (longitude, latitude, time, step) float32 964GB ...
tcc (longitude, latitude, time, step) float32 964GB ...
Attributes:
description: GFS data ingested for forecasting demo

Spatial Query and Plot​

Here we find a specific forecast and make a global map of surface temperature humidity.

ds.t2m.sel(time="2024-06-01", method="nearest").isel(step=4).plot(x='longitude', robust=True)
Output
<matplotlib.collections.QuadMesh at 0x7ff9744d7b90>

png

Timseries Query and Plot​

Here we extract the forecast at a specific location.

ds.t2m.sel(longitude=255, latitude=40, time="2024-09-04", method="nearest").plot()
Output
[<matplotlib.lines.Line2D at 0x7ff97447c650>]

png