MetarParserCore 1.1.0

dotnet add package MetarParserCore --version 1.1.0                
NuGet\Install-Package MetarParserCore -Version 1.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MetarParserCore" Version="1.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MetarParserCore --version 1.1.0                
#r "nuget: MetarParserCore, 1.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MetarParserCore as a Cake Addin
#addin nuget:?package=MetarParserCore&version=1.1.0

// Install MetarParserCore as a Cake Tool
#tool nuget:?package=MetarParserCore&version=1.1.0                

MetarParserCore

A .NET 6.0 library intended for parsing raw METAR data. Current version can parse METAR and TREND reports. Nuget package: https://www.nuget.org/packages/MetarParserCore/

Getting started

This library is easy to use. Just follow exanple below:

// Input raw METAR string
var raw = "UWKD 291500Z 32003MPS CAVOK 18/02 Q1019 R29/CLRD70 NOSIG RMK QFE753/1004=";
// Initialize METAR parser
var metarParser = new MetarParser();
// Parse raw METAR
var airportMetar = metarParser.Parse(raw);
// Serialization using Newtonsoft.Json
var serializedResult = JsonConvert.SerializeObject(airportMetar);

Types overview

Base types
Classes Description
ReportBase Base abstract class for all meteorological reports.
Metar General METAR data class. Any property of this class could be null. Inhereted from ReportBase.
<a name="report-base"/>Structure of ReportBase
Property name Type Description
ReportType enum ReportType METAR report type
IsNil bool Report is empty
Month enum Month Current month
Modifier enum MetarModifier METAR modifier
SurfaceWind SurfaceWind Info about surface wind
PrevailingVisibility PrevailingVisibility Info about visibility
PresentWeather WeatherPhenomena[] Special weather conditions
CloudLayers CloudLayer[] Info about clouds (Cloud layers)
ParseErrors string[] Array of parse errors
Unrecognized string[] Unrecognized tokens by METAR TokenRecognizer
<a name="metar"/>Structure of Metar
Property name Type Description
Airport string Airport ICAO code
ObservationDayTime ObservationDayTime Date and time by Zulu of the observation
RunwayVisualRanges RunwayVisualRange[] Info about visibility on runways (RVR)
Temperature TemperatureInfo Information about temperature
AltimeterSetting AltimeterSetting Information about air pressure
RecentWeather WeatherPhenomena Recent weather info
WindShear WindShear Wind shear info
Motne Motne[] Info about runway conditions
SeaCondition SeaCondition Info about sea-surface temperature and state
Trends Trend[] Information about changes of weather forecast
IsDeneb bool Fog dispersal operations are in progress
MilitaryWeather MilitaryWeather Military airfield weather (represents in color codes)
Remarks string Additional remarks (RMK)
<a name="surface-wind"/>Structure of SurfaceWind
Property name Type Description
Direction int Current wind direction (heading)
IsVariable bool Sign if wind has variable direction (VRB)
Speed int Speed of the wind
GustSpeed int Max wind speed or gust speed
WindUnit enum WindUnit Type of wind unit
ExtremeWindDirections ExtremeWindDirections Info about extreme wind directions
<a name="prevailing-visibility"/>Structure of PrevailingVisibility
Property name Type Description
IsCavok bool Sign if visibility marked as CAVOK. Means Ceiling and Visibility OK
VisibilityInMeters VisibilityInMeters Prevailing visibility in meters
VisibilityInStatuteMiles VisibilityInStatuteMiles Prevailing visibility in statute miles
<a name="weather-phenomena"/>Structure of WeatherPhenomena
Property name Type Description
WeatherCondition enum WeatherCondition Ordered array of weather conditions
<a name="cloud-layer"/>Structure of CloudLayer
Property name Type Description
CloudType enum CloudType Cloud type
CloudAltitude int Cloud altitude
ConvectiveCloudType enum ConvectiveCloudType Convective cloud type
IsCloudBelow bool Cloud below airport (in mountain airports)
<a name="observation-day-time"/>Structure of ObservationDayTime
Property name Type Description
Day int Day of the current month
Time Time Time of the observation
<a name="runway-visual-range"/>Structure of RunwayVisualRange
Property name Type Description
RunwayNumber string Number of the current runway
VisibilityValue int RVR value in meters/feets (min)
UnitType enum RvrUnitType Unit type of the current RVR
MeasurableBound enum MeasurableBound Mark of the measurement area
RvrTrend enum RvrTrend Rvr trend
<a name="temperature-info"/>Structure of TemperatureInfo
Property name Type Description
Value int Temperature value in Celsius
DewPoint int Temperature dew point in Celsius
<a name="altimeter-setting"/>Structure of AltimeterSetting
Property name Type Description
UnitType enum AltimeterUnitType Altimeter unit type
Value int Altimeter value
<a name="wind-shear"/>Structure of WindShear
Property name Type Description
IsAll bool Wind shear on all runways
Type enum WindShearType Wind shear type
RunwayNumber string Runway number
<a name="motne"/>Structure of Motne
Property name Type Description
RunwayNumber string Runway number
Specials enum MotneSpecials MOTNE special sign
TypeOfDeposit enum MotneTypeOfDeposit Type of deposit
ExtentOfContamination enum MotneExtentOfContamination Extent of contamination of the current runway
DepthOfDeposit int Depth of deposit (2 digits) -1 - depth not significant (has value "//")
FrictionCoefficient int Braking conditions -1 - not measured (has value "//")
<a name="sea-condition"/>Structure of SeaCondition
Property name Type Description
SeaTemperature int Temperature in Celsius
WaveHeight int Average height of the waves in decimeters
SeaState enum SeaState Sea state
<a name="trend"/>Structure of Trend
Property name Type Description
TrendType enum TrendType TREND report type
TrendTime TrendTime TREND time
MilitaryWeather MilitaryWeather Military airfield weather (represents in color codes)
<a name="military-weather"/>Structure of MilitaryWeather
Property name Type Description
MilitaryColorCode enum MilitaryColorCode[] Array of color codes
IsClosed bool Sign if airfield is closed. BLACK color is defined
<a name="extreme-wind-directions"/>Structure of ExtremeWindDirections
Property name Type Description
FirstExtremeDirection int First value of the extreme wind direction interval
LastExtremeWindDirection int Last value of the extreme wind direction interval
<a name="visibility-in-meters"/>Structure of VisibilityInMeters
Property name Type Description
VisibilityValue int Visibility value in meters
VisibilityDirection enum VisibilityDirection Direction of the represented visibility
MaxVisibilityValue int Max visibility value
MaxVisibilityDirection enum VisibilityDirection Max visibility direction
<a name="visibility-in-statute-miles"/>Structure of VisibilityInStatuteMiles
Property name Type Description
LessThanSign bool (M sign) - denotes less than represented value
WholeNumber int Whole number miles of visibility/whole number of mixed fraction
Numerator int Numerator of the fraction
Denominator int Denominator of the fraction
<a name="time"/>Structure of Time
Property name Type Description
Hours int Hours
Minutes int Minutes
<a name="trend-time"/>Enum TrendTime
Property name Type Description
AtTime Time Attribute "AT"
FromTime Time Attribute "FM"
TillTime Time Attribute "TL"

