Ejemplo n.º 1
0
        /// <summary>
        /// Tos the feature.
        /// </summary>
        /// <returns>The feature.</returns>
        /// <param name="segment">Segment.</param>
        public static Feature ToFeature(this IRouteSegment segment)
        {
            var geopositions = segment.Points.Select(x => new GeographicPosition(x.Position.Lat, x.Position.Lon, x.Position.Ele));
            var speedList    = segment.Points.Select(x => new { x.Speed, x.Time }).ToList();
            var properties   = new Dictionary <string, object>
            {
                { "speed", speedList }
            };
            var lineString = new LineString(geopositions);

            return(new Feature(lineString, properties));
        }
        private RouteStop GetNodeEndRouteStop(IRouteSegment node)
        {
            RouteStop result = null;

            if (node != null && node is JobNode)
            {
                var jn = node as JobNode;
                if (jn.Job != null && jn.Job.RouteStops != null && jn.Job.RouteStops.Any())
                {
                    result = jn.Job.RouteStops.Last();
                }
            }

            return(result);
        }
Ejemplo n.º 3
0
        public void Init()
        {
            points0 = new List <IRoutePoint> ();
            points1 = new List <IRoutePoint> ();
            var rnd  = new Random();
            var date = DateTime.Today;

            for (int i = 0; i < 100; i++)
            {
                var point    = MockRepository.GenerateStub <IRoutePoint> ();
                var position = MockRepository.GenerateStub <IPosition> ();
                position.Lat   = 53.23 + rnd.NextDouble();
                position.Lon   = 30.34 + rnd.NextDouble();
                point.Position = position;
                point.Speed    = i * rnd.NextDouble() * 1000 / 3600;
                point.Time     = date.AddMinutes(i);
                ((List <IRoutePoint>)points0).Add(point);
            }
            date = date.AddMinutes(120);
            for (int i = 0; i < 100; i++)
            {
                var point    = MockRepository.GenerateStub <IRoutePoint> ();
                var position = MockRepository.GenerateStub <IPosition> ();
                position.Lat   = 53.45 + rnd.NextDouble();
                position.Lon   = 30.46 + rnd.NextDouble();
                point.Position = position;
                point.Speed    = i * rnd.NextDouble() * 1000 / 3600;
                point.Time     = date.AddMinutes(i);
                ((List <IRoutePoint>)points1).Add(point);
            }
            Segment0        = MockRepository.GenerateStub <IRouteSegment> ();
            Segment0.Points = points0;
            Segment1        = MockRepository.GenerateStub <IRouteSegment> ();
            Segment1.Points = points1;
            Route           = MockRepository.GenerateStub <IRoute> ();
            Route.Segments  = new List <IRouteSegment> ();
            ((List <IRouteSegment>)Route.Segments).Add(Segment0);
            ((List <IRouteSegment>)Route.Segments).Add(Segment1);
            Track        = MockRepository.GenerateStub <ITrack> ();
            Track.Routes = new List <IRoute> ();
            ((List <IRoute>)Track.Routes).Add(Route);
        }
        /// <summary>
        /// Tos the feature collection.
        /// </summary>
        /// <returns>The feature collection.</returns>
        /// <param name="segment">Segment.</param>
        private static Feature SegmentToFeature(this IRouteSegment segment)
        {
            Feature result = null;
            var     list   = new List <IPosition>();

            segment.With(x => x.Points.Do(pl =>
            {
                var routePoints = pl as IRoutePoint[] ?? pl.ToArray();
                list.AddRange(routePoints.Select(p => new GeographicPosition(p.Position.Lat, p.Position.Lon, p.Position.Ele)));
                var speedList = routePoints.Select(rp => new { rp.Time, rp.Speed }).ToList();

                var line       = new LineString(list);
                var properties = new Dictionary <string, object>
                {
                    { "Distance", routePoints.ToSegmentDistance() },
                    { "Duration", $"{routePoints.ToSegmentDuration()}" },
                    { "Start", $"{segment.Header.StarTime}" },
                    { "Stop", $"{segment.Header.StopTime}" },
                    { "MovePoints", speedList }
                };
                result = new Feature(line, properties);
            }));
            return(result);
        }
        /// <summary>
        /// Calculates the RouteStatistics for a given node
        /// </summary>
        /// <param name="node"></param>
        /// <param name="startTime"></param>
        /// <returns></returns>
        public RouteStatistics GetRouteStatistics(IRouteSegment node, TimeSpan startTime, IRouteSegment previousNode = null)
        {
            var routeStatistics = _routeStopService.CalculateRouteStatistics(node.RouteStops, startTime, node.IsConnection, GetNodeEndRouteStop(previousNode));

            return(routeStatistics);
        }
Ejemplo n.º 6
0
        public void Setup()
        {
            var p0 = MockRepository.GenerateStub <IRoutePoint>();

            p0.Date         = DateTime.Now.AddMinutes(0);
            p0.Position     = MockRepository.GenerateStub <IPosition>();
            p0.Position.Lat = 1;
            p0.Position.Lon = 1;
            p0.Id           = 0;
            p0.Speed        = 1;
            p0.Name         = "RoutePoint#0";

            var p1 = MockRepository.GenerateStub <IRoutePoint>();

            p1.Date         = DateTime.Now.AddMinutes(1);
            p1.Position     = MockRepository.GenerateStub <IPosition>();
            p1.Position.Lat = 2;
            p1.Position.Lon = 2;
            p1.Id           = 1;
            p1.Speed        = 2;
            p1.Name         = "RoutePoint#1";

            var p2 = MockRepository.GenerateStub <IRoutePoint>();

            p2.Date         = DateTime.Now.AddMinutes(2);
            p2.Position     = MockRepository.GenerateStub <IPosition>();
            p2.Position.Lat = 3;
            p2.Position.Lon = 3;
            p2.Id           = 2;
            p2.Speed        = 3;
            p2.Name         = "RoutePoint#2";
            var pointsSegment1 = new List <IRoutePoint> {
                p1, p2
            };
            var p3 = MockRepository.GenerateStub <IRoutePoint>();

            p3.Date         = DateTime.Now.AddMinutes(1);
            p3.Position     = MockRepository.GenerateStub <IPosition>();
            p3.Position.Lat = 3;
            p3.Position.Lon = 3;
            p3.Id           = 3;
            p3.Speed        = 4;
            p3.Name         = "RoutePoint#3";

            var p4 = MockRepository.GenerateStub <IRoutePoint>();

            p4.Date         = DateTime.Now.AddMinutes(1);
            p4.Position     = MockRepository.GenerateStub <IPosition>();
            p4.Position.Lat = 4;
            p4.Position.Lon = 4;
            p4.Id           = 4;
            p4.Speed        = 3;
            p4.Name         = "RoutePoint#4";
            var pointsSegment2 = new List <IRoutePoint> {
                p2, p3, p4
            };

            _segmentRout1        = MockRepository.GenerateStub <IRouteSegment>();
            _segmentRout1.Points = pointsSegment1;
            _segmentRout2        = MockRepository.GenerateStub <IRouteSegment>();
            _segmentRout2.Points = pointsSegment2;
        }