Metview's documentation is now on readthedocs!

These examples show how to extract data in a tabular format using the BUFR filter interface.

Sample data for the examples

This is the list of the BUFR files used in the examples below:

FileStructureDescription

Classic radiosonde data. A message contains a vertical profile for a given station with various parameters (e.g. temperature, wind etc.) on a set of pressure levels.

Tropical cyclone data. A message contains a full ensemble forecast with minimum mean sea level pressure and maximum wind speed values along the forecast tracks. Each ensemble member is encoded as a compressed subset within the message.


Extract a single parameter

This set of examples is based on file temp.bufr (click here for details).

ExampleFilterResultsComments

For all the messages: extract the first non missing temperature value

extract_data: on
parameter_1: airTemperature

By default missing values are ignored in data extraction (see option MISSING DATA)
For all the messages: extract the first (rank=1) temperature value (if missing it is ignored)
extract_data: on
parameter_1: airTemperature
parameter_rank_1: 1

Here we explicitly asked for the first temperature value. It is a missing value in many of the messages so we have less resulting rows that in the previous example.
For all the messages: extract the first (rank=1) temperature value if it is greater than 300 K
extract_data: on
parameter_1: airTemperature
parameter_rank_1: 1
parameter_operator_1: >
parameter_value_1: 300


For all the messages: extract the first temperature value which is greater than 300 K
extract_data: on
parameter_1: airTemperature
parameter_operator_1: >
parameter_value_1: 300


For station 78016: extract all the temperature values


identifier_value: 78016
extract_data: on
parameter_1: airTemperature
extract_mode: all



Extract with a single coordinate condition

This set of examples is based on file temp.bufr (click here for details).

ExampleFilterResultsComments

For all the messages: extract the first temperature value which is greater than 300 K and also extract the pressure on which it occurs

extract_data: on
parameter_1: airTemperature
parameter_operator_1: >
parameter_value_1: 300
coordinate_condition_count: 1
coordinate_1: pressure

Here we explicitly say that we only want the matching temperature values which appear inside a pressure block (for these messages this is always the case). By using the coordinate condition pressure will also be extracted because the EXTRACT_COORDINATE option is On by default.
For all the messages: extract the first temperature value which is greater than 300 K and the pressure is less than 950 hPa
extract_data: on
parameter_1: airTemperature
parameter_operator_1: >
parameter_value_1: 300
coordinate_condition_count: 1
coordinate_1: pressure
coordinate_operator_1: <
coordinate_value_1: 95000

Here we further refined the coordinate condition.
For all the messages: extract the temperature value on the 500 hPa pressure level
extract_data: on
parameter_1: airTemperature
coordinate_condition_count: 1
coordinate_1: pressure
coordinate_operator_1: =
coordinate_value_1: 50000


For station 78016: extract the temperature on the second pressure level


identifier_value: 78016
extract_data: on
parameter_1: airTemperature
coordinate_condition_count: 1
coordinate_1: pressure
coordinate_rank_1: 2

Here we restricted the filter for one station (message) only and  used a rank condition for the coordinate.
For station 78016: extract the temperature on the first 6 pressure levels
identifier_value: 78016
extract_data: on
parameter_1: airTemperature
coordinate_condition_count: 1
coordinate_1: pressure
coordinate_rank_1: 1/2/3/4/5/6
extract_mode: all

For coordinate rank a list of values can be specified.
For station 78016: extract the temperature on the 925, 850 and 700 hPa pressure levels
identifier_value: 78016
extract_data: on
parameter_1: airTemperature
coordinate_condition_count: 1
coordinate_1: pressure
coordinate_operator_1: =
coordinate_value_1: 92500/85000/70000
extract_mode: all


Extract multiple parameters

This set of examples is based on file temp.bufr (click here for details).

ExampleFilterResultsComments

For all the messages: extract the first wind speed and wind direction values

extract_data: on
parameter_count: 2 parameter_1: windDirection
parameter_2: windSpeed

The order of the parameters in extraction must match their order of appearance in the message. Otherwise the data alignment does not work properly. In our BUFR messages windDirection precedes windSpeed, so we have to use the same ordering in the filter definition.

For all the messages: extract the first wind speed and wind direction values and also extract their pressure
extract_data: on
parameter_count: 2 parameter_1: windDirection
parameter_2: windSpeed
coordinate_condition_count: 1
coordinate_1: pressure


For all the messages: extract wind speed and wind direction values on the 500 hPa pressure level
extract_data: on
parameter_1: windDirection
parameter_2: windSpeed
coordinate_condition_count: 1
coordinate_1: pressure
coordinate_operator_1: =
coordinate_value_1: 50000


Extract with multiple (nested) coordinate conditions

This set of examples is based on file temp.bufr (click here for details).

When we use multiple coordinate conditions these are regarded as nested, i.e. the first coordinate specified is the outer coordinate, the next inner coordinate is nested in it and so on. This puts a constraint on the order the coordinate conditions: the outer coordinate has to be specified first then the other coordinates must follow in the nesting order.

In the examples below we will work with two coordinates to extract radiosonde data on certain levels: pressure will be the outer coordinate and verticalSoundingSignificance, which defines the type of the pressure levels, the inner coordinate. It reflects how a pressure block is built up in our radiosonde BUFR file:

TaskFilterResultsComments

For station 78016: extract all the temperature values on standard pressure levels

identifier_value: 78016
extract_data: on
parameter_1: airTemperature
coordinate_condition_count: 2
coordinate_1: pressure
coordinate_2: verticalSoundingSignificance
coordinate_operator_2: =
coordinate_value_2: 32
extract_mode: all

verticalSoundingSignificance is a FLAG TABLE (bit-vector) and its value is 32 for standard pressure levels:


For station 78016: extract all the temperature values on temperature significant levels where the pressure is less than 500 hPa
identifier_value: 78016
extract_data: on
parameter_count: 1
parameter_1: airTemperature 
coordinate_condition_count: 2
coordinate_1: pressure
coordinate_operator_1: <
coordinate_value_1: 50000
coordinate_2: verticalSoundingSignificance
coordinate_operator_2: =
coordinate_value_2: 4/68
extract_mode: all


Extract tropical cyclone tracks

This set of examples is based on file tropical_cyclone.bufr (click here for details).

ExampleFilterResults

For the first message (storm IN-FA) extract the storm centre pressure values along the track for ensemble number =2

message_index: 1
custom_condition_count: 1
custom_value_1: ensembleMemberNumber
custom_operator_1: =
custom_value_1: 2
extract_data: on
parameter_count: 1
parameter_1: pressureReducedToMeanSeaLevel
extract_mode: all