示例#1
0
        public List <GeoCoordinatePortable.GeoPosition <Waypoint> > AsPositionEverySecond()
        {
            var result       = new List <GeoCoordinatePortable.GeoPosition <Waypoint> >();
            var startTime    = DateTime.UtcNow;
            var secondOffset = 0;

            for (int index = 0; index < Route.Count - 1; index++)
            {
                var current = Route[index];
                var next    = Route[index + 1];

                var distance           = current.GetDistanceTo(next);
                var duration           = next.Time - current.Time;
                var speed              = distance / duration;
                var heading            = current.GetHeadingTo(next);
                var latitudePerSecond  = (next.Latitude - current.Latitude) / duration;
                var longitudePerSecond = (next.Longitude - current.Longitude) / duration;

                for (int step = 0; step <= duration; step++)
                {
                    var waypoint = new Waypoint()
                    {
                        Time               = secondOffset,
                        Latitude           = current.Latitude + step * latitudePerSecond,
                        Longitude          = current.Longitude + step * longitudePerSecond,
                        Speed              = speed,
                        Course             = heading,
                        Altitude           = 2,
                        HorizontalAccuracy = 1.0,
                        VerticalAccuracy   = 1.0
                    };
                    DateTimeOffset time = startTime.AddSeconds(secondOffset);

                    var position = new GeoCoordinatePortable.GeoPosition <Waypoint>()
                    {
                        Location  = waypoint,
                        Timestamp = time
                    };

                    result.Add(position);

                    secondOffset += 1;
                }
            }

            return(result);
        }
示例#2
0
        public static string GetJsonPositionReport(Vehicle vehicle, GeoCoordinatePortable.GeoPosition <Waypoint> waypoint)
        {
            var positionReport = new PositionReport()
            {
                client_version = 1.ToString(),
                vehicle_type   = vehicle.Type,

                // Real fake numbers
                time   = waypoint.Timestamp.ToString("o"),
                lat    = waypoint.Location.Latitude.ToString("F6"),
                lon    = waypoint.Location.Longitude.ToString("F6"),
                course = waypoint.Location.Course.ToString("F2"),
                speed  = waypoint.Location.Speed.ToString("F2"),

                // Hard-coded elsewhere
                alt = waypoint.Location.Altitude.ToString("F2"),
                epx = waypoint.Location.HorizontalAccuracy.ToString("F2"),
                epy = waypoint.Location.VerticalAccuracy.ToString("F2"),

                // Hard-coded here
                climb = 0.0.ToString("F2"),
                eps   = 0.0.ToString("F2"),
                ept   = 0.0.ToString("F2"),
                epv   = 0.0.ToString("F2")
            };

            return(String.Format(TEMPLATE,
                                 positionReport.time,
                                 positionReport.lat,
                                 positionReport.lon,
                                 positionReport.climb,
                                 positionReport.course,
                                 positionReport.eps,
                                 positionReport.ept,
                                 positionReport.epv,
                                 positionReport.epx,
                                 positionReport.epy,
                                 positionReport.speed,
                                 positionReport.alt,
                                 positionReport.client_version,
                                 positionReport.vehicle_type
                                 ));
        }