Example #1
0
        public string WeatherDataListing()
        {
            //Forms the weather data into a string separated by line feeds
            string wsList = "";

            if (weaList.Count > 0)
            {
                {
                    wsList += "WriteDate:\t" + ReportDate.ToString("hh:mm:ss");
                    wsList += "\r\n" + "TempScale:\t" + TempScale.ToString();
                    wsList += "\r\n" + "WindScale:\t" + WindScale.ToString();
                    wsList += "\r\n" + "SkyTemp:\t" + SkyTemp.ToString();
                    wsList += "\r\n" + "AmbTemp:\t" + AmbTemp.ToString();
                    wsList += "\r\n" + "SenTemp:\t" + SenTemp.ToString();
                    wsList += "\r\n" + "WindSpeed:\t" + WindSpeed.ToString();
                    wsList += "\r\n" + "Humidity:\t\t" + Humidity.ToString();
                    wsList += "\r\n" + "DewPoint:\t" + DewPoint.ToString();
                    wsList += "\r\n" + "DewHeat:\t" + DewHeat.ToString();
                    wsList += "\r\n" + "RainFlag:\t\t" + RainFlag.ToString();
                    wsList += "\r\n" + "WetFlag:\t\t" + WetFlag.ToString();
                    wsList += "\r\n" + "ElapsedTime:\t" + ElapsedSeconds.ToString();
                    wsList += "\r\n" + "LastDataWrite:\t" + LastDataWrite.ToString("hh:mm:ss");
                    wsList += "\r\n" + "Cloudiness:\t" + Cloudiness.ToString();
                    wsList += "\r\n" + "Windiness:\t" + Windiness.ToString();
                    wsList += "\r\n" + "Raininess:\t" + Raininess.ToString();
                    wsList += "\r\n" + "Darkness:\t" + Darkness.ToString();
                    wsList += "\r\n" + "RoofCloseFlag:\t" + RoofCloseFlag.ToString();
                    wsList += "\r\n" + "AlertFlag:\t\t" + AlertFlag.ToString();
                }
            }
            return(wsList);
        }
Example #2
0
    private Rain GetRandomRain(Month month, Cloudiness cloudiness)
    {
        double fraction = random.NextDouble();

        switch (month)
        {
        case Month.January:
        case Month.February:
        case Month.December:
            if (fraction < 0.05 && cloudiness != Cloudiness.Low)
            {
                return(Rain.Heavy);
            }
            else if (fraction < 0.2)
            {
                return(Rain.Drizzle);
            }
            else
            {
                return(Rain.None);
            }

        case Month.July:
        case Month.August:
            if (fraction < 0.05 && cloudiness != Cloudiness.Low)
            {
                return(Rain.Thunderstorm);
            }
            else if (fraction < 0.1)
            {
                return(Rain.Heavy);
            }
            else if (fraction < 0.3)
            {
                return(Rain.Drizzle);
            }
            else
            {
                return(Rain.None);
            }

        default:
            if (fraction < 0.01 && cloudiness != Cloudiness.Low)
            {
                return(Rain.Thunderstorm);
            }
            else if (fraction < 0.03)
            {
                return(Rain.Heavy);
            }
            else if (fraction < 0.1)
            {
                return(Rain.Drizzle);
            }
            else
            {
                return(Rain.None);
            }
        }
    }
Example #3
0
 private Rain GetRandomRain(Month month, Cloudiness cloudiness) {
     double fraction = random.NextDouble();
     switch(month) {
         case Month.January:
         case Month.February:
         case Month.December:
             if(fraction < 0.05 && cloudiness != Cloudiness.Low)
                 return Rain.Heavy;
             else if(fraction < 0.2)
                 return Rain.Drizzle;
             else
                 return Rain.None;
         case Month.July:
         case Month.August:
             if(fraction < 0.05 && cloudiness != Cloudiness.Low)
                 return Rain.Thunderstorm;
             else if(fraction < 0.1)
                 return Rain.Heavy;
             else if(fraction < 0.3)
                 return Rain.Drizzle;
             else
                 return Rain.None;
         default:
             if(fraction < 0.01 && cloudiness != Cloudiness.Low)
                 return Rain.Thunderstorm;
             else if(fraction < 0.03)
                 return Rain.Heavy;
             else if(fraction < 0.1)
                 return Rain.Drizzle;
             else
                 return Rain.None;
     }
 }
Example #4
0
    public WeatherInfo GetWeatherInfo(DateTime dateValue)
    {
        WeatherInfo info = weatherInfoCache[dateValue] as WeatherInfo;

        if (info == null)
        {
            Month            month       = (Month)(dateValue.Month - 1);
            TemperatureRange temperature = GetRandomDayTemperature(averageMonthTemperatures[month]);
            Cloudiness       cloudiness  = GetRandomCloudiness();
            Rain             rain        = GetRandomRain(month, cloudiness);
            info = new WeatherInfo(dateValue, TemperatureUnit.Celsius, temperature.Min.Value, temperature.Max.Value,
                                   cloudiness, rain, GetRandomSnow(month), GetRandomFog(month), GetRandomHail(rain));
            weatherInfoCache[dateValue] = info;
        }
        return(info);
    }
Example #5
0
 public WeatherInfo(DateTime date, TemperatureUnit unit, int temperatureLow, int temperatureHi, Cloudiness cloudiness,
                    Rain rain, bool snow, bool fog, bool hail)
 {
     if (temperatureHi < temperatureLow)
     {
         throw new ArgumentException("temperatureHi < temperatureLow");
     }
     this.date           = date;
     this.temperatureLow = new Temperature(temperatureLow, unit);
     this.temperatureHi  = new Temperature(temperatureHi, unit);
     this.cloudiness     = cloudiness;
     this.rain           = rain;
     this.snow           = snow;
     this.fog            = fog;
     this.hail           = hail;
 }
