K-pattern buoy - Photo UK Met Office

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)

CCCCData ProdiderFM94-BUFRTemplateFM18 BUOY onlyFM13 SHIP onlyRemark
CWAOJoubeh0 20 
CWEGMSC Canada0 02 
CWHXMSC Canada0 09 
CWTOMSC Canada0 013 
CWULMSC Canada0 01 
CWVRMSC Canada0 016 
DEMSIMD0 180 
EDZWBSH/DWD0 04 
EGRRMet Office104TM3080900BUFR and FM13 in parallel
EIDBMet Eireann0 31 
KARSCLS America35Buoy (not validated)00BUFR and FM18 in parallel
KPMLPMEL2TM31500800Not tet fully processed at Meteo-France
KWBCNDBC0 033 
KWNBNDBC0 44166 
LEMMPuertos/AEMET13Buoy (not validated)00BUFR only
LFPWCerema/Meteo-France0 120 
LFPWMeteo-France2TM3080900 
LFVWCLS Toulouse20Buoy (not validated)00BUFR and FM13 in parallel
LGATHCMR/HNMS1Buoy (not validated)00BUFR only
LIIBISPRA/USAM8Buoy (not validated)00BUFR only
LPMGIH/IPMA0 00 
RKSLKMA0 100 
 Total185 89245519 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.

  1. Starting from a BUFR file such as the one attached to this page, view its contents in the ECMWF BUFR validator
  2. Install ecCodes. No admin rights are necessary if making a local installation (-DCMAKE_INSTALL_PREFIX=<my_installation_path>)
  3. Using ecCodes, get a text (JSON) dump of the BUFR file above:
    1. BFILE=IOBD02LFPW070000.20161107000104_81607384_F.BU
    2. bufr_dump -j a ${BFILE} > ${BFILE}.json
      The resulting file (${BFILE}.json) can be opened in a browser.
  4. To create a new BUFR file using PYTHON

    1. bufr_dump -E python ${BFILE} > ${BFILE}.py
      This creates a python source (${BFILE}.py, as attached here)

    2. Create a new BUFR from the Python source code

      1. export PYTHONPATH=${PYTHONPATH}:<my_installation_path>/lib/python2.7/site-packages

      2. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<my_installation_path>/lib

      3. python2.7 ${BFILE}.py
        This creates a BUFR file (outfile.bufr)

    3. Compare the contents of this BUFR with the original one:
      1. mv outfile.bufr outfilejson.bufr

      2. bufr_dump -j a outfilejson.bufr > outfilejson.json.txt

      3. diff outfilejson.json.txt ${BFILE}.json.txt
        No difference should be found.

  5. To create a new BUFR from FORTRAN

    1. bufr_dump -E fortran ${BFILE} > ${BFILE}.F90
      This creates a Fortran source (${BFILE}.F90, as attached here)

    2. Create a new BUFR from the Fortran source code

      1. gfortran ${BFILE}.F90 -o ${BFILE}.F90.x -L<my_installation_path>/lib -leccodes_f90 -leccodes -I<my_installation_path>/include

      2. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<my_installation_path>/lib

      3. ./${BFILE}.F90.x
        This creates a BUFR file (outfile.bufr)

    3. Compare the contents of this BUFR with the original one:

      1. mv outfile.bufr outfileF90.bufr

      2. bufr_dump -j a outfileF90.bufr > outfileF90.json.txt

      3. diff outfileF90.json.txt ${BFILE}.json.txt
        No difference should be found.