Beispiel #1
0
        // ReSharper disable once MethodTooLong
        // ReSharper disable once TooManyArguments
        private static void GetDistanceAndDuration(List <Position> positions, Position lastPosition, Position firstPosition,
                                                   TargetViewModel trgt)
        {
            // ReSharper disable once ComplexConditionExpression
            if (lastPosition != null && firstPosition != null)
            {
                var index = GetPreviousPositionIndexx(positions, lastPosition);
                if (index == -1)
                {
                    index = 0;
                }
                var p1 = new GeofenceHelper.Position();
                p1.Latitude  = positions.ElementAt(index).Lat;
                p1.Longitude = positions.ElementAt(index).Long;
                var p2 = new GeofenceHelper.Position();
                p2.Latitude  = firstPosition.Lat;
                p2.Longitude = firstPosition.Long;

                trgt.Distance = Math.Round(GeofenceHelper.HaversineFormula(p1, p2, GeofenceHelper.DistanceType.Kilometers), 2);
                var avgSpeed = GetAvgSpeed(positions, firstPosition, lastPosition);
                trgt.AvgSpeed = Math.Round(avgSpeed, 2);
                trgt.MaxSpeed = Math.Round(GetMaxSpeed(positions, firstPosition, lastPosition), 2);
            }

            if (double.IsNaN(trgt.Distance))
            {
                trgt.Distance = 0;
            }
            trgt.Duration = (DateTime.Parse(trgt.EndPeriod) - DateTime.Parse(trgt.StartPeriod)).TotalSeconds;
        }
        public PositionViewModel(CreateTeltonikaGps tk103Gps, Vehicle vehicle, GeofenceHelper.Position lasPosition)
        {
            double dir = 0;

            if (Math.Abs(lasPosition.Latitude - tk103Gps.Lat) > 0.0)
            {
                if (Math.Abs(lasPosition.Longitude - tk103Gps.Long) > 0.0)
                {
                    dir = GetDirection(tk103Gps, lasPosition);
                }
            }

            Latitude  = tk103Gps.Lat;
            Longitude = tk103Gps.Long;
            Address   = tk103Gps.Address;
            IMEI      = tk103Gps.Imei;
            // SerialNumber = tk103Gps.s;
            //Direction = tk103Gps.Address
            Speed        = tk103Gps.Speed;
            VehicleName  = vehicle.VehicleName;
            VehicleId    = vehicle.Id.ToString();
            CustomerName = vehicle.Customer?.Name;
            TimeStampUtc = tk103Gps.Timestamp;
            SetVehicleImage(vehicle, dir);
        }
        private static double GetDirection(CreateTeltonikaGps tk103Gps, GeofenceHelper.Position lastPos)
        {
            var dir = !lastPos.Equals(default(GeofenceHelper.Position))
                ? GeofenceHelper.DegreeBearing(lastPos.Latitude, lastPos.Longitude, tk103Gps.Lat, tk103Gps.Long)
                : 0;

            return(dir);
        }
        double CalculateDistance(double lat1, double log, double lat2, double log2)
        {
            var p1 = new GeofenceHelper.Position();

            p1.Latitude  = lat1;
            p1.Longitude = log;
            var p2 = new GeofenceHelper.Position();

            p2.Latitude  = lat2;
            p2.Longitude = log2;

            return(Math.Round(GeofenceHelper.HaversineFormula(p1, p2, GeofenceHelper.DistanceType.Kilometers), 2));
        }