NOAA GEFS analysis on dynamical.org in earthmover marketplace: https://app.earthmover.io/marketplace/6970566255e09e23d5bcbbc0?tab=dataset
Open an icechunk store in gdalxarray, using the icechunk GDAL driver
# docker run --rm -ti ghcr.io/hypertidy/gdal-r-python:dev
## uv pip install gdalxarray (if docker image not updated yet)
import xarray
import os
os.environ["AWS_NO_SIGN_REQUEST"] = "YES"
os.environ["AWS_REGION"] = "us-west-2"
import xarray
ds = xarray.open_dataset("/vsis3/dynamical-noaa-gefs/noaa-gefs-analysis/v0.1.2.icechunk", engine = "gdalxarray")
<xarray.Dataset> Size: 7TB
Dimensions: (latitude: 721,
longitude: 1440, time: 77323)
Coordinates:
* latitude (latitude) float64 6kB 90.0 ....
* longitude (longitude) float64 12kB -180...
* time (time) datetime64[ns] 619kB 2...
Data variables: (12/23)
categorical_freezing_rain_surface (time, latitude, longitude) float32 321GB ...
categorical_ice_pellets_surface (time, latitude, longitude) float32 321GB ...
categorical_rain_surface (time, latitude, longitude) float32 321GB ...
categorical_snow_surface (time, latitude, longitude) float32 321GB ...
downward_long_wave_radiation_flux_surface (time, latitude, longitude) float32 321GB ...
downward_short_wave_radiation_flux_surface (time, latitude, longitude) float32 321GB ...
... ...
temperature_2m (time, latitude, longitude) float32 321GB ...
total_cloud_cover_atmosphere (time, latitude, longitude) float32 321GB ...
wind_u_100m (time, latitude, longitude) float32 321GB ...
wind_u_10m (time, latitude, longitude) float32 321GB ...
wind_v_100m (time, latitude, longitude) float32 321GB ...
wind_v_10m (time, latitude, longitude) float32 321GB ...
Attributes:
attribution: NOAA NWS NCEP GEFS data processed by dynamical.org f...
dataset_id: noaa-gefs-analysis
dataset_version: 0.1.2
description: Weather analysis from the Global Ensemble Forecast S...
license: CC-BY-4.0
name: NOAA GEFS analysis
spatial_domain: Global
spatial_resolution: 0.25 degrees (~20km)
time_domain: 2000-01-01 00:00:00 UTC to Present
time_resolution: 3.0 hours
note that the above is chunked like
but we can't set
chunks = {}atm (iiuc) - workaround is togdal mdim convert {dsn} **gefs.vrt* --config etc(that worked), and so see that extracting values in a temporal direction is fast (don't try to extract a single time slice):