NetCDF: working with fieldlists

We read a NetCDF file containing 3 variables on pressure levels on a 2D latitude-longitude grid. First we ensure the example file is available.

[1]:
import earthkit.data as ekd

ekd.download_example_file("tuv_pl.nc")
[2]:
ds = ekd.from_source("file", "tuv_pl.nc").to_fieldlist()

Our NetCDF data is represented as a FieldList consisting of NetCDFFields. Field in this context means a 2D geographical coverage (horizontal slices).

Iteration

We can itearte through the fields (we use the first 3 fields for simplicity):

[3]:
for f in ds[:3]:
    print(f)
Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 1000, pressure, 0, None)
Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 850, pressure, 0, None)
Field(t, 2018-08-01 12:00:00, 2018-08-01 12:00:00, 0:00:00, 700, pressure, 0, None)

Inspecting the contents

[4]:
len(ds)
[4]:
18
[5]:
ds.ls()
[5]:
parameter.variable time.valid_datetime time.base_datetime time.step vertical.level vertical.level_type ensemble.member geography.grid_type
0 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 1000 pressure 0 None
1 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 850 pressure 0 None
2 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 700 pressure 0 None
3 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 500 pressure 0 None
4 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 400 pressure 0 None
5 t 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 300 pressure 0 None
6 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 1000 pressure 0 None
7 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 850 pressure 0 None
8 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 700 pressure 0 None
9 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 500 pressure 0 None
10 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 400 pressure 0 None
11 u 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 300 pressure 0 None
12 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 1000 pressure 0 None
13 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 850 pressure 0 None
14 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 700 pressure 0 None
15 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 500 pressure 0 None
16 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 400 pressure 0 None
17 v 2018-08-01 12:00:00 2018-08-01 12:00:00 0 days 300 pressure 0 None

Slicing

Standard Python slicing is available.

[6]:
g = ds[1]
g
[6]:
Field
number_of_values84
array_typendarray
array_dtypefloat64
variablet
unitskelvin
valid_datetime2018-08-01 12:00:00
base_datetime2018-08-01 12:00:00
step0:00:00
level850
layerNone
level_typepressure
member0