Ejemplo n.º 1
0
        /// <summary>
        /// 面拓扑检查
        /// </summary>
        /// <param name="pDataCheckClass"></param>
        /// <param name="pFeaDataset"></param>
        /// <param name="pTable"></param>
        /// <param name="topoRule"></param>
        /// <param name="eError"></param>
        public void AreaTopoCheck2(IArcgisDataCheckHook hook, IFeatureDataset pFeaDataset, DataTable pTable, esriTopologyRuleType topoRule, out Exception eError)
        {
            eError = null;

            List <string> FeaClsNameDic = new List <string>();

            for (int i = 0; i < pTable.Rows.Count; i++)
            {
                string FeaClsName = pTable.Rows[i]["图层"].ToString().Trim();  //图层名
                if ((FeaClsName == "") || (!FeaClsName.Contains(";")))
                {
                    eError = new Exception("图层名为空或配置不正确!");
                    return;
                }

                string[] feaNameArr    = FeaClsName.Split(new char[] { ';' });
                string   oriFeaClsName = feaNameArr[0].Trim(); //源要素类名
                string   desFeaClsName = feaNameArr[1].Trim(); //目标要素名
                if (!FeaClsNameDic.Contains(oriFeaClsName + ";" + desFeaClsName))
                {
                    FeaClsNameDic.Add(oriFeaClsName + ";" + desFeaClsName);
                }
            }
            CommonTopologyCheckClass commonTopologyCheckClass = new CommonTopologyCheckClass();

            commonTopologyCheckClass.DataErrTreat += new DataErrTreatHandle(DataCheckRealize_DataErrTreat);
            commonTopologyCheckClass.OrdinaryDicTopoCheck(hook, pFeaDataset, FeaClsNameDic, topoRule, out eError);
            if (eError != null)
            {
                return;
            }
        }
        /// <summary>
        /// 面拓扑检查
        /// </summary>
        /// <param name="pDataCheckClass"></param>
        /// <param name="pFeaDataset"></param>
        /// <param name="pTable"></param>
        /// <param name="topoRule"></param>
        /// <param name="eError"></param>
        public void AreaTopoCheck(IArcgisDataCheckHook hook, IFeatureDataset pFeaDataset, DataTable pTable, esriTopologyRuleType topoRule, out Exception eError)
        {
            eError = null;

            //设置进度条
            ProgressChangeEvent eInfo = new ProgressChangeEvent();

            eInfo.Max = pTable.Rows.Count;
            int pValue = 0;

            for (int i = 0; i < pTable.Rows.Count; i++)
            {
                string FeaClsName = pTable.Rows[i]["图层"].ToString().Trim();  //图层名
                if ((FeaClsName == "") || (!FeaClsName.Contains(";")))
                {
                    eError = new Exception("图层名为空或配置不正确!");
                    return;
                }

                string[] feaNameArr    = FeaClsName.Split(new char[] { ';' });
                string   oriFeaClsName = feaNameArr[0].Trim(); //源要素类名
                string   desFeaClsName = feaNameArr[1].Trim(); //目标要素名

                CommonTopologyCheckClass commonTopologyCheckClass = new CommonTopologyCheckClass();
                commonTopologyCheckClass.DataErrTreat += new DataErrTreatHandle(DataCheckRealize_DataErrTreat);
                commonTopologyCheckClass.OrdinaryTopoCheck(hook, pFeaDataset, oriFeaClsName, desFeaClsName, topoRule, out eError);
                if (eError != null)
                {
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 线穿面检查
        /// </summary>
        /// <param name="hook"></param>
        /// <param name="pFeaDataset"></param>
        /// <param name="pTable"></param>
        /// <param name="eError"></param>
        public void LineCrossAreaCheck(IArcgisDataCheckHook hook, IFeatureDataset pFeaDataset, DataTable pTable, out Exception eError)
        {
            eError = null;

            for (int i = 0; i < pTable.Rows.Count; i++)
            {
                string FeaClsName = pTable.Rows[i]["图层"].ToString().Trim();  //图层名
                if ((FeaClsName == "") || (!FeaClsName.Contains(";")))
                {
                    eError = new Exception("图层名为空或配置不正确!");
                    return;
                }

                string[] feaNameArr    = FeaClsName.Split(new char[] { ';' });
                string   oriFeaClsName = feaNameArr[0].Trim(); //源要素类名
                string   desFeaClsName = feaNameArr[1].Trim(); //目标要素名


                CommonTopologyCheckClass commonTopologyCheckClass = new CommonTopologyCheckClass();
                commonTopologyCheckClass.DataErrTreat += new DataErrTreatHandle(DataCheckRealize_DataErrTreat);
                commonTopologyCheckClass.CrossTopoCheck(hook, pFeaDataset, oriFeaClsName, desFeaClsName, out eError);
                if (eError != null)
                {
                    return;
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 同层线相交检查
        /// </summary>
        /// <param name="hook"></param>
        /// <param name="pFeaDataset"></param>
        /// <param name="pTable"></param>
        /// <param name="eError"></param>
        public void SpecialFeaClsTopoCheck2(IArcgisDataCheckHook hook, IFeatureDataset pFeaDataset, DataTable pTable, esriTopologyRuleType pTopoRule, out Exception eError)
        {
            eError = null;

            List <string> feaclsNameList = new List <string>();

            for (int i = 0; i < pTable.Rows.Count; i++)
            {
                string FeaClsName = pTable.Rows[i]["图层"].ToString().Trim();  //图层名
                if (FeaClsName == "")
                {
                    eError = new Exception("图层名为空!");
                    return;
                }
                if (!feaclsNameList.Contains(FeaClsName))
                {
                    feaclsNameList.Add(FeaClsName);
                }
            }
            if (feaclsNameList.Count == 0)
            {
                return;
            }

            CommonTopologyCheckClass commonTopologyCheckClass = new CommonTopologyCheckClass();

            commonTopologyCheckClass.DataErrTreat += new DataErrTreatHandle(DataCheckRealize_DataErrTreat);
            commonTopologyCheckClass.OrdinaryTopoCheck(hook, pFeaDataset, feaclsNameList, pTopoRule, out eError);
            if (eError != null)
            {
                return;
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 同层线重叠检查
        /// </summary>
        /// <param name="hook"></param>
        /// <param name="pFeaDataset"></param>
        /// <param name="pTable"></param>
        /// <param name="eError"></param>
        public void SpecialFeaClsTopoCheck(IArcgisDataCheckHook hook, IFeatureDataset pFeaDataset, DataTable pTable, esriTopologyRuleType pTopoRule, out Exception eError)
        {
            eError = null;

            //设置进度条
            ProgressChangeEvent eInfo = new ProgressChangeEvent();

            eInfo.Max = pTable.Rows.Count;
            int pValue = 0;


            for (int i = 0; i < pTable.Rows.Count; i++)
            {
                string FeaClsName = pTable.Rows[i]["图层"].ToString().Trim();  //图层名
                if (FeaClsName == "")
                {
                    eError = new Exception("图层名为空!");
                    return;
                }
                CommonTopologyCheckClass commonTopologyCheckClass = new CommonTopologyCheckClass();
                commonTopologyCheckClass.DataErrTreat += new DataErrTreatHandle(DataCheckRealize_DataErrTreat);
                commonTopologyCheckClass.OrdinaryTopoCheck(hook, pFeaDataset, FeaClsName, pTopoRule, out eError);
                if (eError != null)
                {
                    return;
                }

                //进度条加1
                pValue++;
                eInfo.Value = pValue;
                GeoDataChecker.GeoDataChecker_ProgressShow((object)GeoDataChecker._ProgressBarInner, eInfo);
            }
        }