[1]:
!test -f tropical_cyclone.bufr \
    || wget https://sites.ecmwf.int/repository/pdbufr/test-data/tropical_cyclone.bufr \
             --output-document=tropical_cyclone.bufr

How to extract tropical cyclone track with the generic reader?

[2]:
import pdbufr

The input BUFR data contains ensemble forecast of tropical cyclone tracks each message representing a storm. The messages consist of compressed subsets (one subset per ensemble member).

In this notebook we read this data with the generic reader, which is the default reader.

Example 1

Extracting the list of storm identifiers:

[3]:
df = pdbufr.read_bufr("tropical_cyclone.bufr", columns=("stormIdentifier"))
df["stormIdentifier"].unique()
[3]:
array(['27W', '70E', '71W'], dtype=object)

Example 2

Getting a track with pressure for a given storm and ensemble member:

[4]:
df = pdbufr.read_bufr(
    "tropical_cyclone.bufr",
    columns=("stormIdentifier", "ensembleMemberNumber", "latitude", "longitude", "pressureReducedToMeanSeaLevel"),
    filters={"stormIdentifier": "70E", "ensembleMemberNumber": 1},
)
df.head()
[4]:
stormIdentifier ensembleMemberNumber latitude longitude pressureReducedToMeanSeaLevel
0 70E 1 11.3 -126.0 100400.0
1 70E 1 11.6 -125.2 100400.0
2 70E 1 11.3 -125.8 100300.0
3 70E 1 NaN NaN NaN
4 70E 1 10.8 -126.0 100200.0