These examples show how to extract data in a table format from BUFR files.
These conditions are combined together by the logical AND operator. So a row of data is only added to the results when all the conditions match.
Sample data
This set of examples is based on file temp.bufr (click here for details).
File | Structure | Description |
---|---|---|
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 tacks. Each ensemble member is encoded as a compressed subset within the message. |
Extracting a single parameter
This set of examples is based on file temp.bufr (click here for details). This set of examples are based on file temp.bufr (see above).
Example | Filter | Results | Comments |
---|---|---|---|
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 has 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 |
Extracting with a single coordinate condition
This set of examples is based on file temp.bufr (click here for details).
Example | Filter | Results | Comments |
---|---|---|---|
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 the we only want the matching temperature values which appear inside a pressure block (in these messages this is always the case). By using the coordinate condition pressure will be extracted as well 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 |
Extracting multiple parameters
This set of examples is based on file temp.bufr (click here for details).
Example | Filter | Results | Comments |
---|---|---|---|
For all the messages: extract the first wind speed and wind direction values | extract_data: on 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 | |
For all the messages: extract the first wind speed and wind direction values and also extract their pressure | extract_data: on 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 |
Extracting 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 supposed to conceptually be nested, i.e. there is an inner coordinate and the other, inner coordinates, are nested in it. This puts a constrain on the order the coordinate conditions are specified: the outer coordinate has to be specified first then the other coordinates 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:
Task | Filter | Results | Comments |
---|---|---|---|
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 |
| |
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 |
Tropical cyclone tracks
This set of examples is based on file tropical_cyclone.bufr (click here for details).
Example | Filter | Results |
---|---|---|
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 |