コード例 #1
0
ファイル: 合并.cs プロジェクト: sishui198/Wetland-GIS
 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("两图层不在同一坐标系中!");
     }
 }
コード例 #2
0
ファイル: gk043.cs プロジェクト: knowledge0603/gkfqd
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
        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();
        }