Esempio n. 1
0
        private void CheckAllSignals(List <Models.Signal> signals)
        {
            TimeSpan        startHour     = new TimeSpan(Settings.ScanDayStartHour, 0, 0);
            TimeSpan        endHour       = new TimeSpan(Settings.ScanDayEndHour, 0, 0);
            DateTime        AnalysisStart = ScanDate.Date + startHour;
            DateTime        AnalysisEnd   = ScanDate.Date + endHour;
            ParallelOptions options       = new ParallelOptions();

            options.MaxDegreeOfParallelism = Settings.MaxDegreeOfParallelism;

            Parallel.ForEach(signals, options, signal =>
                             //foreach(var signal in signals)
            {
                MOE.Common.Business.AnalysisPhaseCollection APcollection =
                    new MOE.Common.Business.AnalysisPhaseCollection(signal.SignalID,
                                                                    AnalysisStart, AnalysisEnd, Settings.ConsecutiveCount);

                foreach (MOE.Common.Business.AnalysisPhase phase in APcollection.Items)
                //Parallel.ForEach(APcollection.Items, options,phase =>
                {
                    CheckForMaxOut(phase, signal);
                    CheckForForceOff(phase, signal);
                    CheckForStuckPed(phase, signal);
                }
                // );
            });
        }
Esempio n. 2
0
        protected void AddTermEventDataToChart(Chart chart, DateTime startDate,
                                               DateTime endDate, MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection,
                                               string signalId, bool showVolume, bool showPlanStripes)
        {
            foreach (MOE.Common.Business.AnalysisPhase phase in analysisPhaseCollection.Items)
            {
                if (phase.TerminationEvents.Count > 0)
                {
                    foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.ConsecutiveGapOuts)
                    {
                        chart.Series["GapOut"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber);
                    }

                    foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.ConsecutiveMaxOut)
                    {
                        chart.Series["MaxOut"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber);
                    }

                    foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.ConsecutiveForceOff)
                    {
                        chart.Series["ForceOff"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber);
                    }

                    foreach (MOE.Common.Business.ControllerEvent TermEvent in phase.UnknownTermination)
                    {
                        chart.Series["UnknownTermination"].Points.AddXY(TermEvent.TimeStamp, phase.PhaseNumber);
                    }

                    if (showVolume)
                    {
                        foreach (MOE.Common.Business.ControllerEvent PedEvent in phase.PedestrianEvents)
                        {
                            chart.Series["Ped Walk Begin"].Points.AddXY(PedEvent.TimeStamp, (phase.PhaseNumber + .3));
                        }
                    }
                }
                if (showPlanStripes)
                {
                    SetSimplePlanStrips(analysisPhaseCollection.Plans, chart, startDate);
                }
            }
        }
Esempio n. 3
0
        public string CreateChart(DateTime startDate,
                                  DateTime endDate,
                                  string signalId,
                                  bool showPedWalkStartTime,
                                  int consecutiveCount,
                                  string location,
                                  bool showPlanStripes
                                  )
        {
            string returnString = string.Empty;

            string chartLocation = ConfigurationManager.AppSettings["ImageLocation"] + @"Phase Termination Charts\";


            string chartName = "PPT-" +
                               signalId +
                               "-" +
                               startDate.Year.ToString() +
                               startDate.ToString("MM") +
                               startDate.ToString("dd") +
                               startDate.ToString("HH") +
                               startDate.ToString("mm") +
                               "-" +
                               endDate.Year.ToString() +
                               endDate.ToString("MM") +
                               endDate.ToString("dd") +
                               endDate.ToString("HH") +
                               endDate.ToString("mm-") +
                               consecutiveCount.ToString();

            if (showPedWalkStartTime)
            {
                chartName += "-PED";
            }
            if (showPlanStripes)
            {
                chartName += "-PLN";
            }
            Random r = new Random();

            chartName += r.Next().ToString();
            chartName += ".jpg";

            //if (endDate <= DateTime.Today)
            //{
            //    if (File.Exists(chartLocation + chartName))
            //    {
            //        returnString = chartName;
            //    }

            //}

            if (returnString == string.Empty)
            {
                Chart chart = new Chart();
                MOE.Common.Business.AnalysisPhaseCollection analysisPhaseCollection =
                    new MOE.Common.Business.AnalysisPhaseCollection(signalId, startDate,
                                                                    endDate, consecutiveCount);

                //If there are phases in the collection add the charts
                if (analysisPhaseCollection.Items.Count > 0)
                {
                    chart = GetNewTermEventChart(startDate, endDate, signalId, location,
                                                 consecutiveCount, analysisPhaseCollection.MaxPhaseInUse, showPedWalkStartTime);
                    AddTermEventDataToChart(chart, startDate, endDate, analysisPhaseCollection, signalId,
                                            showPedWalkStartTime, showPlanStripes);
                }

                chart.SaveImage(chartLocation + chartName, System.Web.UI.DataVisualization.Charting.ChartImageFormat.Jpeg);
                returnString = chartName;
            }

            return(returnString);
        }