コード例 #1
0
        private List <ForecastDto> ConvertToDTO(response xmlObjs,
                                                IList <string> icaos)
        {
            var         dtos     = new List <ForecastDto>();
            ForecastDto forecast = null;

            if (xmlObjs.data?.TAF != null)
            {
                foreach (var tafXML in xmlObjs.data.TAF)
                {
                    forecast = dtos.Where(o => o.ICAO == tafXML.station_id).FirstOrDefault();
                    if (forecast == null)
                    {
                        forecast = new ForecastDto();
                        ParseIdentifier(forecast, tafXML);
                        ParseGeographicData(forecast, tafXML);
                        dtos.Add(forecast);
                    }

                    var tafDTO = new TAFDto();
                    ParseTAFData(tafDTO, tafXML);
                    ParseForecastData(tafDTO, tafXML.forecast);
                    forecast.TAF.Add(tafDTO);
                }
            }

            return(dtos);
        }
コード例 #2
0
 private void ParseTAFData(TAFDto dto, TAF xml)
 {
     dto.RawTAF         = xml.raw_text;
     dto.IssuedTime     = ParserHelpers.ParseDateTime(xml.issue_time);
     dto.Remarks        = xml.remarks;
     dto.ValidTimeEnd   = ParserHelpers.ParseDateTime(xml.valid_time_to);
     dto.ValidTimeStart = ParserHelpers.ParseDateTime(xml.valid_time_from);
     dto.BulletinTime   = ParserHelpers.ParseDateTime(xml.bulletin_time);
 }
コード例 #3
0
        private void ParseForecastData(TAFDto dto, forecast[] xml)
        {
            var lineNumber = 0;

            foreach (var line in xml)
            {
                var lineDto = new TAFLineDto();
                lineDto.Altimeter         = ParserHelpers.GetValue(line.altim_in_hgSpecified, line.altim_in_hg);
                lineDto.ForecastTimeEnd   = ParserHelpers.ParseDateTime(line.fcst_time_to);
                lineDto.ForecastTimeStart = ParserHelpers.ParseDateTime(line.fcst_time_from);
                if (line.sky_condition != null)
                {
                    lineDto.SkyCondition.AddRange(line.sky_condition
                                                  .Select(sc => GetSkyCondition(sc)));
                }

                // First line may not have an change type
                if (lineNumber > 0 &&
                    !String.IsNullOrWhiteSpace(line.change_indicator))
                {
                    lineDto.ChangeIndicator = ChangeIndicatorType.GetByName(line.change_indicator);
                }
                if (line.icing_condition != null)
                {
                    lineDto.IcingHazards.AddRange(line.icing_condition
                                                  .Where(ic => !String.IsNullOrWhiteSpace(ic.icing_intensity))
                                                  .Select(ic => GetHazard(ic)));
                }

                if (line.turbulence_condition != null)
                {
                    lineDto.TurbulenceHazards.AddRange(line.turbulence_condition
                                                       .Where(tb => !String.IsNullOrWhiteSpace(tb.turbulence_intensity))
                                                       .Select(tb => GetHazard(tb)));
                }

                lineDto.VerticalVisibility = ParserHelpers.GetValue(
                    line.vert_vis_ftSpecified, line.vert_vis_ft);
                lineDto.Visibility = ParserHelpers.GetValue(
                    line.visibility_statute_miSpecified, line.visibility_statute_mi);
                lineDto.Weather = line.wx_string;

                lineDto.Wind = GetWind(line);

                lineDto.WindShear = GetWindSheer(line);

                dto.TAFLine.Add(lineDto);
                lineNumber++;
            }
        }