/// <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; }
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; }
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; }
public object Clone() { MyTimeSeries copy = new MyTimeSeries(); copy._start = _start; copy._end = _end; copy._data = _data.Clone(); return copy; }