public async Task <double> GetArchiveValueAsync(DateTime begin, DateTime end, SimplifyType simplifyType = SimplifyType.None) { using (var context = Archive.GetDbContext()) { return(await((IDatabaseInterop)context).GetArchiveValueAsync(Id, begin, end, simplifyType)); } }
public static Polyline Simplify(Polyline polyline, SimplifyType simplifyType, bool forceSimplify = false) { if (polyline == null) { return(null); } return(Engine.SimplifyPolyline(polyline, simplifyType, forceSimplify)); }
public async Task <double> GetArchiveValueAsync(string name, DateTime begin, DateTime end, SimplifyType simplifyType = SimplifyType.None) { var fromDtBinary = begin.ToBinary(); var toDtBinary = end.ToBinary(); var itemid = await GetItemid(name); masterscadadataraw last; masterscadadataraw first; switch (simplifyType) { case SimplifyType.None: break; case SimplifyType.Increment: first = await(from r in masterscadadataraw where r.itemid == itemid && r.quality == 192 && r.layer == 1 && r.Time >= fromDtBinary orderby r.Time select r).FirstOrDefaultAsync(); last = await(from r in masterscadadataraw where r.itemid == itemid && r.quality == 192 && r.layer == 1 && r.Time <= toDtBinary orderby r.Time select r).LastOrDefaultAsync(); if (first?.value == null || last?.value == null) { return(0); } return((double)last.value - (double)first.value); case SimplifyType.Average: break; case SimplifyType.Max: break; case SimplifyType.Min: break; case SimplifyType.Last: last = await(from r in masterscadadataraw where r.itemid == itemid && r.quality == 192 && r.layer == 1 && r.Time <= toDtBinary orderby r.Time select r).LastOrDefaultAsync(); if (last?.value == null) { return(0); } return((double)last.value); case SimplifyType.First: first = await(from r in masterscadadataraw where r.itemid == itemid && r.quality == 192 && r.layer == 1 && r.Time >= fromDtBinary orderby r.Time select r).FirstOrDefaultAsync(); if (first?.value == null) { return(0); } return((double)first.value); default: throw new ArgumentOutOfRangeException(nameof(simplifyType), simplifyType, null); } throw new NotImplementedException($"{nameof(GetArchiveValueAsync)} - {simplifyType}"); }
public static TimeSeries Simplify(this TimeSeries ts, SimplifyType simplifyType, int seconds) { if (simplifyType == SimplifyType.None) { return(ts); } if (ts.Count == 0) { return(ts); } var dict = GetDateTimeRange(ts.TimeBegin, ts.TimeEnd, seconds); var j = 1; var endTime = dict.ElementAt(j).Key; foreach (var timeValue in ts.TimeValues) { while (timeValue.Key >= endTime) { endTime = dict.ElementAt(++j).Key; } dict.ElementAt(j - 1).Value.Add(timeValue.Value); } var newTs = new TimeSeries(); switch (simplifyType) { case SimplifyType.None: newTs = ts; break; case SimplifyType.Increment: // начальные значения foreach (var d in dict) { newTs.Add(d.Key, d.Value.FirstOrDefault()); } for (var i = 1; i < newTs.Count; i++) { if (newTs[i] == null) { newTs[i - 1] = null; } else if (newTs[i - 1] != null) { newTs[i - 1] = newTs[i] - newTs[i - 1]; } } newTs.RemoveLast(); break; case SimplifyType.Average: foreach (var d in dict) { newTs.Add(d.Key, d.Value.Average()); } newTs.RemoveLast(); break; case SimplifyType.Max: foreach (var d in dict) { newTs.Add(d.Key, d.Value.Max()); } newTs.RemoveLast(); break; case SimplifyType.Min: foreach (var d in dict) { newTs.Add(d.Key, d.Value.Min()); } newTs.RemoveLast(); break; case SimplifyType.Last: foreach (var d in dict) { newTs.Add(d.Key, d.Value.LastOrDefault()); } newTs.RemoveLast(); break; case SimplifyType.First: foreach (var d in dict) { newTs.Add(d.Key, d.Value.FirstOrDefault()); } newTs.RemoveLast(); break; default: throw new ArgumentOutOfRangeException(nameof(simplifyType), simplifyType, null); } return(newTs); }
public Task <double> GetArchiveValueAsync(DateTime begin, DateTime end, SimplifyType simplifyType = SimplifyType.None) { throw new NotImplementedException(); }