/* * private void classification_Click(object sender, EventArgs e) * { * //获取参数 * int ClassNums = int.Parse(textBox2.Text); * int SampleStep = int.Parse(textBox3.Text); * int MaxLoopCount =int.Parse(textBox4.Text) ; * double MoveThrs = double.Parse(textBox5.Text); * //int MinCellNums = int.Parse(textBox9.Text); * int MinCellNums = Convert.ToInt32(double.Parse(textBox9.Text) * width * height); * double MaxStd = double.Parse(textBox8.Text); * int MaxLumpNums = int.Parse(textBox7.Text); * double MinInterClassDist = double.Parse(textBox6.Text); * string DstRasURL = textBox1.Text; * int RBand = int.Parse(System.Text.RegularExpressions.Regex.Replace(RBandCmb.Text, @"[^0-9]+", "")); * int GBand = int.Parse(System.Text.RegularExpressions.Regex.Replace(GBandCmb.Text, @"[^0-9]+", "")); * int BBand = int.Parse(System.Text.RegularExpressions.Regex.Replace(BBandCmb.Text, @"[^0-9]+", "")); * * selectBands[0] = RBand; * selectBands[1] = GBand; * selectBands[2] = BBand; * * if (selectRasterCmb.Items.Contains(textBox1.Text)) * { * MessageBox.Show("该文件已存在!请重新输入文件名。"); * textBox1.Text = ""; * return; * } * * * rds = themeLayer.GetData() as RasterDataSet; * //MessageBox.Show(rds.ClsName); * //构建栅格分类器 * RasClass rc = new RasClass(); * //设置待分类影像 * rc.SetData(rds); * //设置处理范围 * rc.SetCommonParam(selectBands,0,0,height,width); * //设置分类结果URL * DstRasURL = "GDBP://MapGisLocal/" + selectDBCmb.Text + "/ras/"+ textBox1.Text; * //调用分类器 * //监督分类:最大似然法 * int i = rc.RsMaxLiklihoodSupervisedClassification(0.1, DstRasURL); * //非监督分类:ISODATA * //int i = rc.RsIsoClusterUnsupervisedClassification(ClassNums, MaxStd, MaxLoopCount, MoveThrs, MinInterClassDist, MinCellNums, MaxLumpNums, SampleStep, DstRasURL); * selectRasterCmb.Items.Add(textBox1.Text); * * * if (i == 1) { * MessageBox.Show("分类成功!"); * //将分类结果展示到界面上 * rds.Open(textBox1.Text, 0); * Map map = new Map(); * themeLayer = new RasterLayer(); * * if (rds != null) * themeLayer.AttachData(rds); * * map.Append(themeLayer); * this.mapControl.ActiveMap = map; * mapControl.Refresh(); * * //获取分类结果 * after_cls_rds.OpenByURL(DstRasURL, RasAccessType.RasAccessType_Update); * //如果是监督分类,需要给结果集设置AOI; * //after_cls_rds.SetAOIs((AOIPloygon[])rds.GetAOIs().Clone()); * after_cls_rds = setaoi(rds, after_cls_rds); * MessageBox.Show("分类结果的aoi有:"+after_cls_rds.GetAOIs().Length.ToString()); * //分类结果精度评定 * RasClassificationAnalyse rca = new RasClassificationAnalyse(); * //设置待评价影像(分类结果) * rca.SetData(after_cls_rds,after_cls_rds.BandCount); * //设置处理范围 * rca.SetCommonParam(0, 0, height, width); * * int j = rca.RsClassificationAccuracyAnalyse(rds, true, true, true, true, "classifaction_ana1.txt"); * MessageBox.Show("精度评定" + j.ToString()); * } * else{ * MessageBox.Show("分类失败"); * } * } */ private RasterDataSet setaoi(RasterDataSet oldrds, RasterDataSet newrds) { //设置AOI信息 AOIPloygon[] oldaois = oldrds.GetAOIs(); AOIPloygon[] newaois = newrds.GetAOIs(); AOIPloygon aoi = new AOIPloygon(); for (int i = 0; i < oldaois.Length; i++) { newaois[i].R = oldaois[i].R; newaois[i].G = oldaois[i].G; newaois[i].B = oldaois[i].B; } bool flag = newrds.SetAOIs(newaois); if (flag) { MessageBox.Show("AOI信息设置成功"); return(newrds); } else { MessageBox.Show("AOI信息设置失败"); return(null); } }
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 button_Click(object sender, EventArgs e) { //获取参数 //原始图像路径 string OriRasURL = "GDBP://MapGisLocal/" + selectDBCmb1.Text + "/ras/" + selectRasterCmb1.Text; //分类图像路径 string ClsRasURL = "GDBP://MapGisLocal/" + selectDBCmb2.Text + "/ras/" + selectRasterCmb2.Text; //评价结果路径 string result = resultPath.Text; //统计参数 bool ErrMatrix = false; bool ClsAccu = false; bool TtlAccu = false; bool Kappa = false; if (this.ErrMatrix.Checked == true) { ErrMatrix = true; } if (this.ClsAccu.Checked == true) { ClsAccu = true; } if (this.TtlAccu.Checked == true) { TtlAccu = true; } if (this.Kappa.Checked == true) { Kappa = true; } RasterDataSet ori_rds = new RasterDataSet(); RasterDataSet cls_rds = new RasterDataSet(); ori_rds.OpenByURL(OriRasURL, RasAccessType.RasAccessType_Update); cls_rds.OpenByURL(ClsRasURL, RasAccessType.RasAccessType_Update); //显示图像信息 height = cls_rds.GetPixelHeight(); width = cls_rds.GetPixelWidth(); //生成评价器 RasClassificationAnalyse rca = new RasClassificationAnalyse(); //设置初始参数 rca.SetData(cls_rds, cls_rds.BandCount); //设置处理范围 rca.SetCommonParam(0, 0, height, width); //调用评价器 int i = rca.RsClassificationAccuracyAnalyse(ori_rds, ErrMatrix, ClsAccu, TtlAccu, Kappa, result); if (i > 0) { MessageBox.Show("精度评价完成!"); } else { MessageBox.Show("精度评价失败!"); } }
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[] 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("分类失败!"); } }