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

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="))
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!

Benchmark
45k SYNOP messages decoded in just 13 seconds.

Constraints & Assumptions

Issues

Feel free to report any issue you may find: Github

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/.