Example #6
0
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
                string     name       = collection.Get("Name");
                Cloudiness cloudiness = new Cloudiness()
                {
                    ID = id, Name = name
                };

                IRepository <Cloudiness> repo = new CloudinessRepository();
                repo.Update(cloudiness);
                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
Example #7
0
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                string     name       = collection.Get("Name");
                Cloudiness cloudiness = new Cloudiness()
                {
                    Name = name
                };

                IRepository <Cloudiness> repo = new CloudinessRepository();
                repo.Save(cloudiness);
                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
Example #8
0
        private static void ParseMainXForecast(XElement xForecast, List <AbstractParameter> parameters)
        {
            parameters.Add(Temperature.FromDouble(
                               xForecast.Element("temperature").Attribute("value").Value));

            parameters.Add(WindDirection.FromDouble(
                               xForecast.Element("windDirection").Attribute("deg").Value));

            parameters.Add(WindSpeed.FromDouble(
                               xForecast.Element("windSpeed").Attribute("mps").Value));

            parameters.Add(Humidity.FromDouble(
                               xForecast.Element("humidity").Attribute("value").Value));

            parameters.Add(Pressure.FromHpa(
                               xForecast.Element("pressure").Attribute("value").Value));

            parameters.Add(Cloudiness.FromDouble(
                               xForecast.Element("cloudiness").Attribute("percent").Value));
        }
Example #9
0
        private static void ParseXForecast(XElement xForecast, List <AbstractParameter> parameters)
        {
            var xPhenomena = xForecast.Element("PHENOMENA");

            parameters.Add(Cloudiness.FromRange(
                               xPhenomena.Attribute("cloudiness").Value, maxClouds));
            parameters.Add(PrecipitationKind.FromGismeteoBased(
                               xPhenomena.Attribute("precipitation").Value));

            var xPres = xForecast.Element("PRESSURE");

            parameters.Add(new Pressure(
                               xPres.Attribute("max").Value));
            parameters.Add(new Pressure(
                               xPres.Attribute("min").Value));

            var xTemp = xForecast.Element("TEMPERATURE");

            parameters.Add(new Temperature(
                               xTemp.Attribute("max").Value));
            parameters.Add(new Temperature(
                               xTemp.Attribute("min").Value));

            var xWind = xForecast.Element("WIND");

            parameters.Add(WindDirection.FromRange(
                               xWind.Attribute("direction").Value, maxWindDir));
            parameters.Add(new WindSpeed(
                               xWind.Attribute("max").Value));
            parameters.Add(new WindSpeed(
                               xWind.Attribute("min").Value));

            var xHum = xForecast.Element("RELWET");

            parameters.Add(new Humidity(
                               xHum.Attribute("max").Value));
            parameters.Add(new Humidity(
                               xHum.Attribute("min").Value));
        }
Example #10
0
        private static void ParseXForecast(XElement xForecast, List <AbstractParameter> parameters)
        {
            var temp = Temperature.FromDouble(
                xForecast.Element("temp_c").Value);

            parameters.Add(temp);

            parameters.Add(WindSpeed.FromKnot(
                               xForecast.Element("wind_speed_kt").Value));

            parameters.Add(new WindDirection(
                               xForecast.Element("wind_dir_degrees").Value));

            var skyDescription = ParseXSky(xForecast);

            parameters.Add(Cloudiness.FromMetarReportInFt(
                               skyDescription));

            parameters.Add(Pressure.FromInhg(
                               xForecast.Element("altim_in_hg").Value));

            var duePoint = Temperature.FromDouble(
                xForecast.Element("dewpoint_c").Value);

            parameters.Add(Humidity.FromDewPoint(temp, duePoint));

            var xWx = xForecast.Element("wx_string");

            if (xWx != null)
            {
                parameters.Add(PrecipitationKind.FromMetar(
                                   xWx.Value));
            }
            else
            {
                parameters.Add(new PrecipitationKind(0));
            }
        }
Example #11
0
        private static void ConvertHourForecast(HourForecast hourForecast, List <AbstractParameter> parameters)
        {
            parameters.Add(new Temperature(
                               hourForecast.temperature));

            parameters.Add(Pressure.FromHpa(
                               hourForecast.pressure));

            parameters.Add(new PrecipitationAmount(
                               hourForecast.precipIntensity));

            parameters.Add(Humidity.FromPart(
                               hourForecast.humidity));

            parameters.Add(Cloudiness.FromPart(
                               hourForecast.cloudCover));

            parameters.Add(new WindDirection(
                               hourForecast.windBearing));

            parameters.Add(new WindSpeed(
                               hourForecast.windSpeed));
        }
Example #12
0
 public WeatherInfo(DateTime date, TemperatureUnit unit, int temperatureLow, int temperatureHi, Cloudiness cloudiness,
     Rain rain, bool snow, bool fog, bool hail) {
     if(temperatureHi < temperatureLow)
         throw new ArgumentException("temperatureHi < temperatureLow");
     this.date = date;
     this.temperatureLow = new Temperature(temperatureLow, unit);
     this.temperatureHi = new Temperature(temperatureHi, unit);
     this.cloudiness = cloudiness;
     this.rain = rain;
     this.snow = snow;
     this.fog = fog;
     this.hail = hail;
 }