Ejemplo n.º 1
0
        /// <summary>
        /// Получение заголовочных данных по треку на основании данных о маршрутах за день
        /// </summary>
        /// <returns>The track header.</returns>
        /// <param name="routes">Routes.</param>
        public static IRouteElementHeader ToTrackHeader(this IEnumerable <IRoute> routes)
        {
            if (routes == null)
            {
                throw new ArgumentNullException(nameof(routes));
            }
            var enumerable = routes as IRoute[] ?? routes.ToArray();
            var h          = new RouteElementHeader {
                Distance = enumerable.Sum(a => a.Header.Distance)
            };
            var duration = enumerable.Select(item => item.Header.Duration).Aggregate(TimeSpan.Zero, (current, d) => current + d);

            h.Duration = duration;
            return(h);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///  Получение данных о сегменте маршрута транспорта
        /// </summary>
        /// <returns>The segment header.</returns>
        /// <param name="points">Points.</param>
        public static IRouteElementHeader ToSegmentHeader(this IEnumerable <IRoutePoint> points)
        {
            if (points == null)
            {
                throw new ArgumentNullException(nameof(points));
            }
            var routePoints = points as IRoutePoint[] ?? points.ToArray();
            var h           = new RouteElementHeader
            {
                Distance = routePoints.ToSegmentDistance(),
                Duration = routePoints.ToSegmentDuration(),
                StarTime = routePoints.FirstOrDefault().Time,
                StopTime = routePoints.LastOrDefault().Time
            };

            return(h);
        }