Exemplo n.º 1
0
        private void selectRasterCmb_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (selectDBCmb.Text == null || selectRasterCmb.Text == null)
            {
                return;
            }

            RBandCmb.Items.Clear();
            GBandCmb.Items.Clear();
            BBandCmb.Items.Clear();

            rds = new RasterDataSet(GDB);
            rds.Open(selectRasterCmb.Text, 0);

            //将波段添加到各个comoBox中
            for (int i = 0; i < rds.GetBandNum(); i++)
            {
                RasBand = rds.GetRasterBand(i + 1);
                RBandCmb.Items.Add("波段" + (i + 1));
                GBandCmb.Items.Add("波段" + (i + 1));
                BBandCmb.Items.Add("波段" + (i + 1));
            }



            //在地图空间中显示该图层
            Map map = new Map();

            themeLayer = new RasterLayer();

            if (rds != null)
            {
                themeLayer.AttachData(rds);
            }

            map.Append(themeLayer);
            this.mapControl.ActiveMap = map;
            this.mapControl.Restore();


            RBandCmb.Text = "";
            GBandCmb.Text = "";
            BBandCmb.Text = "";

            if (RBandCmb.Items.Count >= 3 && GBandCmb.Items.Count >= 3 && BBandCmb.Items.Count >= 3)
            {
                RBandCmb.Enabled = true;
                GBandCmb.Enabled = true;
                BBandCmb.Enabled = true;

                RBandCmb.SelectedIndex = 0;
                GBandCmb.SelectedIndex = 1;
                BBandCmb.SelectedIndex = 2;
            }
            else
            {
                RBandCmb.Enabled = false;
                GBandCmb.Enabled = false;
                BBandCmb.Enabled = false;
            }

            //显示图像信息
            height = rds.GetPixelHeight();
            width  = rds.GetPixelWidth();

            labelHeight.Text = height.ToString();
            labelWidth.Text  = Width.ToString();

            labelHeight.Visible = true;
            labelWidth.Visible  = true;

            //显示图像分辨率
            resolutionX = rds.GetResolutionX();
            resolutionY = rds.GetResolutionY();

            labelResolutionX.Text = resolutionX.ToString();
            labelResolutionY.Text = resolutionY.ToString();

            labelResolutionX.Visible = true;
            labelResolutionY.Visible = true;



            //给分类器设置参数

            /*
             * textBox2.Text = "4";
             * textBox3.Text = "16";
             * textBox4.Text = "20";
             * textBox5.Text = "0.01";
             * textBox9.Text = "0.005";
             * textBox8.Text = "9.8";
             * textBox7.Text = "5";
             * textBox6.Text = "6.4";
             */
        }
Exemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            //获取参数
            int    ClassNums         = int.Parse(this.ClassNums.Text);
            int    SampleStep        = int.Parse(this.SampleStep.Text);
            int    MaxLoopCount      = int.Parse(this.MaxLoopCount.Text);
            double MoveThrs          = double.Parse(this.MoveThrs.Text);
            int    MinCellNums       = Convert.ToInt32(double.Parse(this.MinCellNums.Text) * form.width * form.height);
            double MaxStd            = double.Parse(this.MaxStd.Text);
            int    MaxLumpNums       = int.Parse(this.MaxLumpNums.Text);
            double MinInterClassDist = double.Parse(this.MinInterClassDist.Text);
            string DstRasURL         = "GDBP://MapGisLocal/" + form.selectDBCmb.Text + "/ras/" + this.DstRasURL.Text;



            //获取待分类影像
            RasterDataSet rds = form.themeLayer.GetData() as RasterDataSet;

            //获取波段信息
            int[] selectBands = new int[rds.BandCount];
            for (int n = 1; n <= rds.BandCount; n++)
            {
                selectBands[n - 1] = n;
            }

            //构建栅格分类器
            RasClass rc = new RasClass();

            //设置待分类影像
            rc.SetData(rds);
            //设置处理范围
            rc.SetCommonParam(selectBands, 0, 0, form.height, form.width);
            //调用分类器
            //非监督分类:ISODATA
            int i = rc.RsIsoClusterUnsupervisedClassification(ClassNums, MaxStd, MaxLoopCount, MoveThrs, MinInterClassDist, MinCellNums, MaxLumpNums, SampleStep, DstRasURL);

            if (i == 1)
            {
                MessageBox.Show("分类成功!");
                //将分类结果展示到界面上
                rds.Open(DstRasURL, 0);
                //添加分类影像到数据库
                form.selectRasterCmb.Text = this.DstRasURL.Text;
                Map map = new Map();
                form.themeLayer = new RasterLayer();

                if (rds != null)
                {
                    form.themeLayer.AttachData(rds);
                }

                map.Append(form.themeLayer);
                form.mapControl.ActiveMap = map;
                form.mapControl.Refresh();
                this.Close();
            }
            else
            {
                MessageBox.Show("分类失败!");
            }
        }
Exemplo n.º 3
0
        private void button1_Click(object sender, EventArgs e)
        {
            int[] selectBands = new int[3];

            //获取波段信息
            int RBand = int.Parse(System.Text.RegularExpressions.Regex.Replace(form.RBandCmb.Text, @"[^0-9]+", ""));
            int GBand = int.Parse(System.Text.RegularExpressions.Regex.Replace(form.GBandCmb.Text, @"[^0-9]+", ""));
            int BBand = int.Parse(System.Text.RegularExpressions.Regex.Replace(form.BBandCmb.Text, @"[^0-9]+", ""));

            selectBands[0] = RBand;
            selectBands[1] = GBand;
            selectBands[2] = BBand;

            double minProbability = 0;

            //获取参数
            try
            {
                minProbability = double.Parse(this.minProb.Text);
            }
            catch (Exception ex) {
                MessageBox.Show("参数“最小概率”输入非法");
                return;
            }
            string DstRasURL = "GDBP://MapGisLocal/" + form.selectDBCmb.Text + "/ras/" + distanceURL.Text;

            //MessageBox.Show(DstRasURL);
            if (form.selectRasterCmb.Items.Contains(distanceURL.Text))
            {
                MessageBox.Show("该文件已存在!请重新输入文件名。");
                distanceURL.Text = "";
                return;
            }

            //获取待分类影像
            RasterDataSet rds = form.themeLayer.GetData() as RasterDataSet;

            //构建栅格分类器
            RasClass rc = new RasClass();

            //设置待分类影像
            rc.SetData(rds);
            //设置处理范围
            rc.SetCommonParam(selectBands, 0, 0, form.height, form.width);
            //调用分类器
            //监督分类:最大似然法
            int i = rc.RsMaxLiklihoodSupervisedClassification(minProbability, DstRasURL);

            form.selectRasterCmb.Items.Add(distanceURL.Text);

            if (i == 1)
            {
                MessageBox.Show("分类成功!");
                //将分类结果展示到界面上
                rds.Open(distanceURL.Text, 0);
                //添加分类影像到数据库
                form.selectRasterCmb.Text = distanceURL.Text;
                Map map = new Map();
                form.themeLayer = new RasterLayer();

                if (rds != null)
                {
                    form.themeLayer.AttachData(rds);
                }

                map.Append(form.themeLayer);
                form.mapControl.ActiveMap = map;
                form.mapControl.Refresh();
                this.Close();
            }
            else
            {
                MessageBox.Show("分类失败!");
            }
        }