示例#1
0
        public MOE.Common.Business.TMC.TMCInfo CreateMetric()
        {
            base.LogMetricRun();

            MOE.Common.Models.Repositories.ISignalsRepository repository =
                MOE.Common.Models.Repositories.SignalsRepositoryFactory.Create();
            Common.Models.Signal signal = repository.GetSignalBySignalID(SignalID);
            TmcInfo = new MOE.Common.Business.TMC.TMCInfo();
            MOE.Common.Business.PlanCollection plans = new MOE.Common.Business.PlanCollection(StartDate, EndDate, SignalID);


            MOE.Common.Models.Repositories.ILaneTypeRepository ltr = MOE.Common.Models.Repositories.LaneTypeRepositoryFactory.Create();
            List <Common.Models.LaneType> laneTypes = ltr.GetAllLaneTypes();

            MOE.Common.Models.Repositories.IMovementTypeRepository mtr = MOE.Common.Models.Repositories.MovementTypeRepositoryFactory.Create();
            List <Common.Models.MovementType> movementTypes            = mtr.GetAllMovementTypes();

            MOE.Common.Models.Repositories.IDirectionTypeRepository dtr = MOE.Common.Models.Repositories.DirectionTypeRepositoryFactory.Create();
            List <Common.Models.DirectionType> 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(Common.Models.Signal signal, string laneTypeDescription,
                                          List <Common.Models.LaneType> laneTypes, List <Common.Models.MovementType> movementTypes,
                                          List <Common.Models.DirectionType> directions, MOE.Common.Business.PlanCollection plans, MOE.Common.Business.TMC.TMCInfo tmcInfo)
        {
            foreach (Common.Models.DirectionType direction in directions)
            {
                List <Models.Approach> approaches = (from r in signal.Approaches
                                                     where r.DirectionType.DirectionTypeID == direction.DirectionTypeID
                                                     select r).ToList();

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

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


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

                    Common.Models.MovementType movementType = (from r in movementTypes
                                                               where r.MovementTypeID == x
                                                               select r).FirstOrDefault();

                    List <Models.Detector> 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)
                    {
                        List <Models.Detector> 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)
                    {
                        MOE.Common.Business.TMC.TMCMetric TMCchart =
                            new MOE.Common.Business.TMC.TMCMetric(StartDate, EndDate, signal, direction,
                                                                  DetectorsForChart, lanetype, movementType, this, tmcInfo);
                        Chart chart = TMCchart.chart;
                        SetSimplePlanStrips(plans, chart, StartDate);
                        //Create the File Name

                        string chartName = CreateFileName();

                        //Save an image of the chart
                        chart.SaveImage(MetricFileLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);

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