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);
        }