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