For decades, most of weather moored buoys have been reporting their data onto the GTS in FM13 SHIP code. For a few months, some of these data are converted in FM94 BUFR according to template TM308009 (B/C10 - ship data). They are so transmitted in both codes, in parallel. Tropical moored buoys (TAO, PIRATA and RAMA networks) using Argos as communication system report their data in FM18 BUOY. and FM94 BUFR in parallel. The unvalidated template for data buoys is used in this latter case. Some morred buoy networks, operated by non-meteorlogical agencies, transmit their data in BUFR only, according to the unvalidated template for buoy data. They did not spend time and money to develope the transmission with the near-obsolete dataformat FM18 BUOY.
...
(Data received and processed at Meteo-France)
CCCC | Data Prodider | FM94-BUFR | Template | FM18 BUOY only | FM13 SHIP only | Remark |
CWAO | Joubeh | 0 | 2 | 0 | ||
CWEG | MSC Canada | 0 | 0 | 2 | ||
CWHX | MSC Canada | 0 | 0 | 9 | ||
CWTO | MSC Canada | 0 | 0 | 13 | ||
CWUL | MSC Canada | 0 | 0 | 1 | ||
CWVR | MSC Canada | 0 | 0 | 16 | ||
DEMS | IMD | 0 | 18 | 0 | ||
EDZW | BSH/DWD | 0 | 0 | 4 | ||
EGRR | Met Office | 104 | TM30809 | 0 | 0 | BUFR and FM13 in parallel |
EIDB | Met Eireann | 0 | 3 | 1 | ||
KARS | CLS America | 35 | Buoy (not validated) | 0 | 0 | BUFR and FM18 in parallel |
KPML | PMEL | 2 | TM315008 | 0 | 0 | Not tet fully processed at Meteo-France |
KWBC | NDBC | 0 | 0 | 33 | ||
KWNB | NDBC | 0 | 44 | 166 | ||
LEMM | Puertos/AEMET | 13 | Buoy (not validated) | 0 | 0 | BUFR only |
LFPW | Cerema/Meteo-France | 0 | 12 | 0 | ||
LFPW | Meteo-France | 2 | TM30809 | 0 | 0 | |
LFVW | CLS Toulouse | 20 | Buoy (not validated) | 0 | 0 | BUFR and FM13 in parallel |
LGAT | HCMR/HNMS | 1 | Buoy (not validated) | 0 | 0 | BUFR only |
LIIB | ISPRA/USAM | 8 | Buoy (not validated) | 0 | 0 | BUFR only |
LPMG | IH/IPMA | 0 | 0 | 0 | ||
RKSL | KMA | 0 | 10 | 0 | ||
Total | 185 | 89 | 245 | 519 platforms in all |
1. This monitoring includes moored buoys but other fixed marine stations too.
2. Many moored buoys or fixed marine stations report their data in FM13-SHIP code. Some also report their data in BUFR (but according to ship template further to a "FM13 to BUFR" conversion). In the longer term they should report according to moored buoy template... or a more suitable template for fixed marine stations. .
How to easily encode MOORED BUOY data in BUFR, using Python or Fortran
The procedure below is just an example and other software may be used.
- Starting from a BUFR file such as the one attached to this page, view its contents in the ECMWF BUFR validator
- Install ECC. No admin rights are necessary if making a local installation (-DCMAKE_INSTALL_PREFIX=<my_installation_path>)
- Using ecCodes, get a text (JSON) dump of the BUFR file above:
- BFILE=IOBD02LFPW070000.20161107000104_81607384_F.BU
- bufr_dump -j a ${BFILE} > ${BFILE}.json
The resulting file (${BFILE}.json) can be opened in a browser.
To create a new BUFR file using PYTHON
bufr_dump -E python ${BFILE} > ${BFILE}.py
This creates a python source (${BFILE}.py, as attached here)Create a new BUFR from the Python source code
export PYTHONPATH=${PYTHONPATH}:<my_installation_path>/lib/python2.7/site-packages
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<my_installation_path>/lib
python2.7 ${BFILE}.py.txt
This creates a BUFR file (outfile.bufr)
- Compare the contents of this BUFR with the original one:
mv outfile.bufr outfilejson.bufr
bufr_dump -j a outfilejson.bufr > outfilejson.bufr.txt
diff outfilejson.bufr.txt ${BFILE}.json.txt
No difference should be found.
To create a new BUFR from FORTRAN
bufr_dump -E fortran ${BFILE} > ${BFILE}.F90
This creates a Fortran source (${BFILE}.F90, as attached here)Create a new BUFR from the Fortran source code
gfortran ${BFILE}.F90 -o ${BFILE}.F90.x -L<my_installation_path>/lib -leccodes_f90 -leccodes -I<my_installation_path>/include
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<my_installation_path>/lib
./${BFILE}.F90.x
This creates a BUFR file (outfile.bufr)
Compare the contents of this BUFR with the original one:
mv outfile.bufr outfileF90.bufr
bufr_dump -j a outfileF90.bufr > outfileF90.bufr.txt
diff outfileF90.bufr.txt ${BFILE}.json.txt
No difference should be found.