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 develop the transmission with the near-obsolete dataformat FM18 BUOY.
BUFR template used for moored buoy data should be now TM315008. This latter was validated in 2014. As for drifting buoys, GTS headers for moored buoy data start with character string 'IOB'.
Moored buoys - Survey on August 6th, 2016
The table here above shows the number of fixed marine stations having a WMO ID made of digits only... for which the observations were received by Meteo-France on the 6th of August. Figures are shared by the WMO code which was used: either FM13 SHIP, FM18 BUOY, FM94 BUFR with templates TM308009, 315008, 315009 or the never validated template for data buoys. Fixed platforms are excluded from column "Total buoys". This table does not refer to the number of observations which were received. Even for a same number of stations reporting their data through two different codes, the number of observations may differ (e.g. in the case of non-synoptic observations sent in BUFR but no longer in FM13... or vice versa).
One may note that only 141 moored buoys (28%) out of a total of 508 report onto the GTS with the right template (TM315008):
- observations processed by Joubeh for moored buoys are transmitted with the template devoted to drifting buoys (TM315009)… unless a mistake occurred in the allocation of the concerned WMO IDs;
- observations from moored buoys operated by Environment Canada are transmitted in FM13 only, whilst those operated by IMD (India) and KMA (Korea) are transmitted in FM18 only;
- observations from moored buoys operated by DWD, Met Office, and NOAA (partly) are still transmitted in FM13. These latter are then converted in BUFR (ship template 308009);
- NOAA/NWS reports the data of about 210 fixed marine stations, including moored buoys in FM13 SHIP. Many fixed platforms in North Sea, for which the data are sent onto the GTS by Met Office, are part of these. These data should not be re-sent onto the GTS with a different header;
- observations from Spanish moored buoys are still transmitted in BUFR according to the never validated template.
Tropical moored buoy arrays - Survey on July 3rd, 2016
The table here above shows the way through which tropical moored buoy data are sent onto the GTS (messages received at Meteo-France). BUFR messages using the never validated WMO template have not been checked. A new map, made by ECMWF on data buoy availability may be seen on the drifting buoy page. This map distinguishes moored buoys and drifting buoys (different symbols).
Buoy data received at ECMWF - Report availability for May 16th, 2016
A map is available on the drifting buoy page. This map concerns both drifting and moored buoys.
Moored buoy BUFR data - Survey on October 12th, 2014
(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 ecCodes. 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
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.json.txt
diff outfilejson.json.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.json.txt
diff outfileF90.json.txt ${BFILE}.json.txt
No difference should be found.