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"; */ }
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("分类失败!"); } }
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("分类失败!"); } }