public List <TruckerLog> AggregateNearbyLogs() { List <TruckerLog> aggregatedLogs = new List <TruckerLog>(); if (TruckerLogs.Count() == 0) { return(aggregatedLogs); } var lst = TruckerLogs.ToList(); aggregatedLogs.Add(lst[0]); var last = aggregatedLogs[0]; for (var l = 0; l < lst.Count - 1; l++) { if ((GetDelta(lst[l].Latitude, lst[l].Longitude, last.Latitude, last.Longitude) > THRESHHOLD) && (GetDelta(lst[l + 1].Latitude, lst[l + 1].Longitude, last.Latitude, last.Longitude) > THRESHHOLD)) { aggregatedLogs.Add(lst[l]); last = lst[l]; } } return(aggregatedLogs); }
void AddSegment(TruckerLog pinStart, TruckerLog logStart, TruckerLog logStop) { var segLogs = TruckerLogs.Where(x => x.TimeStamp >= logStart.TimeStamp && x.TimeStamp <= logStop.TimeStamp).ToList(); var segment = new Segment { PinStart = pinStart, LogStart = logStart, LogStop = logStop, StartTime = logStart.TimeStamp, StopTime = logStop.TimeStamp, TravelTime = logStop.TimeStamp - logStart.TimeStamp, Points = segLogs.Count(), MaxSpeed = segLogs.Max(m => m.Speed), AvgSpeed = segLogs.Average(m => m.Speed), MaxSpeedBreaks = segLogs.Where(x => x.Speed > Manager.MaxSpeed).Count(), MaxAccelBreaks = segLogs.Where(x => x.Acceleration > Manager.MaxAccel).Count(), Delay = Segments.Count() > 0 ? (logStart.TimeStamp - pinStart.TimeStamp) : null, TruckerID = Trucker.ID }; Segments.Add(segment); }