Exemple #1
0
        /// <summary>
        /// Начать детектирование объектов на выбранных улицах
        /// </summary>
        /// <param name="roads">Список названий улиц</param>
        /// <param name="detectorsNames">Список названий детекторов, которые будут использоваться для детектирования объектов</param>
        /// <returns></returns>
        public SignDetectionProcessor StartDetection(List <string> roads, List <string> detectorsNames)
        {
            List <IDetector>       selectedDetectors = detectorsManager.Detectors.Where(x => detectorsNames.Contains(x.Name)).ToList();
            SignDetectionProcessor processor         = new SignDetectionProcessor(roads, selectedDetectors, dbContext);
            Thread bypassThread = new Thread(processor.Start);

            bypassThread.Start();
            return(processor);
        }
Exemple #2
0
        internal override void Process()
        {
            List <string> streets = new List <string>();

            foreach (DataGridViewRow row in mainForm.StreetsBypassView.Rows)
            {
                bool rowSelected = (bool)row.Cells[2].Value;
                if (rowSelected)
                {
                    streets.Add((string)row.Cells[0].Value);
                }
            }

            if (streets.Count > 0)
            {
                ConcurrencyUtils.SetAvailability(mainForm.DetectSignsInViewsButton, false);

                GeographiData geoData = GeographiData.Instance;
                foreach (string roadName in streets)
                {
                    Road road = geoData.Roads[roadName];
                    foreach (PolylineChunk chunk in road.PolylineChunks)
                    {
                        if (chunk.IsSignDetected)
                        {
                            mainForm.GMapForm.MiniMapRoute.DeHighlightPolylineChunk(chunk.OverpassId, true);
                        }
                    }

                    List <string> selectedDetectorsNames = mainForm.GetCheckedDetectorsNamesList();
                    if (selectedDetectorsNames.Count > 0)
                    {
                        processor = controller.StartDetection(streets, selectedDetectorsNames);
                        Thread byPassStatusThread = new Thread(UpdateStatus);
                        byPassStatusThread.Start();
                    }
                    else
                    {
                        ConcurrencyUtils.SetAvailability(mainForm.DetectSignsInViewsButton, true);
                    }
                }
            }
        }