Skip to content

cnmetlab/pymetaf

Repository files navigation

pymetaf

Python package PyPI version contributions welcome

This is a python package to parse raw METAR and TAF report text.

Installation

  1. Clone this repository and run $ python setup.py install in your terminal.
  2. Use Pip $ pip install pymetaf

Usage

Parse METAR text

>>> from pymetaf import parse_text

>>> text = 'METAR ZYAS 250500Z 21009G14MPS 6000 NSC 18/08 Q1018 NOSIG'

>>> parse_text(text, 2021, 5)
{'kind': 'METAR',
 'icao': 'ZYAS',
 'datetime': '2021-05-25T05:00:00+00:00',
 'wind_direction': 210,
 'wind_direction_units': 'degree',
 'wind_speed': 9,
 'wind_speed_units': 'm/s',
 'gust': 14,
 'wind_direction_range': None,
 'cavok': False,
 'visibility': 6000,
 'visibility_units': 'm',
 'temperature': 18,
 'dew_temperature': 8,
 'temperature_units': 'degree C',
 'qnh': 1018,
 'qnh_units': 'hPa',
 'cloud': [{'cloud_mask': 0,
   'cloud_height': None,
   'cloud_height_units': 'm',
   'cloud_type': None}],
 'weather': ['Clear Sky'],
 'auto': False}

Validate METAR format

🎉 100% Detection Rate - Validated on 120,727 real-world anomalous METAR reports!

>>> from pymetaf import validate_metar

>>> # Valid METAR
>>> metar = "METAR ZBAA 311400Z 01002MPS CAVOK 14/12 Q1009 NOSIG="
>>> is_valid, error_msg = validate_metar(metar)
>>> print(is_valid)
True

>>> # Invalid METAR (wrong QNH format)
>>> metar = "METAR ZBTJ 290200Z 35009MPS CAVOK M04/M27 Q102NOSIG="
>>> is_valid, error_msg = validate_metar(metar)
>>> print(is_valid)
False
>>> print(error_msg)
Invalid QNH format: Q102NOSIG

>>> # Strict mode (no RMK allowed)
>>> metar_with_rmk = "METAR RCMQ 230900Z 25008KT 9999 FEW010 Q1009 NOSIG RMK A2982="
>>> is_valid, error_msg = validate_metar(metar_with_rmk, strict_mode=True)
>>> print(is_valid)
False
>>> print(error_msg)
RMK remarks section not allowed in strict mode

The validator can detect 30+ types of format errors including:

  • Missing/invalid report type, ICAO code, time group
  • Wind group errors (format, spacing, units)
  • QNH format errors
  • Invalid characters and line breaks
  • Spelling errors (EMPO, ECMG, NOSI, OSIG, etc.)
  • RMK section anomalies
  • And many more...

Enjoy it!

About

A python package for parsing metar & taf raw text

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages