Xarray engine: 2D wave spectra dimensions

This notebook demonstrates how earthkit-data manages parameters related to 2D wave spectra.

[1]:
import earthkit.data as ekd

We analyse a 2D wave spectra product at 2025-12-15 00 UTC and 03 UTC.

A specific feature of this dataset is that the fields are additionally indexed by

  • parameter.wave_direction

  • parameter.wave_frequency

[2]:
fl = ekd.from_source("sample", "2d-wave-spectra_an.grib").to_fieldlist()

[3]:
fl.ls(extra_keys=["parameter.wave_direction", "parameter.wave_frequency"]).iloc[[0, 1, -2, -1]]
[3]:
parameter.variable time.valid_datetime time.base_datetime time.step vertical.level vertical.level_type ensemble.member geography.grid_type parameter.wave_direction parameter.wave_frequency
0 2dfd 2025-12-15 00:00:00 2025-12-15 00:00:00 0 days 0 mean_sea 0 regular_ll 5.0 0.034523
1 2dfd 2025-12-15 00:00:00 2025-12-15 00:00:00 0 days 0 mean_sea 0 regular_ll 15.0 0.034523
2086 2dfd 2025-12-15 03:00:00 2025-12-15 03:00:00 0 days 0 mean_sea 0 regular_ll 345.0 0.497852
2087 2dfd 2025-12-15 03:00:00 2025-12-15 03:00:00 0 days 0 mean_sea 0 regular_ll 355.0 0.497852
[4]:
fl[0]
[4]:
Field
number_of_values84
array_typendarray
array_dtypefloat64
variable2dfd
standard_nameunknown
long_name2D wave spectra (single)
unitsmeter ** 2 * second / radian
wave_direction5.0
wave_direction_index0
wave_direction_bounds(0.0, 10.0)
wave_direction_unitsdegree
wave_frequency0.034523
wave_frequency_index0
wave_frequency_bounds(0.032917, 0.036208)
wave_frequency_units1 / second
valid_datetime2025-12-15 00:00:00
base_datetime2025-12-15 00:00:00
step0:00:00
level0
layerNone
level_typemean_sea
member0
grid_specNone
grid_typeregular_ll
shape(7, 12)
area(90.0, 0.0, -90.0, 330.0)

Conversion to Xarray is straightforward:

[5]:
ds = fl.to_xarray()
ds
[5]:
<xarray.Dataset> Size: 1MB
Dimensions:                  (wave_direction: 36, wave_frequency: 29,
                              forecast_reference_time: 2, latitude: 7,
                              longitude: 12)
Coordinates:
  * wave_direction           (wave_direction) float64 288B 5.0 15.0 ... 355.0
  * wave_frequency           (wave_frequency) float64 232B 0.03452 ... 0.4979
  * forecast_reference_time  (forecast_reference_time) datetime64[ns] 16B 202...
  * latitude                 (latitude) float64 56B 90.0 60.0 ... -60.0 -90.0
  * longitude                (longitude) float64 96B 0.0 30.0 ... 300.0 330.0
Data variables:
    2dfd                     (wave_direction, wave_frequency, forecast_reference_time, latitude, longitude) float64 1MB ...
Attributes:
    Conventions:  CF-1.8
    institution:  ECMWF