Base enums

<a name="report-type"/>Enum ReportType
ValueName ID Description
NotSpecified 0
Metar 1 METAR report
Trend 2 TREND Report
<a name="month"/>Enum Month
ValueName ID
None 0
January 1
February 2
March 3
April 4
May 5
June 6
July 7
August 8
September 9
October 10
November 11
December 12
<a name="metar-modifier"/>Enum MetarModifier
ValueName ID
None 0
Auto 1
Cor 2
<a name="wind-unit"/>Enum WindUnit
ValueName ID
None 0
MetersPerSecond 1
KilometersPerHour 2
Knots 3
<a name="weather-condition"/>Enum WeatherCondition
ValueName ID Description
None 0
Light 1
Heavy 2
Vicinity 3
Shallow 4
Patches 5
Partial 6
Drifting 7
Blowing 8
Shower 9
Thunderstorm 10
Freezing 11
Drizzle 12
Rain 13
Snow 14
SnowGrains 15
IceCrystals 16
IcePellets 17
Hail 18
SnowPellets 19
UnknownPrecipitation 20
Mist 21 Mist - visibility is 1000 meters or more
Fog 22 Fog - visibility is less than 1000 meters
Smoke 23
VolcanicAsh 24
Dust 25
Sand 26
Haze 27
Spray 28
DustWhirls 29
Squalls 30
FunnelCloud 31
SandStorm 32
DustStorm 33
NoSignificantWeather 34 NSW
<a name="cloud-type"/>Enum CloudType
ValueName ID Description
None 0 Not specified
SkyClear 1 Sky clear - No cloud present
Few 2 Few - 1-2 oktas
Scattered 3 Scattered - 3-4 oktas
Broken 4 Broken - 5-7 oktas
Overcast 5 Overcast - 8 oktas
VerticalVisibility 6 Vertical visibility - indefinite ceiling
Clear 7 Clear below 10,000 ft as interpreted by an autostation
NoSignificantClouds 8 No significant clouds - clouds present at and above 5,000 ft
NoCloudDetected 9 No cloud detected
<a name="convective-cloud-type"/>Enum ConvectiveCloudType
ValueName ID
None 0
Cumulonimbus 1
ToweringCumulus 2
<a name="rvr-unit-type"/>Enum RvrUnitType
ValueName ID
None 0
Meters 1
Feets 2
<a name="measurable-bound"/>Enum MeasurableBound
ValueName ID Description
None 0
Lower 1 Preceding the lowest measurable value
Higher 2 Preceding the highest measurable value
<a name="rvr-trend"/>Enum RvrTrend
ValueName ID Description
None 0 Not represented
Upward 1 Visibility became better
Downward 2 Visibility became worse
NoChange 3 Without changes
<a name="altimeter-unit-type"/>Enum AltimeterUnitType
ValueName ID
None 0
Hectopascal 1
InchesOfMercury 2
<a name="wind-shear-type"/>Enum WindShearType
ValueName ID Description
Both 0 Wind shear during landing or take off
TakeOff 1 Wind shear during take off
Landing 2 Wind shear during landing
<a name="motne-specials"/>Enum MotneSpecials
ValueName ID Description
Default 0 Special sign not specified
Cleared 1 Contamination has disappeared or runway has been cleared
Closed 2 Runway closed
ClosedToSnow 3 Closed due to snow
<a name="motne-type-of-deposit"/>Enum MotneTypeOfDeposit
ValueName ID
ClearAndDry 0
Damp 1
Wet 2
Rime 3
DrySnow 4
WetSnow 5
Slush 6
Ice 7
RolledSnow 8
FrozenRuts 9
NotReported 10
<a name="motne-extent-of-contamination"/>Enum MotneExtentOfContamination
ValueName ID Description
NotReported 0 Not reported, marked as "/"
Less10 1 10% or less of runway covered
From11To25 2 11% to 25% of runway covered
From26To50 3 26% to 50% of runway covered
From51To100 4 51% to 100% of runway covered
<a name="sea-state"/>Enum SeaState
ValueName ID Description
Glassy 0 Waves height = 0 meters
Rippled 1 Waves height from 0 to 0.1 meters
Wavelets 2 Waves height from 0.1 to 0.5 meters
Slight 3 Waves height from 0.5 to 1.25 meters
Moderate 4 Waves height from 1.25 to 2.5 meters
Rough 5 Waves height from 2.5 to 4 meters
VeryRough 6 Waves height from 4 to 6 meters
High 7 Wave height from 6 to 9 meters
VeryHigh 8 Wave height from 9 to 14 meters
Phenomenal 9 Wave height over 14 meters
None 10 Not reported
<a name="trend-type"/>Enum TrendType
ValueName ID Description
None 0 Not specified
Becoming 1 A changes may happen or not
Tempo 2 Changes is definitely happen
NoSignificantChanges 3
<a name="military-color-code"/>Enum MilitaryColorCode
ValueName ID Description
Unknown 0 Unknown code
Blue 1 Visibility is greater 5 mi, ceiling is greater 2500 ft
White 2 Visibility 3 3/8 - 5 mi, ceiling 1500 - 2500 ft
Green 3 Visibility 2 1/4 - 3 - 1/8, ceiling > 700 - 1500 ft
Yellow 4 Visibility 1 1/8 - 2 - 1/4, ceiling > 300 - 700 ft
Amber 5 Visibility 1/2 - 1 1/8 mi, ceiling 200 - 300 ft
Red 6 Visibility less 1/2 mi, ceiling less 200 ft
<a name="visibility-direction"/>Enum VisibilityDirection
ValueName ID
NotSet 0
North 1
NorthEast 2
East 3
SouthEast 4
South 5
SouthWest 6
West 7
NorthWest 8

Feedback

If you have any feedback, contact me valerxenus@gmail.com

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 395 1/6/2023
1.0.0 671 11/28/2021

METAR parser