Пример #1
0
        public TMCInfo CreateMetric()
        {
            base.CreateMetric();

            var repository =
                SignalsRepositoryFactory.Create();
            var signal = repository.GetVersionOfSignalByDate(SignalID, StartDate);

            TmcInfo = new TMCInfo();
            var plans = PlanFactory.GetBasicPlans(StartDate, EndDate, SignalID);


            var ltr       = LaneTypeRepositoryFactory.Create();
            var laneTypes = ltr.GetAllLaneTypes();

            var mtr           = MovementTypeRepositoryFactory.Create();
            var movementTypes = mtr.GetAllMovementTypes();

            var dtr        = DirectionTypeRepositoryFactory.Create();
            var directions = dtr.GetAllDirections();


            CreateLaneTypeCharts(signal, "Vehicle", laneTypes, movementTypes, directions, plans, TmcInfo);
            CreateLaneTypeCharts(signal, "Exit", laneTypes, movementTypes, directions, plans, TmcInfo);
            CreateLaneTypeCharts(signal, "Bike", laneTypes, movementTypes, directions, plans, TmcInfo);


            return(TmcInfo);
        }
Пример #2
0
        private void CreateLaneTypeCharts(Models.Signal signal, string laneTypeDescription,
                                          List <LaneType> laneTypes, List <MovementType> movementTypes,
                                          List <DirectionType> directions, List <Plan> plans, TMCInfo tmcInfo)
        {
            foreach (var direction in directions)
            {
                var approaches = (from r in signal.Approaches
                                  where r.DirectionType.DirectionTypeID == direction.DirectionTypeID
                                  select r).ToList();

                var DetectorsByDirection = new List <Models.Detector>();

                foreach (var a in approaches)
                {
                    foreach (var d in a.Detectors)
                    {
                        if (d.DetectorSupportsThisMetric(5))
                        {
                            DetectorsByDirection.Add(d);
                        }
                    }
                }


                //Loop through the major movement types
                var movementTypeIdsSorted = new List <int> {
                    3, 1, 2
                };
                foreach (var x in movementTypeIdsSorted)
                {
                    var lanetype = (from r in laneTypes
                                    where r.Description == laneTypeDescription
                                    select r).FirstOrDefault();

                    var movementType = (from r in movementTypes
                                        where r.MovementTypeID == x
                                        select r).FirstOrDefault();

                    var DetectorsForChart = (from r in DetectorsByDirection
                                             where r.MovementType.MovementTypeID == movementType.MovementTypeID &&
                                             r.LaneType.LaneTypeID == lanetype.LaneTypeID
                                             select r).ToList();

                    //movement type 1 is the thru movement.  We have to add the thru/turn lanes to the thru movment count.

                    if (x == 1)
                    {
                        var turnthrudetectors = (from r in DetectorsByDirection
                                                 where (r.MovementType.MovementTypeID == 4 || r.MovementType.MovementTypeID == 5) &&
                                                 r.LaneType.LaneTypeID == lanetype.LaneTypeID
                                                 select r).ToList();

                        if (turnthrudetectors != null && turnthrudetectors.Count > 0)
                        {
                            DetectorsForChart.AddRange(turnthrudetectors);
                        }
                    }

                    if (DetectorsForChart.Count > 0)
                    {
                        var TMCchart =
                            new TMCMetric(StartDate, EndDate, signal, direction,
                                          DetectorsForChart, lanetype, movementType, this, tmcInfo);
                        var chart = TMCchart.chart;
                        SetSimplePlanStrips(plans, chart, StartDate);
                        //Create the File Name

                        var chartName = CreateFileName();

                        //Save an image of the chart
                        chart.SaveImage(MetricFileLocation + chartName, ChartImageFormat.Jpeg);

                        //ReturnList.Add(MetricWebPath + chartName);
                        tmcInfo.ImageLocations.Add(MetricWebPath + chartName);
                    }
                }
            }
        }