Exemplo n.º 1
0
 public Station GetStation(StationIdentifier stationIdentifier)
 {
     return(MakeProtoRequest <Station>(
                String.Format(@"/Station/Get?stationIdentifier.UsafId={0}&stationIdentifier.WbanId={1}"
                              , stationIdentifier.UsafId
                              , stationIdentifier.WbanId)));
 }
Exemplo n.º 2
0
        public ActionResult Get(StationIdentifier stationIdentifier)
        {
            var station = StationMaker.Instance.Get(stationIdentifier);

            byte[] data;

            using (MemoryStream ms = new MemoryStream())
            {
                Serializer.Serialize(ms, station);
                data = ms.ToArray();
            }

            Response.Filter = new GZipStream(Response.Filter, CompressionLevel.Fastest);

            return(this.File(data, "application/gzip"));
        }
Exemplo n.º 3
0
        public static IEnumerable <WeatherReading> Get(StationIdentifier stationIdentifier, DateTime start, DateTime end)
        {
            if (end < start)
            {
                throw new ArgumentException("end before start");
            }
            int startYear   = start.Year;
            int endYear     = end.Year;
            int currentYear = startYear;

            while (currentYear <= endYear)
            {
                WeatherCollection weatherCollection = WeatherMaker.Instance.Get(new StationYear {
                    StationIdentifier = stationIdentifier, Year = currentYear
                });
                foreach (WeatherReading weather in weatherCollection.WeatherReading.SkipWhile(w => w.ReadingTime < start).TakeWhile(w => w.ReadingTime < end))
                {
                    yield return(weather);
                }
                currentYear++;
            }
        }
Exemplo n.º 4
0
        public static IEnumerable <StationWeatherReading> Get(StationIdentifier[] stationsIdentifier, DateTime start, DateTime end, TimeSpan maxGap)
        {
            if (stationsIdentifier == null)
            {
                throw new ArgumentNullException("stationsIdentifier");
            }
            if (end < start)
            {
                throw new ArgumentException("end before start");
            }
            if (!stationsIdentifier.Any())
            {
                yield break;
            }

            WeatherSifter.Prepare(stationsIdentifier, start, end);

            DateTime          goal              = start;
            bool              found             = false;
            StationIdentifier stationIdentifier = stationsIdentifier.First();


            foreach (WeatherReading weather in WeatherSifter.Get(stationIdentifier, start, end))
            {
                found = true;
                if (weather.ReadingTime.Subtract(goal) > maxGap)
                {
                    //start or middle gap
                    foreach (StationWeatherReading childWeather in Get(stationsIdentifier.Skip(1).ToArray(), goal, weather.ReadingTime, maxGap))
                    {
                        yield return(childWeather);
                    }
                }
                //This is the only return from "this" station identifier
                yield return(new StationWeatherReading {
                    WeatherReading = weather, Station = stationIdentifier
                });

                goal = weather.ReadingTime.AddHours(1);
            }
            if (!found)
            {
                //station miss for range
                foreach (StationWeatherReading weather in Get(stationsIdentifier.Skip(1).ToArray(), start, end, maxGap))
                {
                    found = true;
                    yield return(weather);
                }
                if (!found)
                {
                }
            }
            else
            {
                //end gap
                if (end.Subtract(goal) > maxGap)
                {
                    foreach (StationWeatherReading childWeather in Get(stationsIdentifier.Skip(1).ToArray(), goal, end, maxGap))
                    {
                        yield return(childWeather);
                    }
                }
            }
        }
Exemplo n.º 5
0
 public Station Get(StationIdentifier identifier)
 {
     return(Get().FirstOrDefault(station => station.Identifier == identifier));
 }