/// <summary> /// Makes a regular time-series with all of the data being equal to NO-DATA /// </summary> /// <param name="start">start time</param> /// <param name="end">end time</param> /// <param name="step">the time step: TimeStep.Day or TimeStep.Hour</param> /// <returns>The time-series object with No-Data at all data points</returns> public static ITimeSeries MakeRegularTimeSeries(DateTime start, DateTime end, TimeStep step) { HydroTimeSeries myTs = new HydroTimeSeries(start, end); if (step == TimeStep.Day) { int nd = (int)end.Subtract(start).TotalDays; for (int i = 0; i < nd; i++) { DateTime newTime = start.AddDays(i); myTs.AddUnknownValue(newTime); } } else { int nh = (int)end.Subtract(start).TotalHours; for (int i = 0; i < nh; i++) { DateTime newTime = start.AddHours(i); myTs.AddUnknownValue(newTime); } } return myTs; }
public static HydroTimeSeries GetMissingValuesHydro(ITimeSeries ts, DateTime start, DateTime end, TimeStep step) { HydroTimeSeries missingTs = new HydroTimeSeries(start, end); List<int> breakIx = GetDataBreaks(ts); //TODO missing points before series start foreach (int begIndex in breakIx) { if (begIndex < ts.Count - 1) { DateTime begDate = DateTime.FromOADate(ts[begIndex].X); DateTime endDate = DateTime.FromOADate(ts[begIndex + 1].X); if (step == TimeStep.Day) { int nd = (int)endDate.Subtract(begDate).TotalDays; for (int i = 0; i < nd; i++) { DateTime newTime = begDate.AddDays(i); missingTs.AddUnknownValue(newTime); } } else { int nh = (int)endDate.Subtract(begDate).TotalHours; for (int i = 0; i < nh; i++) { DateTime newTime = begDate.AddHours(i); missingTs.AddUnknownValue(newTime); } } } } return missingTs; }
public static ITimeSeries MakeCumulative(ITimeSeries ts) { HydroTimeSeries ts2 = new HydroTimeSeries(ts.Start, ts.End); double sum = 0.0; PointPair curPt; for ( int i = 0; i < ts.Count; ++i ) { curPt = ts[i]; if ( curPt.IsMissing ) { ts2.AddUnknownValue(XDate.XLDateToDateTime(curPt.X)); } else { if (curPt.Y > 0) { sum += curPt.Y; } ts2.AddObservation(XDate.XLDateToDateTime(curPt.X), sum); } } return ts2; }