public ParameterTimeSeries(Dictionary <DateTime, int> targetTimeValuesDict, string type, DateTime groupingTime, GivenForecastTimeKind groupingTimeKind) { Type = type; _timeValuePairs = new SortedList <DateTime, int>(targetTimeValuesDict); GroupingTime = groupingTime; GroupingTimeKind = groupingTimeKind; }
private static DateTime[] GetValidTimeDates(DateTime date, GivenForecastTimeKind mode, IAbstractDataSource source) { DateTime[] validTimeDates = null; if (mode == GivenForecastTimeKind.Valid || source is RealDataSource) { validTimeDates = new DateTime[1] { date }; } else if (mode == GivenForecastTimeKind.Created) { int daysForward = (int)Math.Ceiling(((ForecastDataSource)source).PredictionDepth.TotalDays); validTimeDates = new DateTime[daysForward]; for (int i = 0; i < daysForward; i++) { validTimeDates[i] = date.AddDays(i); } } else { throw new ArgumentOutOfRangeException("mode", "Unknown kind of given forecast time."); } return(validTimeDates); }
/// <summary> /// As given time. /// </summary> private static DateTime GetForecastGroupingTime(Forecast f, GivenForecastTimeKind givenTimeMode) { switch (givenTimeMode) { case GivenForecastTimeKind.Created: return(f.CreationTime); case GivenForecastTimeKind.Valid: default: return(f.ValidTime); } }
private static string GetRelationPreposition(GivenForecastTimeKind groupingTimeKind, bool forSerie) { if (groupingTimeKind == GivenForecastTimeKind.Valid && forSerie || groupingTimeKind != GivenForecastTimeKind.Valid && !forSerie) { return("на"); } else { return("от"); } }
public ParameterTimeSeries(List <DateTime> targetTimes, List <int> values, string type, DateTime groupingTime, GivenForecastTimeKind groupingTimeKind) { if (targetTimes.Count != values.Count) { throw new ArgumentException("The size of the lists do not match."); } Type = type; var count = targetTimes.Count; _timeValuePairs = new SortedList <DateTime, int>(count); for (int i = 0; i < count; i++) { _timeValuePairs.Add(targetTimes[i], values[i]); } GroupingTime = groupingTime; GroupingTimeKind = groupingTimeKind; }
public ForecastViewerRequest(Station station, DateTime dateOrDateTime, GivenForecastTimeKind givenMode, RequestTimeDeterminateness dateTimeMode, IEnumerable <IAbstractDataSource> sources = null, IEnumerable <string> parameterTypes = null) { Station = station; DateTime = dateOrDateTime; GivenTime = givenMode; TimeDeterminateness = dateTimeMode; if (sources != null) { Sources = sources; } else { Sources = SourcesDirector.Instance.ForecastDataSources; } if (parameterTypes != null) { ParameterTypes = parameterTypes; } else { ParameterTypes = ParametersFactory.KnownParameterTypesNames; } }
/// <summary> /// Retrieves series of values of specific parameter (their maximums in each forecast by default). /// </summary> internal static ParameterTimeSeries GetSeries(IEnumerable <Forecast> forecasts, GivenForecastTimeKind givenTimeMode, string parameterType, DateTime groupTime, bool minValues = false) { var dict = (from f in forecasts.DistinctBy(f => GetForecastTargetTime(f, givenTimeMode), null) let p = SelectParameter(f, parameterType, minValues) where p != null select new { Key = GetForecastTargetTime(f, givenTimeMode), Value = p.Value }).ToDictionary(i => i.Key, i => i.Value); return(new ParameterTimeSeries(dict, parameterType, groupTime, givenTimeMode)); }