/// <summary> /// Transfers 24-hourly data /// </summary> /// <param name="dto"></param> /// <param name="xml"></param> private void Parse24HourWeatherData(METARDto dto, METAR xml) { if (xml.pcp24hr_inSpecified || xml.maxT24hr_cSpecified || xml.minT24hr_cSpecified) { dto.TwentyFourHourData = new TwentyFourHourObsDataDto() { Precipitation = ParserHelpers.GetValue(xml.pcp24hr_inSpecified, xml.pcp24hr_in), MaxTemperature = ParserHelpers.GetValue(xml.maxT24hr_cSpecified, xml.maxT24hr_c), MinTemperature = ParserHelpers.GetValue(xml.minT24hr_cSpecified, xml.minT24hr_c) }; } }
private void ParseQualityControlFlags(METARDto dto, METAR xml) { if (xml.quality_control_flags?.auto != null && bool.Parse(xml.quality_control_flags.auto)) { dto.QualityControlFlags.Add(QualityControlFlagType.Auto); } if (xml.quality_control_flags?.auto_station != null && bool.Parse(xml.quality_control_flags.auto_station)) { dto.QualityControlFlags.Add(QualityControlFlagType.AutoStation); } if (xml.quality_control_flags?.corrected != null && bool.Parse(xml.quality_control_flags.corrected)) { dto.QualityControlFlags.Add(QualityControlFlagType.Corrected); } if (xml.quality_control_flags?.freezing_rain_sensor_off != null && bool.Parse(xml.quality_control_flags.freezing_rain_sensor_off)) { dto.QualityControlFlags.Add(QualityControlFlagType.FreezingRainSensorOff); } if (xml.quality_control_flags?.lightning_sensor_off != null && bool.Parse(xml.quality_control_flags.lightning_sensor_off)) { dto.QualityControlFlags.Add(QualityControlFlagType.LightningSensorOff); } if (xml.quality_control_flags?.maintenance_indicator_on != null && bool.Parse(xml.quality_control_flags.maintenance_indicator_on)) { dto.QualityControlFlags.Add(QualityControlFlagType.MaintenanceIndicator); } if (xml.quality_control_flags?.no_signal != null && bool.Parse(xml.quality_control_flags.no_signal)) { dto.QualityControlFlags.Add(QualityControlFlagType.NoSignal); } if (xml.quality_control_flags?.present_weather_sensor_off != null && bool.Parse(xml.quality_control_flags.present_weather_sensor_off)) { dto.QualityControlFlags.Add(QualityControlFlagType.PresentWeatherSensorOff); } }
/// <summary> /// Trnasfers the core weather observation data /// </summary> /// <param name="dto"></param> /// <param name="xml"></param> private void ParseCurrentWeatherData(METARDto dto, METAR xml) { dto.Altimeter = xml.altim_in_hg; dto.Dewpoint = ParserHelpers.GetValue(xml.dewpoint_cSpecified, xml.dewpoint_c); dto.ObsTime = ParserHelpers.ParseDateTime(xml.observation_time); dto.Precipitation = ParserHelpers.GetValue(xml.precip_inSpecified, xml.precip_in); dto.Snow = ParserHelpers.GetValue(xml.snow_inSpecified, xml.snow_in); dto.RawMETAR = xml.raw_text; dto.SeaLevelPressure = ParserHelpers.GetValue(xml.sea_level_pressure_mbSpecified, xml.sea_level_pressure_mb); if (xml.sky_condition != null) { dto.SkyCondition.AddRange(xml.sky_condition.Select(sc => new SkyConditionDto() { SkyCondition = SkyConditionType.ByName(sc.sky_cover), CloudBase = sc.cloud_base_ft_agl })); } dto.Temperature = ParserHelpers.GetValue(xml.temp_cSpecified, xml.temp_c); dto.VerticalVisibility = ParserHelpers.GetValue(xml.vert_vis_ftSpecified, xml.vert_vis_ft); dto.Visibility = ParserHelpers.GetValue(xml.visibility_statute_miSpecified, xml.visibility_statute_mi); dto.Weather = xml.wx_string; dto.Wind = new WindDto() { Direction = ParserHelpers.GetValue(xml.wind_dir_degreesSpecified, xml.wind_dir_degrees), Gust = ParserHelpers.GetValue(xml.wind_gust_ktSpecified, xml.wind_gust_kt), Speed = ParserHelpers.GetValue(xml.wind_speed_ktSpecified, xml.wind_speed_kt) }; dto.FlightCategory = FlightCategoryType.ByName(xml.flight_category); dto.ObsType = METARType.ByName(xml.metar_type); if (xml.maxT_cSpecified || xml.minT_cSpecified) { dto.TemperatureRange = new TemperatureRangeDto() { MaxTemperature = ParserHelpers.GetValue(xml.maxT_cSpecified, xml.maxT_c), MinTemperature = ParserHelpers.GetValue(xml.minT_cSpecified, xml.minT_c) }; } }
/// <summary> /// Transfers the ICAO /// </summary> /// <param name="dto"></param> /// <param name="xml"></param> private void ParseIdentifier(ObservationDto dto, METAR xml) { dto.ICAO = xml.station_id; }