예제 #1
0
        /// <summary>
        /// 底图区域功能按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Map_function_Click(object sender, EventArgs e)
        {
            ToolStripItem item = sender as ToolStripItem;

            switch (item.Name)
            {
            //rpc transform
            case "RPC_ToolStripMenuItem":
                RPCForm rpcForm = new RPCForm();
                if (rpcForm.ShowDialog() == DialogResult.OK)
                {
                    IJob rpcRectifyJob = new IJobRPCRectify(rpcForm.A, rpcForm.B, rpcForm.C, rpcForm.D, rpcForm.RPCParamaters, rpcForm.RawBinRasterFullFilenames);
                    RegisterJob(rpcRectifyJob);
                    rpcRectifyJob.Start();
                }
                break;

            //cov matrix
            case "cov_toolStripButton":
                COVForm covForm = new COVForm();
                covForm.RasterDic = _rasterDic;
                if (covForm.ShowDialog() == DialogResult.OK)
                {
                    GRasterBand band1        = _rasterDic[covForm.Target1Key].BandCollection[0];
                    GRasterBand band2        = _rasterDic[covForm.Target2Key].BandCollection[0];
                    IJob        covRasterJob = new JobCOVRaster(band1, band2);
                    RegisterJob(covRasterJob);
                    covRasterJob.Start();
                }
                break;

            //task
            case "task_toolStripButton":
                TaskMonitor taskForm = new TaskMonitor();
                taskForm.Jobs = _jobs;
                taskForm.ShowDialog();
                break;

            //calucte kappa
            case "kappa_toolStripButton":
                KappaForm kappaForm = new KappaForm();
                kappaForm.RasterDic = _rasterDic;
                kappaForm.ShowDialog();
                break;

            //添加图像
            case "open_toolstripmenuitem":
            case "open_contextMenuStrip":
                ReadImage();
                break;

            //超像素分割
            case "SLIC_toolStripButton":
            case "SLIC_toolStripMenu":
                Bitmap bmp = map_pictureBox.Image as Bitmap;
                if (bmp != null)
                {
                    ThreadStart slic_ts = delegate { RunSLIC(bmp); };
                    Thread      slic_t  = new Thread(slic_ts);
                    slic_t.IsBackground = true;
                    slic_t.Start();
                }
                else
                {
                    UpdateStatusLabel("未选中待计算图像,地图区域无图片", STATUE_ENUM.ERROR);
                }
                break;

            //super pixel
            case "SLIC_Center_toolStripButton":
            case "SLIC_Center_toolStripMenu":
                OpenFileDialog opg = new OpenFileDialog
                {
                    Filter = "JSON文件|*.json"
                };
                if (opg.ShowDialog() == DialogResult.OK)
                {
                    //1.读取center中心
                    using (StreamReader sr = new StreamReader(opg.FileName))
                    {
                        List <byte> colors  = new List <byte>();
                        Center[]    centers = SuperPixelSegment.ReadCenter(sr.ReadToEnd());
                        //2.设置使用图层
                        SLICForm centerApplyForm = new SLICForm();
                        if (centerApplyForm.ShowDialog() == DialogResult.OK)
                        {
                            ThreadStart s = delegate { RunCenter(centerApplyForm.FileNameCollection, centers); };
                            Thread      t = new Thread(s);
                            t.IsBackground = true;
                            t.Start();
                        }
                    }
                }
                break;

            //dqn classification
            case "DQN_toolStripButton":
                DQNForm dqnForm = new DQNForm();
                dqnForm.RasterDic = _rasterDic;
                if (dqnForm.ShowDialog() == DialogResult.OK)
                {
                    //"Image Classification",
                    if (dqnForm.TaskName == "Image Classification")
                    {
                        IJob dqnClassifyJob = new JobDQNClassify(_rasterDic[dqnForm.SelectedFeatureRasterLayer], _rasterDic[dqnForm.SelectedLabelRasterLayer], dqnForm.Epochs);
                        RegisterJob(dqnClassifyJob);
                        dqnClassifyJob.Start();
                    }
                    //"Road Extraction"
                    else if (dqnForm.TaskName == "Road Extraction")
                    {
                    }
                }
                break;

            //cnn classification
            case "CNN_toolStripButton":
                CNNForm cnnForm = new CNNForm();
                cnnForm.RasterDic = _rasterDic;
                if (cnnForm.ShowDialog() == DialogResult.OK)
                {
                    IJob cnnClassifyJob = new JobCNNClassify(_rasterDic[cnnForm.SelectedFeatureRasterLayer], _rasterDic[cnnForm.SelectedLabelRasterLayer], cnnForm.Epochs, cnnForm.Model, cnnForm.ImageWidth, cnnForm.ImageHeight, 1);
                    RegisterJob(cnnClassifyJob);
                    cnnClassifyJob.Start();
                }
                break;

            //random forest classification
            case "rf_toolStripButton":
                RandomForestForm rfForm = new RandomForestForm();
                rfForm.RasterDic = _rasterDic;
                if (rfForm.ShowDialog() == DialogResult.OK)
                {
                    IJob rfJob = new JobRFClassify(rfForm.TreeCount, rfForm.FullFilename, _rasterDic[rfForm.FeatureKey]);
                    RegisterJob(rfJob);
                    rfJob.Start();
                }
                break;

            //drawing comparsion multi-reslut curve
            case "Compare_Plot_toolStripButton":
                ComparedPlotForm cp_form = new ComparedPlotForm();
                cp_form.ShowDialog();
                break;

            default:
                break;
            }
        }