Exemplo n.º 1
0
        /// <summary>
        /// Returns a time series corresponding to the specific channel and interval
        /// the 'missing data' (periodList) is also internally loaded for all variables
        /// except stage and discharge.
        /// </summary>
        /// <param name="channel"></param>
        /// <param name="interval"></param>
        /// <returns></returns>
        public static ITimeSeries GetTimeSeries(Channel ch, TimeInterval interval)
        {
            VariableEnum v = ch.Variable.VarEnum;
            TimeStep step = GetDefaultTimeStep(v, interval);
            ITimeSeries ts;

            if (v == VariableEnum.Stage)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsStage2(ch.StationId, interval.Start,
                    interval.End, step, (IObservationList)ts);
            }
            else if (v == VariableEnum.Discharge)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsDischarge2(ch.StationId, interval.Start,
                    interval.End, step, (IObservationList)ts);
            }
            else if (v == VariableEnum.Temperature)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                //step = TimeStep.Hour;
                TimeSeriesDS.LoadObservationsTemperature2(ch.StationId, interval.Start, interval.End, step, (IObservationList)ts);
            }
            else if (v == VariableEnum.Snow)
            {
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsSnow2(ch.StationId, interval.Start, interval.End, (IObservationList)ts);
            }
            else if (v == VariableEnum.PrecipHour || v == VariableEnum.Precip || v == VariableEnum.PrecipSum)
            {
                ts = new MyTimeSeries(interval.Start, interval.End, step);
                TimeSeriesDS.LoadObservationsPrecip2(ch.StationId, interval.Start,
                    interval.End, step, (IObservationList)ts);
            }
            else
            {
                //snow
                ts = new HydroTimeSeries(interval.Start, interval.End);
                TimeSeriesDS.LoadObservationsSnow2(ch.StationId, interval.Start, interval.End, (IObservationList)ts);
            }
            return ts;
        }
Exemplo n.º 2
0
        public ITimeSeries ShowCumulative()
        {
            MyTimeSeries ts2 = new MyTimeSeries(_start, _end, _step);
            double last_x = _start.ToOADate();
            double sum = 0.0;
            //the time step in fractions of day
            double timeStepFactor = CalcTimeStepFactor(_step);

            //approximate time step to ensure correct comparison results
            double AproxFactor = timeStepFactor + 0.01;

            if (!_data.Sorted)
            {
                _data.Sort();
            }

            foreach (PointPair pt in _data)
            {
                if (!pt.IsMissing)
                {
                    if (pt.X - last_x > AproxFactor)
                    {
                        //the two points are more than one time step apart
                        ts2._data.Add(new PointPair(pt.X - timeStepFactor, sum));
                    }
                    sum += pt.Y;
                    ts2._data.Add(new PointPair(pt.X, sum));
                }
            }

            //add last point..
            ts2._data.Add(new PointPair(End.ToOADate(), sum));

            return ts2;
        }
Exemplo n.º 3
0
 public ITimeSeries ShowUnknown(double valueToDisplay)
 {
     MyTimeSeries ts2 = new MyTimeSeries(_start, _end, _step);
     foreach (PointPair p in _data)
     {
         if (p.IsMissing)
         {
             ts2._data.Add(p.X, valueToDisplay);
         }
     }
     return ts2;
 }
Exemplo n.º 4
0
 public object Clone()
 {
     MyTimeSeries copy = new MyTimeSeries();
     copy._start = _start;
     copy._end = _end;
     copy._data = _data.Clone();
     return copy;
 }