GRIB encoder
An encoder is used to generate data in a suitable format that can be written/added to a target. Encoders are typically used implicitly via to_target() but we can also instantiate an object and work with it directly.
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
2t |
2020-05-13 12:00:00 |
2020-05-13 12:00:00 |
0 days |
0 |
surface |
0 |
regular_ll |
<earthkit.data.encoders.grib.GribEncoder at 0x13549e7b0>
The method to call is encode(). The template argument can be a GRIB field. In the example below encode() will simply create a copy (clone) of the underlying GRIB handle in the field.
<earthkit.data.encoders.grib.GribEncodedData at 0x1071e0440>
The resulting object can be used in various ways.
b'GRIB\x00\x02\x0e\x01\x00\x00'
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
2t |
2020-05-13 12:00:00 |
2020-05-13 12:00:00 |
0 days |
0 |
surface |
0 |
regular_ll |
Specifying new values
To replace the values in the resulting fields we need to use the values keyword argument.
(np.float64(315.4599609375), np.float64(316.4599609375))
Specifying a field
When a field is specified as the data it is used as a template.
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
msl |
2021-05-14 12:00:00 |
2021-05-14 12:00:00 |
0 days |
0 |
surface |
0 |
regular_ll |
When both data and template are specified, the values from the field in data will be copied into the GRIB message created from the template.
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
2t |
2021-05-14 12:00:00 |
2021-05-14 12:00:00 |
0 days |
0 |
surface |
0 |
regular_ll |
We cannot use data, values and template together.
Cannot provide data, values and template together
Encoding without a template
It is possible to encode GRIB data without providing a template using only values and metadata. This is an experimental feature and only works for certain metadata keys and the grid has to be either global lat-lon or reduced Gaussian grid. The geography is inferred from the shape of the specified values.
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
2t |
2025-01-09 12:00:00 |
2025-01-08 12:00:00 |
1 days |
2 |
height_above_ground_level |
None |
regular_ll |
(np.float64(4.244827050861318), np.float64(4.244751930236816))
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
t |
2025-01-09 12:00:00 |
2025-01-08 12:00:00 |
1 days |
700 |
pressure |
None |
regular_ll |
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
metadata.isOctahedral |
metadata.N |
| 0 |
2t |
2025-01-09 12:00:00 |
2025-01-08 12:00:00 |
1 days |
2 |
height_above_ground_level |
None |
reduced_gg |
1 |
96 |
Using preset options
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
2t |
2025-01-09 |
2025-01-08 12:00:00 |
0 days 12:00:00 |
0 |
surface |
0 |
regular_ll |
|
parameter.variable |
time.valid_datetime |
time.base_datetime |
time.step |
vertical.level |
vertical.level_type |
ensemble.member |
geography.grid_type |
| 0 |
2t |
2025-01-09 12:00:00 |
2025-01-08 12:00:00 |
1 days |
0 |
surface |
0 |
regular_ll |
Working with fieldlists
metadata.shortName metadata.step
0 2t 18
metadata.shortName metadata.step
0 msl 18