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);
            }
        }
Exemple #4
0
 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));
        }