コード例 #1
0
ファイル: TimeSeries.cs プロジェクト: jirikadlec2/hydrodata
 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;
 }
コード例 #2
0
        /// <summary>
        /// Splits a regular time-series with data gaps into two or more sub-series
        /// The maximum allowed gap size is determined by GetDefaultTimeStep()
        /// Use this function for stage and discharge
        /// </summary>
        /// <param name="ts">The time series</param>
        /// <returns>the list of splitted regular time-series</returns>
        public static List<HydroTimeSeries> SplitTimeSeries(ITimeSeries ts)
        {
            List<HydroTimeSeries> hsList = new List<HydroTimeSeries>();
            List<int> breakIx = GetDataBreaks(ts);

            if (breakIx.Count > 0)
            {
                //for the final segment
                if (breakIx[breakIx.Count - 1] != ts.Count - 1)
                {
                    breakIx.Add(ts.Count - 1);
                }

                int begIndex = 0;
                for (int i = 0; i < breakIx.Count; i++)
                {
                    //all data before each break
                    int endIndex = breakIx[i];
                    DateTime begDate = DateTime.FromOADate(ts[begIndex].X);
                    DateTime endDate = DateTime.FromOADate(ts[endIndex].X);
                    HydroTimeSeries newTs = new HydroTimeSeries(begDate, endDate);
                    for (int j = begIndex; j <= endIndex; j++)
                    {
                        newTs.AddObservation(DateTime.FromOADate(ts[j].X), ts[j].Y);
                    }
                    begIndex = endIndex + 1;
                    if (newTs.Count > 0)
                    {
                        hsList.Add(newTs);
                    }
                }
            }
            else
            {
                hsList.Add((HydroTimeSeries)ts);
            }
            return hsList;
        }
コード例 #3
0
ファイル: TimeSeries.cs プロジェクト: jirikadlec2/hydrodata
 public ITimeSeries ShowUnknown(double valueToDisplay)
 {
     HydroTimeSeries ts2 = new HydroTimeSeries(_data.Start, _data.End);
     for (int i=0; i < Count; ++i)
     {
         PointPair p = this[i];
         if (p.IsMissing)
         {
             ts2.AddObservation(XDate.XLDateToDateTime(p.X),valueToDisplay);
         }
     }
     return ts2;
 }