Build fieldlist from dicts in a loop

Distinct latitudes/longitudes

In this example each field is defined by a dict using generic metadata keys. The latitudes and longitudes specified as disctinct values, the 2D field geometry will be automatically built from them.

[1]:
prototype = {
    "geography": {"latitudes": [10.0, 0.0, -10.0], "longitudes": [20, 40.0]},
    "values": [1, 2, 3, 4, 5, 6],
    "time": {"valid_datetime": "2018-08-01T09:00:00Z"},
}

d = [
    {"parameter": {"variable": "t"}, "vertical": {"level": 500}, **prototype},
    {"parameter": {"variable": "t"}, "vertical": {"level": 850}, **prototype},
    {"parameter": {"variable": "u"}, "vertical": {"level": 500}, **prototype},
    {"parameter": {"variable": "u"}, "vertical": {"level": 850}, **prototype},
    {"parameter": {"variable": "d"}, "vertical": {"level": 850}, **prototype},
    {"parameter": {"variable": "d"}, "vertical": {"level": 600}, **prototype},
]

Create a fieldlist from the data above in a loop.

[2]:
from earthkit.data import Field, create_fieldlist

ds = create_fieldlist([Field.from_dict(f) for f in d])
[3]:
ds.ls()
[3]:
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 09:00:00+00:00 2018-08-01 09:00:00+00:00 0 days 500 unknown None _distinct_ll
1 t 2018-08-01 09:00:00+00:00 2018-08-01 09:00:00+00:00 0 days 850 unknown None _distinct_ll
2 u 2018-08-01 09:00:00+00:00 2018-08-01 09:00:00+00:00 0 days 500 unknown None _distinct_ll
3 u 2018-08-01 09:00:00+00:00 2018-08-01 09:00:00+00:00 0 days 850 unknown None _distinct_ll
4 d 2018-08-01 09:00:00+00:00 2018-08-01 09:00:00+00:00 0 days 850 unknown None _distinct_ll
5 d 2018-08-01 09:00:00+00:00 2018-08-01 09:00:00+00:00 0 days 600 unknown None _distinct_ll
[4]:
ds[0]
[4]:
Field
number_of_values6
array_typendarray
array_dtypeint64
variablet
unitsdimensionless
valid_datetime2018-08-01 09:00:00+00:00
base_datetime2018-08-01 09:00:00+00:00
step0:00:00
level500
layerNone
level_typeunknown
memberNone
grid_specNone
grid_type_distinct_ll
shape(3, 2)
area(10.0, 20.0, -10.0, 40.0)