private void buttonX1_Click(object sender, EventArgs e) { try { string[] a = new string[2]; a[0] = "ClassId00"; a[1] = "Class_Name"; string[] b = new string[2]; b[0] = "ClassId09"; b[1] = "name"; Datasource Ds = SampleRun.workspace1.Datasources[0]; string name_1 = comboBoxEx2.SelectedItem.ToString(); //图层1 string name_2 = comboBoxEx3.SelectedItem.ToString(); //图层2 DatasetVector dataset = SampleRun.mapControl1.Map.Layers[name_1].Dataset as DatasetVector; //第一数据集 DatasetVector eraseDataset = SampleRun.mapControl1.Map.Layers[name_2].Dataset as DatasetVector; //第二数据集 OverlayAnalystParameter parameter = new OverlayAnalystParameter(); DatasetVectorInfo datasetvectorInfoUpdate = new DatasetVectorInfo(); String DtName = Ds.Datasets.GetAvailableDatasetName("new"); datasetvectorInfoUpdate.Type = dataset.Type; datasetvectorInfoUpdate.Name = DtName; parameter.SourceRetainedFields = a; parameter.OperationRetainedFields = b; DatasetVector exdv = Ds.Datasets.Create(datasetvectorInfoUpdate); bool c = OverlayAnalyst.Union(dataset, eraseDataset, exdv, parameter); SampleRun.layersControl1.Map.Layers.Add(exdv, true); SampleRun.layersControl1.Map.Refresh(); } catch { MessageBox.Show("两图层不在同一坐标系中!"); } }
private void button2_Click(object sender, EventArgs e) { //建新图层 string tableName1 = gkfqd.Common.DbUse.JXGetTownCode(comboBox3.Text) + "_" + comboBox5.Text; //现状图层 string tableName2 = gkfqd.Common.DbUse.GHGetTownCode(comboBox3.Text) + "_" + comboBox5.Text; splashScreenManager1.ShowWaitForm(); splashScreenManager1.SetWaitFormCaption("正在叠加图层"); splashScreenManager1.SetWaitFormDescription("请等待..."); //年份选择 string strYear = tableName2; DatasetVector datasetOperated = importDatasource.Datasets[strYear] as DatasetVector; if (datasetOperated == null) { MessageBox.Show("请选择有效的叠加年份"); splashScreenManager1.CloseWaitForm(); return; } Recordset recordset2 = datasetOperated.GetRecordset(false, CursorType.Dynamic); //创建一个面矢量数据集,用于存储相交分析获得的结果 importDatasource.Datasets.Delete("JXsuperposition"); String resultDatasetInteresectName = importDatasource.Datasets.GetAvailableDatasetName("JXsuperposition"); DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo(); datasetvectorInfoIntersect.Type = DatasetType.Region; datasetvectorInfoIntersect.Name = resultDatasetInteresectName; datasetvectorInfoIntersect.EncodeType = EncodeType.None; DatasetVector resultDatasetIntersect = importDatasource.Datasets.Create(datasetvectorInfoIntersect); //设置投影信息 不设置 报投影不一致错误 resultDatasetIntersect.Datasource.Datasets["JXsuperposition"].PrjCoordSys = importDatasource.Datasets[strYear].PrjCoordSys; //设置叠加分析参数 OverlayAnalystParameter overlayAnalystParamIntersect = new OverlayAnalystParameter(); overlayAnalystParamIntersect.Tolerance = 0.0000011074; // overlayAnalystParamIntersect.SourceRetainedFields= {"FKXMMC";"DLMC";"DLBM"}; // 现状图层 jxtc FieldInfos fieldInfos = datasetOperated.FieldInfos; string[] mFiels = new string[fieldInfos.Count]; for (int i = 0; i < fieldInfos.Count; i++) { mFiels[i] = fieldInfos[i].Name; } //string[] gk = { "ZYMJ", "DLMC", "DLBM" }; overlayAnalystParamIntersect.SourceRetainedFields = mFiels; // overlayAnalystParamIntersect.SourceRetainedFields= [ "TBBH"]; //工矿废弃地图层 string[] languages = { tableName1 }; // overlayAnalystParamIntersect.OperationRetainedFields= {"GD";"LD"}; overlayAnalystParamIntersect.OperationRetainedFields = languages; //调用相交叠加分析方法实相交分析 bool flag = OverlayAnalyst.Intersect(recordset2, recordset, resultDatasetIntersect, overlayAnalystParamIntersect); if (flag) { this.v_XJQKTableAdapter.Fill(this.gk0431.V_XJQK); this.reportViewer1.RefreshReport(); splashScreenManager1.CloseWaitForm(); } else { MessageBox.Show("叠加失败"); return; } }
private void button2_Click(object sender, EventArgs e) { //复垦图层 string tableName1 = gkfqd.Common.DbUse.FXGetTownCode(comboBox3.Text) + "_" + comboBox5.Text; //现状图层 string tableName2 = gkfqd.Common.DbUse.XZGetTownCode(comboBox3.Text) + "_" + comboBox5.Text; splashScreenManager1.ShowWaitForm(); splashScreenManager1.SetWaitFormCaption("正在叠加图层"); splashScreenManager1.SetWaitFormDescription("请等待..."); //年份选择,即现状图层 string strYear = tableName2; DatasetVector datasetOperated = importDatasource.Datasets[strYear] as DatasetVector; if (datasetOperated == null) { MessageBox.Show("请选择有效的叠加年份"); splashScreenManager1.CloseWaitForm(); return; } if (datasetOperated == null) { MessageBox.Show("请选择有效的叠加年份"); splashScreenManager1.CloseWaitForm(); return; } Recordset recordset2 = datasetOperated.GetRecordset(false, CursorType.Dynamic); //缩小地图查找范围 mapControl1.Map.EnsureVisible(recordset2.GetGeometry(), 0.6); mapControl1.Refresh(); mapControl1.Map.Refresh(); //创建一个面矢量数据集,用于存储相交分析获得的结果 importDatasource.Datasets.Delete("ZYsuperposition"); String resultDatasetInteresectName = importDatasource.Datasets.GetAvailableDatasetName("ZYsuperposition"); DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo(); datasetvectorInfoIntersect.Type = DatasetType.Region; datasetvectorInfoIntersect.Name = resultDatasetInteresectName; datasetvectorInfoIntersect.EncodeType = EncodeType.None; DatasetVector resultDatasetIntersect = importDatasource.Datasets.Create(datasetvectorInfoIntersect); //设置投影信息 不设置 报投影不一致错误 resultDatasetIntersect.Datasource.Datasets["ZYsuperposition"].PrjCoordSys = importDatasource.Datasets[strYear].PrjCoordSys; //设置叠加分析参数 OverlayAnalystParameter overlayAnalystParamIntersect = new OverlayAnalystParameter(); overlayAnalystParamIntersect.Tolerance = 0.0000011074; FieldInfos fieldInfos = datasetOperated.FieldInfos; string[] mFiels = new string[fieldInfos.Count]; for (int i = 0; i < fieldInfos.Count; i++) { mFiels[i] = fieldInfos[i].Name; } overlayAnalystParamIntersect.SourceRetainedFields = mFiels; string[] languages = { tableName1 }; // overlayAnalystParamIntersect.OperationRetainedFields= {"GD";"LD"}; overlayAnalystParamIntersect.OperationRetainedFields = languages; //调用相交叠加分析方法实相交分析 bool flag = OverlayAnalyst.Intersect(recordset2, recordset, resultDatasetIntersect, overlayAnalystParamIntersect); if (flag) { // TODO: 这行代码将数据加载到表“gK0411.GKFQD”中。您可以根据需要移动或删除它。 this.gKFQDTableAdapter.Fill(this.gK0411.GKFQD); this.reportViewer1.RefreshReport(); splashScreenManager1.CloseWaitForm(); } else { MessageBox.Show("叠加失败"); return; } }
private void button2_Click(object sender, EventArgs e) { //复垦图层 string tableName1 = gkfqd.Common.DbUse.FXGetTownCode(comboBox3.Text) + "_" + comboBox5.Text; //规划图层 string tableName2 = gkfqd.Common.DbUse.GHGetTownCode(comboBox3.Text) + "_" + comboBox5.Text; splashScreenManager1.ShowWaitForm(); splashScreenManager1.SetWaitFormCaption("正在叠加图层"); splashScreenManager1.SetWaitFormDescription("请等待..."); //年份选择 string strYear = tableName2; //string strYear = "T" + comboBox5.Text; //string strYear = "XZ150426_2017"; //string strYear = tableName2; DatasetVector datasetOperated = importDatasource.Datasets[strYear] as DatasetVector; if (datasetOperated == null) { MessageBox.Show("请选择有效的叠加年份"); splashScreenManager1.CloseWaitForm(); return; } Recordset recordset2 = datasetOperated.GetRecordset(false, CursorType.Dynamic); //创建一个面矢量数据集,用于存储相交分析获得的结果 importDatasource.Datasets.Delete("FKHsuperposition"); String resultDatasetInteresectName = importDatasource.Datasets.GetAvailableDatasetName("FKHsuperposition"); DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo(); datasetvectorInfoIntersect.Type = DatasetType.Region; datasetvectorInfoIntersect.Name = resultDatasetInteresectName; datasetvectorInfoIntersect.EncodeType = EncodeType.None; DatasetVector resultDatasetIntersect = importDatasource.Datasets.Create(datasetvectorInfoIntersect); //设置投影信息 不设置 报投影不一致错误 resultDatasetIntersect.Datasource.Datasets["FKHsuperposition"].PrjCoordSys = importDatasource.Datasets[strYear].PrjCoordSys; //设置叠加分析参数 OverlayAnalystParameter overlayAnalystParamIntersect = new OverlayAnalystParameter(); overlayAnalystParamIntersect.Tolerance = 0.0000011074; FieldInfos fieldInfos = datasetOperated.FieldInfos; string[] mFiels = new string[fieldInfos.Count]; for (int i = 0; i < fieldInfos.Count; i++) { mFiels[i] = fieldInfos[i].Name; } overlayAnalystParamIntersect.SourceRetainedFields = mFiels; string[] languages = { tableName1 }; overlayAnalystParamIntersect.OperationRetainedFields = languages; //调用相交叠加分析方法实相交分析 bool flag = OverlayAnalyst.Intersect(recordset2, recordset, resultDatasetIntersect, overlayAnalystParamIntersect); if (flag) { StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append("SELECT * FROM FKHsuperposition"); gkfqd.Common.DbUse.GetOleDbconnection().Close(); gkfqd.Common.DbUse.GetOleDbconnection().Open(); dataSetIntersectTemp.Clear(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(sqlQuery.ToString(), gkfqd.Common.DbUse.GetOleDbconnection()); MyAdapter.Fill(dataSetIntersectTemp); gkfqd.Common.DbUse.GetOleDbconnection().Close(); if (flag == true) { MessageBox.Show("图层叠加完成"); this.reportViewer1.RefreshReport(); this.xZDLTBTableAdapter.Fill(this.gK0451.XZDLTB); this.reportViewer1.RefreshReport(); } splashScreenManager1.CloseWaitForm(); // TODO: 这行代码将数据加载到表“gK0451.XZDLTB”中。您可以根据需要移动或删除它。 this.xZDLTBTableAdapter.Fill(this.gK0451.XZDLTB); this.reportViewer1.RefreshReport(); } else { MessageBox.Show("叠加失败"); return; } }
private void button3_Click(object sender, EventArgs e) { string[] arrayYear = { "2014", "2015", "2016" }; // string[] arrayYear = { "GHDLTB" }; for (int i = 0; i < arrayYear.Length; i++) { //此处写循环 每个年份数据 现在执行一个年份数据 并手动选择 自动执行多个年份数据 //不用手动选择 年份和图层对应 splashScreenManager1.ShowWaitForm(); splashScreenManager1.SetWaitFormCaption("正在查重" + arrayYear[i] + "年份数据"); splashScreenManager1.SetWaitFormDescription("请等待..."); //年份选择 //string strYear = "T" + comboBox4.Text; string strYear = "T" + arrayYear[i]; //string strYear = arrayYear[i]; //面积查询前不显示 label7.Text = ""; label7.Name = ""; label7.Visible = false; DatasetVector datasetOperated = importDatasource.Datasets[strYear] as DatasetVector; Recordset recordset2 = datasetOperated.GetRecordset(false, CursorType.Dynamic); //创建一个面矢量数据集,用于存储相交分析获得的结果 importDatasource.Datasets.Delete("IntersectTemp"); String resultDatasetIntersectName = importDatasource.Datasets.GetAvailableDatasetName("IntersectTemp"); DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo(); datasetvectorInfoIntersect.Type = DatasetType.Region; datasetvectorInfoIntersect.Name = resultDatasetIntersectName; datasetvectorInfoIntersect.EncodeType = EncodeType.None; DatasetVector resultDatasetIntersect = importDatasource.Datasets.Create(datasetvectorInfoIntersect); //设置投影信息 不设置 报投影不一致错误 resultDatasetIntersect.Datasource.Datasets["IntersectTemp"].PrjCoordSys = importDatasource.Datasets[strYear].PrjCoordSys; //设置叠加分析参数 OverlayAnalystParameter overlayAnalystParamIntersect = new OverlayAnalystParameter(); overlayAnalystParamIntersect.Tolerance = 0.0000011074; //调用相交叠加分析方法实相交分析 bool flag = OverlayAnalyst.Intersect(recordset2, recordset, resultDatasetIntersect, overlayAnalystParamIntersect); if (flag) { StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append("SELECT SUM(SMAREA) AS SMAREA"); sqlQuery.Append(" FROM IntersectTemp "); gkfqd.Common.DbUse.GetOleDbconnection().Close(); gkfqd.Common.DbUse.GetOleDbconnection().Open(); dataSetIntersectTemp.Clear(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(sqlQuery.ToString(), gkfqd.Common.DbUse.GetOleDbconnection()); MyAdapter.Fill(dataSetIntersectTemp); gkfqd.Common.DbUse.GetOleDbconnection().Close(); if (dataSetIntersectTemp.Tables[0].Rows[0]["SMAREA"].ToString().Trim() != "") { label7.Text = "重叠面积:" + dataSetIntersectTemp.Tables[0].Rows[0]["SMAREA"].ToString().Trim(); label7.Visible = true; //MessageBox.Show(label7.Text); //弹出重叠面积叠加后图形 gk03b frmgk03b = new gk03b(); frmgk03b.Owner = this; frmgk03b.FormBorderStyle = FormBorderStyle.FixedSingle; //固定窗体大小不变 frmgk03b.StartPosition = FormStartPosition.CenterScreen; //窗体居中 frmgk03b.ShowDialog(); } else { label7.Text = "没有重叠地块"; label7.Visible = true; MessageBox.Show(label7.Text); } } splashScreenManager1.CloseWaitForm(); } }
private void button2_Click(object sender, EventArgs e) { splashScreenManager1.ShowWaitForm(); splashScreenManager1.SetWaitFormCaption("正在叠加图层"); splashScreenManager1.SetWaitFormDescription("请等待..."); //年份选择 string strYear = "T" + comboBox5.Text; DatasetVector datasetOperated = importDatasource.Datasets[strYear] as DatasetVector; Recordset recordset2 = datasetOperated.GetRecordset(false, CursorType.Dynamic); //创建一个面矢量数据集,用于存储相交分析获得的结果 importDatasource.Datasets.Delete("JBNTsuperposition"); String resultDatasetInteresectName = importDatasource.Datasets.GetAvailableDatasetName("JBNTsuperposition"); DatasetVectorInfo datasetvectorInfoIntersect = new DatasetVectorInfo(); datasetvectorInfoIntersect.Type = DatasetType.Region; datasetvectorInfoIntersect.Name = resultDatasetInteresectName; datasetvectorInfoIntersect.EncodeType = EncodeType.None; DatasetVector resultDatasetIntersect = importDatasource.Datasets.Create(datasetvectorInfoIntersect); //设置投影信息 不设置 报投影不一致错误 resultDatasetIntersect.Datasource.Datasets["JBNTsuperposition"].PrjCoordSys = importDatasource.Datasets[strYear].PrjCoordSys; //设置叠加分析参数 OverlayAnalystParameter overlayAnalystParamIntersect = new OverlayAnalystParameter(); overlayAnalystParamIntersect.Tolerance = 0.0000011074; // overlayAnalystParamIntersect.SourceRetainedFields= {"FKXMMC";"DLMC";"DLBM"}; string[] gk = { "FKXMMC", "DLMC", "DLBM" }; overlayAnalystParamIntersect.SourceRetainedFields = gk; // overlayAnalystParamIntersect.SourceRetainedFields= [ "TBBH"]; string[] languages = { "ZYMJ" }; // overlayAnalystParamIntersect.OperationRetainedFields= {"GD";"LD"}; overlayAnalystParamIntersect.OperationRetainedFields = languages; //调用相交叠加分析方法实相交分析 bool flag = OverlayAnalyst.Intersect(recordset2, recordset, resultDatasetIntersect, overlayAnalystParamIntersect); if (flag) { StringBuilder sqlQuery = new StringBuilder(); sqlQuery.Append("SELECT * FROM JBNTsuperposition"); gkfqd.Common.DbUse.GetOleDbconnection().Close(); gkfqd.Common.DbUse.GetOleDbconnection().Open(); dataSetIntersectTemp.Clear(); OleDbDataAdapter MyAdapter = new OleDbDataAdapter(sqlQuery.ToString(), gkfqd.Common.DbUse.GetOleDbconnection()); MyAdapter.Fill(dataSetIntersectTemp); gkfqd.Common.DbUse.GetOleDbconnection().Close(); if (flag == true) { MessageBox.Show("图层叠加完成"); this.reportViewer1.RefreshReport(); this.gHDLTBTableAdapter.Fill(this.gK0441.GHDLTB); this.reportViewer1.RefreshReport(); } splashScreenManager1.CloseWaitForm(); // TODO: 这行代码将数据加载到表“gK0441.所属乡镇与面积”中。您可以根据需要移动或删除它。 this.所属乡镇与面积TableAdapter.Fill(this.gK0441.所属乡镇与面积); // TODO: 这行代码将数据加载到表“gK0441.规划地类与面积”中。您可以根据需要移动或删除它。 this.规划地类与面积TableAdapter.Fill(this.gK0441.规划地类与面积); // TODO: 这行代码将数据加载到表“gK0441.地类名称与面积”中。您可以根据需要移动或删除它。 this.地类名称与面积TableAdapter.Fill(this.gK0441.地类名称与面积); // TODO: 这行代码将数据加载到表“gK0441.GHDLTB”中。您可以根据需要移动或删除它。 this.gHDLTBTableAdapter.Fill(this.gK0441.GHDLTB); this.reportViewer1.RefreshReport(); } else { MessageBox.Show("叠加失败"); return; } // this.reportViewer1.RefreshReport(); }