예제 #1
0
        public override void Run()
        {
            // 显示设置参数窗口
            var setUpForm = new AnnCaSetUpForm();

            setUpForm.ShowDialog();

            if (setUpForm.DialogResult != DialogResult.OK)
            {
            }
            else
            {
                // 获得参数
                string        beginLayerName  = setUpForm.beginLayerName;
                string        endLayerName    = setUpForm.endLayerName;
                List <string> driveLayerNames = setUpForm.driveLayerNames;

                int    numOfSample   = setUpForm.NumOfSample;
                int    numOfTrain    = setUpForm.NumOfTrain;
                int    numOfSimulate = setUpForm.NumOfSimulate;
                double threshold     = setUpForm.Threshold;
                double alpha         = setUpForm.Alpha;

                LandUseClassificationInfo landInfo = setUpForm.LandUse;

                // 显示控制台
                this.consolePad = WorkbenchSingleton.Workbench.GetPad(typeof(ConsolePad)).PadContent.Control as GIS.Common.Dialogs.Console.Console;

                WorkbenchSingleton.Workbench.GetPad(typeof(ConsolePad)).BringPadToFront();

                //string beginLayerName = "2001";
                //string endLayerName = "2006";
                //List<string> driveLayerNames = new List<string>() { "dem", "distocity", "distohighway", "distorailway", "distoroad", "distotown", "slope" };

                if (landInfo == null)
                {
                    landInfo          = new LandUseClassificationInfo();
                    landInfo.NullInfo = new StructLanduseInfo()
                    {
                        LandUseTypeColor = Color.White.ToArgb(), LandUseTypeName = "NULL", LandUseTypeValue = -3.40282306074e+038
                    };
                    landInfo.AllTypes = new List <StructLanduseInfo>()
                    {
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "城市", LandUseTypeValue = 1, LandUseTypeColor = Color.Black.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "水", LandUseTypeValue = 2, LandUseTypeColor = Color.Blue.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "田", LandUseTypeValue = 3, LandUseTypeColor = Color.Yellow.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "森林", LandUseTypeValue = 4, LandUseTypeColor = Color.Green.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "果园", LandUseTypeValue = 5, LandUseTypeColor = Color.LightPink.ToArgb()
                        }
                    };
                }



                // 设置网络
                var network = new AnnCa(beginLayerName, endLayerName, driveLayerNames, landInfo);
                network.NumOfSamples = numOfSample;
                network.TimesOfTrain = numOfTrain;
                network.Threshold    = threshold;
                network.Alpha        = alpha;


                network.updateConsoleEvent += this.UpdateConsole;
                network.updateImageEvent   += this.UpdateImage;

                // 设置图像显示
                this.imageForm = new ImageForm(network.BeginBuffer, network.Width, network.Height, landInfo);
                this.imageForm.Show();
                // 开始模拟
                Thread threadSimulate = new Thread(new ParameterizedThreadStart(network.Run));
                threadSimulate.IsBackground = true;
                threadSimulate.Start(numOfSimulate);
            }
        }
예제 #2
0
        public void Run()
        {
            // 显示设置参数窗口
            var setUpForm = new AnnCaSetUpForm();

            setUpForm.ShowDialog();

            if (setUpForm.DialogResult != DialogResult.OK)
            {
            }
            else
            {
                // 获得参数
                string        beginLayerName  = setUpForm.beginLayerName;
                string        endLayerName    = setUpForm.endLayerName;
                List <string> driveLayerNames = setUpForm.driveLayerNames;

                int    numOfSample     = setUpForm.NumOfSample;
                int    numOfTrain      = setUpForm.NumOfTrain;
                int    numOfSimulate   = setUpForm.NumOfSimulate;
                int    sizeOfNeighbour = setUpForm.SizeOfNeighbour;
                double threshold       = setUpForm.Threshold;
                double alpha           = setUpForm.Alpha;

                LandUseClassificationInfo landInfo = setUpForm.LandUse;



                //string beginLayerName = "2001";
                //string endLayerName = "2006";
                //List<string> driveLayerNames = new List<string>() { "dem", "distocity", "distohighway", "distorailway", "distoroad", "distotown", "slope" };

                if (landInfo == null)
                {
                    landInfo          = new LandUseClassificationInfo();
                    landInfo.NullInfo = new StructLanduseInfo()
                    {
                        LandUseTypeColor = Color.White.ToArgb(), LandUseTypeName = "NULL", LandUseTypeValue = -3.40282306074e+038
                    };
                    landInfo.AllTypes = new List <StructLanduseInfo>()
                    {
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "城市", LandUseTypeValue = 1, LandUseTypeColor = Color.Black.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "水", LandUseTypeValue = 2, LandUseTypeColor = Color.Blue.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "田", LandUseTypeValue = 3, LandUseTypeColor = Color.Yellow.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "森林", LandUseTypeValue = 4, LandUseTypeColor = Color.Green.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "果园", LandUseTypeValue = 5, LandUseTypeColor = Color.LightPink.ToArgb()
                        }
                    };
                }



                // 设置网络
                this.network                   = new AnnCa(beginLayerName, endLayerName, driveLayerNames, landInfo);
                network.NumOfSamples           = numOfSample;
                network.TimesOfTrain           = numOfTrain;
                network.Threshold              = threshold;
                network.Alpha                  = alpha;
                network.SizeOfNeighbour        = sizeOfNeighbour;
                network.EndCityCnt             = setUpForm.EndCityCnt;
                network.TransformControlMatrix = setUpForm.TransformControlMatrix;
                network.updateConsoleEvent    += this.UpdateConsole;
                network.updateImageEvent      += this.UpdateImage;
                network.updateChartEvent      += this.UpdateChart;
                network.simulateEndEvent      += this.SimulateEnd;

                // 设置图像显示
                this.imageForm = new ImageForm(network.BeginBuffer, network.Width, network.Height, landInfo);

                this.imageForm.Show();
                //// 开始模拟

                Thread threadSimulate = new Thread(new ParameterizedThreadStart(network.Run));

                threadSimulate.IsBackground = true;
                threadSimulate.Start(numOfSimulate);

                this.imageForm.ThreadSimulate = threadSimulate;
                this.imageForm.ActiveButton();


                //Action<object> simulate = network.Run;
                //simulate.BeginInvoke(numOfSimulate, null, null);
            }
        }