//初始化加载底图 private void InitMapCtr() { IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"D:\RasterMaSysTemp\hhData", 0); IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; if (pFeatureWorkspace != null) { IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass("洪湖水域.shp"); IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.Name = "洪湖水域"; pFeatureLayer.FeatureClass = pFeatureClass; //设置为湖泊符号渲染 IGeoFeatureLayer pGeoFeatureLayer = (IGeoFeatureLayer)pFeatureLayer; IFillSymbol pFillSymbol = new SimpleFillSymbolClass(); pFillSymbol.Color = DataShowControl.GetColor(151, 219, 242); ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); pLineSymbol.Color = DataShowControl.GetColor(64, 101, 235); pLineSymbol.Width = 0.4; pFillSymbol.Outline = pLineSymbol; ISimpleRenderer pSimpleRenderer = new SimpleRendererClass(); pSimpleRenderer.Symbol = (ISymbol)pFillSymbol; pGeoFeatureLayer.Renderer = pSimpleRenderer as IFeatureRenderer; //添加图层 axMapControl1.Map.AddLayer(pGeoFeatureLayer); axMapControl1.ActiveView.Extent = axMapControl1.ActiveView.FullExtent; } }
//点击确认后开始提取湖区面积 private void btn_OK_Click(object sender, EventArgs e) { string input = this.txb_input.Text.Trim(); int threshold = Convert.ToInt32(this.thresholdNum.Value); string output = this.txb_output.Text.Trim(); bool diaplay = this.isDisplayResult.Checked; this.WriteRemapAscii(threshold); if (!File.Exists(output)) { //调用GP工具进行湖区提取 GpToolsClass gpTools = new GpToolsClass(); gpTools.CalculateBoundary(input, output); //调用显示工具进行显示 if (diaplay && File.Exists(output)) { DataShowControl dataShow = new DataShowControl(this._axMapControl.Map); dataShow.DisplayShp(output); } } else { MessageBox.Show("指定的输出文件已存在,请修改输出名称"); } }
//辐射定标 private void btn_OK_Click(object sender, EventArgs e) { string inputStr = this.txb_input.Text.Trim(); string outputStr = this.txb_output.Text.Trim(); //检查输入的头文件和保存路径是否正确 if (File.Exists(inputStr) && Directory.Exists(outputStr)) { FileInfo fileInfo = new FileInfo(inputStr); if (fileInfo.Extension == ".txt") { //调用辐射定标函数 string[] resultStr = IdlProcess.IdlRadCalibration(inputStr, outputStr); //如果勾选显示结果,则调用影像显示函数 if (isDisplayResult.Checked) { DataShowControl imgShow = new DataShowControl(pMapControl.Map); imgShow.DisplayImg(resultStr[0]); imgShow.DisplayImg(resultStr[1]); } //完成定标和显示后关闭当前窗口 this.Dispose(); } else { MessageBox.Show("输入的Landsat头文件格式不正确,正确格式为*._MTL.txt"); } } else { MessageBox.Show("输入的文件或文件夹不存在,请修改!"); } }
//保存图片 private void btn_saveImg_Click(object sender, EventArgs e) { IMap pMap = this.axPageLayoutControl1.ActiveView.FocusMap; int count = pMap.LayerCount; if (count > 0) { string savePath = InitInput.InitSaveFile("bmp图像|*.bmp"); DataShowControl.SaveCurrentToImage(this.axPageLayoutControl1, savePath); MessageBox.Show("图像保存成功!"); } }
// 刷新按钮,刷新波段选择 private void btn_refresh_Click(object sender, EventArgs e) { //首先获取图层列表 //获取用户选择的展示要求,灰度还是RGB //获取波段设置 //刷新显示 var selectLayerName = cmb_layerList.SelectedItem.ToString(); //store band setting var bandSet = new int[3]; bandSet[0] = cmb_bandR.SelectedIndex; bandSet[1] = cmb_bandG.SelectedIndex; bandSet[2] = cmb_bandB.SelectedIndex; //process Method var imgShow = new DataShowControl(axMapControl1.Map); imgShow.SetImgBand(selectLayerName, bandSet); }
//查看按钮 private void btn_showData_Click(object sender, EventArgs e) { //先清除底图之外的图层 int count = this.axMapControl1.Map.LayerCount; if (count > 1) { for (int i = 0; i < count - 1; i++) { ILayer layer = this.axMapControl1.get_Layer(i); if (layer.Name != "洪湖水域") { this.axMapControl1.Map.DeleteLayer(layer); } } } //获取选择信息 string selectShp = this.cmb_dataList.SelectedValue.ToString(); string selectFiled = this.cmb_FieldList.SelectedValue.ToString(); //打开数据,获取要素图层 IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"D:\RasterMaSysTemp\hhWaterQuality", 0); IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; if (pFeatureWorkspace != null) { IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(selectShp); IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = selectShp; if (pFeatureClass != null) { //添加水质数据并分级渲染显示 DataShowControl dataShow = new DataShowControl(this.axMapControl1.Map); dataShow.SimpleRenderByColor(pFeatureLayer, selectFiled); } } }
//点击确定,开始校正 private void btn_OK_Click(object sender, EventArgs e) { string inputFile = ""; if (this.cmb_inputIMG.SelectedItem != null) { inputFile = this.cmb_inputIMG.ValueMember; } else { inputFile = this.cmb_inputIMG.Text; } string outputName = this.txb_output.Text.Trim(); //进行大气校正 IdlProcess.IdlAtmoCorrection(inputFile, outputName); //展示结果 if (this.isDisplayResult.Checked) { DataShowControl imgShowControl = new DataShowControl(this._axMapControl.Map); imgShowControl.DisplayImg(outputName); } this.Dispose(); }