public Station GetStation(StationIdentifier stationIdentifier) { return(MakeProtoRequest <Station>( String.Format(@"/Station/Get?stationIdentifier.UsafId={0}&stationIdentifier.WbanId={1}" , stationIdentifier.UsafId , stationIdentifier.WbanId))); }
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")); }
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++; } }
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); } } } }
public Station Get(StationIdentifier identifier) { return(Get().FirstOrDefault(station => station.Identifier == identifier)); }