Beispiel #1
0
        public override void Run()
        {
            // 读取设置参数
            var form = new DTCaSetUpForm();

            form.ShowDialog();

            if (form.DialogResult != DialogResult.OK)
            {
            }
            else
            {
                var inputColumnNames = form.driveLayerNames;
                var outputColumnName = form.beginLayerName;
                LandUseClassificationInfo landUseInfo = form.LandUse;
                if (landUseInfo == null)
                {
                    landUseInfo          = new LandUseClassificationInfo();
                    landUseInfo.AllTypes = new List <StructLanduseInfo>()
                    {
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "城市", LandUseTypeValue = 1.0, LandUseTypeColor = Color.Black.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "非城市", LandUseTypeValue = 0.0, LandUseTypeColor = Color.White.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "水体", LandUseTypeValue = 2.0, LandUseTypeColor = Color.Blue.ToArgb()
                        },
                    };
                    landUseInfo.ConvertableInfos.Add(new StructLanduseInfo()
                    {
                        LandUseTypeName = "非城市", LandUseTypeValue = 0.0, LandUseTypeColor = Color.White.ToArgb()
                    });
                    landUseInfo.NullInfo = new StructLanduseInfo()
                    {
                        LandUseTypeName = "空值", LandUseTypeValue = -9999.0, LandUseTypeColor = Color.Transparent.ToArgb()
                    };
                    landUseInfo.UnConvertableInfos.Add(new StructLanduseInfo()
                    {
                        LandUseTypeName = "水体", LandUseTypeValue = 2.0, LandUseTypeColor = Color.Blue.ToArgb()
                    });
                    landUseInfo.UrbanInfos.Add(new StructLanduseInfo()
                    {
                        LandUseTypeName = "城市", LandUseTypeValue = 1.0, LandUseTypeColor = Color.Black.ToArgb()
                    });
                }

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

                // 初始化树
                var tree = new CaDecisionTree(inputColumnNames, outputColumnName);
                tree.updateConsoleInfoEvent += UpdateConsole;
                tree.updateImageEvent       += UpdateImage;
                tree.LandUseInfo             = landUseInfo;
                tree.SampleRate              = form.RateOfSample;
                // 显示模拟图像
                this.imageForm        = new ImageForm(tree.OuputBuffer, tree.Width, tree.Height, landUseInfo);
                this.imageForm.Width  = tree.Width;
                this.imageForm.Height = tree.Height;
                imageForm.Show();
                // 开始训练模拟
                Thread threadSimulate = new Thread(new ParameterizedThreadStart(tree.Run));
                threadSimulate.IsBackground = true;
                threadSimulate.Start(form.NumOfSimulate);
            }
        }
        public void Run()
        {
            // 读取设置参数
            var form = new DTCaSetUpForm();

            form.ShowDialog();

            if (form.DialogResult != DialogResult.OK)
            {
                // 错误终止
                return;
            }
            else
            {
                LandUseClassificationInfo landUseInfo = form.LandUse;
                // 默认的土地利用信息
                if (landUseInfo == null)
                {
                    landUseInfo          = new LandUseClassificationInfo();
                    landUseInfo.AllTypes = new List <StructLanduseInfo>()
                    {
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "城市", LandUseTypeValue = 1.0, LandUseTypeColor = Color.Black.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "非城市", LandUseTypeValue = 0.0, LandUseTypeColor = Color.White.ToArgb()
                        },
                        new StructLanduseInfo()
                        {
                            LandUseTypeName = "水体", LandUseTypeValue = 2.0, LandUseTypeColor = Color.Blue.ToArgb()
                        },
                    };
                    landUseInfo.ConvertableInfos.Add(new StructLanduseInfo()
                    {
                        LandUseTypeName = "非城市", LandUseTypeValue = 0.0, LandUseTypeColor = Color.White.ToArgb()
                    });
                    landUseInfo.NullInfo = new StructLanduseInfo()
                    {
                        LandUseTypeName = "空值", LandUseTypeValue = -9999.0, LandUseTypeColor = Color.Transparent.ToArgb()
                    };
                    landUseInfo.UnConvertableInfos.Add(new StructLanduseInfo()
                    {
                        LandUseTypeName = "水体", LandUseTypeValue = 2.0, LandUseTypeColor = Color.Blue.ToArgb()
                    });
                    landUseInfo.UrbanInfos.Add(new StructLanduseInfo()
                    {
                        LandUseTypeName = "城市", LandUseTypeValue = 1.0, LandUseTypeColor = Color.Black.ToArgb()
                    });
                }

                // 初始化控制台

                // 初始化树
                var tree = new DecisionTreeCa(form.driveLayerNames, form.beginLayerName, form.endLayerName);

                // 注册事件
                tree.updateConsoleEvent += UpdateConsole;
                tree.updateImageEvent   += UpdateImage;
                tree.simulateEndEvent   += SimulateEnd;
                tree.updateChartEvent   += UpdateChart;
                // 设置参数
                tree.LandInfo   = landUseInfo;
                tree.SampleRate = form.RateOfSample;
                tree.EndCityCnt = form.EndCityCnt;
                // 显示模拟图像
                this.imageForm        = new ImageForm(tree.BeginBuffer, tree.Width, tree.Height, landUseInfo);
                this.imageForm.Width  = tree.Width;
                this.imageForm.Height = tree.Height;
                imageForm.Show();

                //// 线程池
                //Action<object> simulate = tree.Run;
                //simulate.BeginInvoke(form.NumOfSimulate, null, null);

                Thread threadSimulate = new Thread(new ParameterizedThreadStart(tree.Run));
                threadSimulate.IsBackground = true;
                threadSimulate.Start(form.NumOfSimulate);

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