weather-reports 0.1.5

A collection of weather report parsers
Documentation
# weather-reports

A collection of weather report parsers

[![crates.io](https://img.shields.io/crates/v/weather-reports.svg)](https://crates.io/crates/weather-reports) [![weather-reports](https://docs.rs/weather-reports/badge.svg)](https://docs.rs/weather-reports)[![weather-reports](https://github.com/sameer/weather-reports/actions/workflows/rust.yml/badge.svg)](https://github.com/sameer/weather-reports/actions/workflows/rust.yml) [![codecov](https://codecov.io/gh/sameer/weather-reports/branch/main/graph/badge.svg?token=TPIzIZtbdq)](https://codecov.io/gh/sameer/weather-reports)

## Supported Formats

- [x] [METAR](https://en.wikipedia.org/wiki/METAR)/SPECI
  - [ ] Remark parsing
- [ ] [TAF](https://en.wikipedia.org/wiki/Terminal_aerodrome_forecast)

## Demo

```
> cargo run --release --example parse -
KSEA 290353Z 01008KT 10SM SCT200 19/09 A3004 RMK AO2 SLP179 T01940094
MetarReport {
    identifier: "KSEA",
    observation_time: ZuluDateTime {
        day_of_month: 29,
        time: ZuluTime {
            hour: 3,
            minute: 53,
        },
        is_zulu: true,
    },
    observation_validity_range: None,
    observation_type: None,
    wind: Some(
        Wind {
            direction: Some(
                0.17453292519943295,
            ),
            speed: 4.115555555555556 m^1 s^-1,
            peak_gust: None,
            variance: None,
        },
    ),
    visibility: Some(
        Visibility {
            prevailing: 16093.44 m^1,
            minimum_directional: None,
            maximum_directional: None,
        },
    ),
    runway_visibilities: [],
    runway_reports: [],
    weather: [],
    cloud_cover: [
        CloudCover {
            coverage: Scattered,
            base: Some(
                6096.0 m^1,
            ),
            cloud_type: None,
        },
    ],
    cavok: false,
    temperatures: Some(
        Temperatures {
            air: 292.15 K^1,
            dewpoint: Some(
                282.15 K^1,
            ),
        },
    ),
    pressure: Some(
        300400.0 m^-1 kg^1 s^-2,
    ),
    accumulated_rainfall: None,
    color: None,
    recent_weather: [],
    water_conditions: None,
    trends: [],
    remark: Some(
        "RMK AO2 SLP179 T01940094\n",
    ),
    maintenance_needed: false,
}
Success!
```

## Debugging

Each example generates a parser trace when the trace feature is enabled. To generate and visualize one with [pegviz](https://github.com/fasterthanlime/pegviz):

```
cargo run --release --features trace --example metar - | pegviz --output index.html && firefox index.html
```

## References

- https://sto.iki.fi/metar/
- https://aviation.stackexchange.com/questions/39482/what-is-this-weird-format-r06l-clrd62-in-metar-for-runway-being-cleared
- https://metar-taf.com/explanation
- http://www.bom.gov.au/aviation/about-us/faq/
- https://mediawiki.ivao.aero/index.php?title=METAR_explanation
- https://business.desu.edu/sites/business/files/document/16/metar_and_taf_codes.pdf
- https://meteocentre.com/doc/metar.html
- https://aviation.stackexchange.com/questions/42554/what-does-the-code-fu1fu2fu5-mean-in-this-metar
- https://library.wmo.int/doc_num.php?explnum_id=10474
- https://library.wmo.int/doc_num.php?explnum_id=10235
- https://en.wikipedia.org/wiki/METAR
- https://aviation.stackexchange.com/questions/88908/what-does-w13-s3-mean-in-this-metar-report
- http://www.ogimet.com/index.phtml.en