/// <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; } } }
/// <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; } } }
/// <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; } }
/// <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); } }