MyNixOS website logo
Description

Fast Decoding of SYNOP (Surface Synoptic Observations) Meteorological Messages.

Decode raw SYNOP (surface synoptic observations) messages into data frames, extracting data from Sections 0, 1, and 3, including temperature, dew point, pressure, wind, clouds, and precipitation. Available functions to download SYNOP messages from Ogimet <https://www.ogimet.com/> if needed. The decoding logic follows the specifications defined in the World Meteorological Organization (2019) "Manual on Codes, Volume I.1 (WMO-No. 306)".

synopR

Overview

The goal of synopR is to provide a simple and fast tool for decoding FM 12 SYNOP (Report of surface observation from a fixed land station) messages, following the WMO standards (World Meteorological Organization (WMO). Manual on Codes (WMO-No. 306), Volume I.1. Geneva, 2019.). It focuses on extracting data from Sections 0, 1 and 3.

synopR is dependency-free! Only R (>= 4.1.0) is needed.

Installation

Install from CRAN:

install.packages("synopR")

Or install the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("ezequiel1593/synopR", build_vignettes = TRUE)

Features

  • More than 50 meteorological parameters can be obtained in just seconds. A detailed guide of data extracted by show_synop_data() is available in the vignette "Extracted_data_reference".

  • You can check the structural integrity of your SYNOP messages before decoding:

library(synopR)

check_synop(c("AAXX 01183 87736 11463 41813 10330 20148 39982 40072 5//// 60001 70700 83105 333 56600 83818=",
              "AAXX 01183 87736 11463 41813 10330 20148 39982 4007 5//// 60001 70700 83105 333 56600 83818="))
  • Download raw SYNOP messages from Ogimet with download_from_ogimet(), or download, check and decode all at once with direct_download_from_ogimet().

  • The package includes a parser specifically designed for the comma-separated format used by Ogimet:

library(synopR)

raw_data <- "87736,2026,01,01,18,00,AAXX 01183 87736 11463 41813 10330 20148 39982 40072 5//// 60001 70700 83105 333 56600 83818="

# Parse and decode
decoded <- parse_ogimet(raw_data) |> show_synop_data()

print(decoded)

Performance

show_synop_data(), the core function, is completely vectorized. It means it's super fast!


45k SYNOP messages decoded in just 13 seconds.

Constraints & Assumptions

  • Sections: The package does not support sections 222 (maritime data), 444 (data for clouds with base below station level) and 555 (data for national use, which is quietly discarded).
  • Time of observation: Observations are assumed to occur at the time indicated in Section 0 (Group 9 from Section 1 is currently ignored).
  • Humidity: Group 2 (Section 1) contains dew point, not relative humidity.
  • Geopotential height: Only pressure levels 850, 700 and 500 hPa are supported.
  • Trace Precipitation: They are converted to 0.01 (mm).
  • Groups not supported: Groups starting with 54 and 9 from Section 3 are currently ignored.

Issues

Feel free to report any issue you may find: Github

  • "NA introduced by coercion" are generally associated with a specific part of the SYNOP message incorrectly codified.

Documentation

The complete documentation, including function references and tutorials is available at: https://ezequiel1593.github.io/synopR/

Citation

Elias E (2026). synopR: Fast Decoding of SYNOP (Surface Synoptic Observations) Meteorological Messages. R package version 1.0.0, https://ezequiel1593.github.io/synopR/.

Metadata

Version

1.0.0

License

Unknown

Platforms (80)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    uefi
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-uefi
  • aarch64-windows
  • aarch64_be-none
  • arc-linux
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-linux
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • sh4-linux
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-uefi
  • x86_64-windows