public bool Check(IWorkspace workspace) { IFeatureClass UnionFeatureClass = workspace.GetFeatureClass(UnionLayerName); if (UnionFeatureClass != null) { CheckUnion(UnionFeatureClass); } else { Messages.Add(new VillageMessage { Description = string.Format("未获取Union图层,无法进行范围核对") }); } IFeatureClass CheckFeatureClass = workspace.GetFeatureClass(CheckLayerName); IFeatureClass ExtentFeatureClass = workspace.GetFeatureClass(ExtentLayerName); if (CheckFeatureClass == null) { Messages.Add(new VillageMessage { Description = string.Format("无法获取图层【{0}】要素类,未检查面积一致性", CheckLayerName) }); return(false); } if (ExtentFeatureClass == null) { Messages.Add(new VillageMessage { Description = string.Format("无法获取图层【{0}】要素类,未检查面积一致性", ExtentLayerName) }); return(false); } var checkArea = Math.Round(ArcClass.GainArea(CheckFeatureClass), 0); var extentArea = Math.Round(ArcClass.GainArea(ExtentFeatureClass), 0); var abs = Math.Abs(checkArea - extentArea); var flag = false; if (Absolute.HasValue) { flag = abs < Absolute.Value; } if (Relative.HasValue) { var pp = abs / extentArea; flag = pp < Relative.Value; } if (flag == false) { Messages.Add(new VillageMessage { CheckValue = abs.ToString(), Description = string.Format("图层【{0}】所在行政区代码【{1}】内面积不一致;", _tableName, _XZQDM) }); } return(true); }
public bool Check(IWorkspace workspace) { IFeatureClass checkFeatureClass = workspace.GetFeatureClass(CheckFeatureClassName); if (checkFeatureClass == null) { Messages.Add(new VillageMessage { Description = string.Format("未获取要素类【{0}】,无法进行核查【{1}】", CheckFeatureClassName, Name) }); return(false); } IFeatureClass currentFeatureClass = workspace.GetFeatureClass(CurrentFeatureClassName); if (currentFeatureClass == null) { Messages.Add(new VillageMessage { Description = string.Format("未获取要素类【{0}】,无法进行核查【{1}】", CurrentFeatureClassName, Name) }); return(false); } var checkArea = Math.Round(ArcClass.GainArea(checkFeatureClass, CheckWhereClause), 0); var currentArea = Math.Round(ArcClass.GainArea(currentFeatureClass, CurrentWhereClause), 0); var abs = Math.Abs(checkArea - currentArea); var flag = false; if (Absolute.HasValue) { flag = abs < Absolute.Value; } if (Relative.HasValue) { var pp = abs / currentArea; flag = pp < Relative.Value; } if (flag == false) { Messages.Add(new VillageMessage { Value = abs.ToString(), Description = string.Format("【{0}】不符合", Name) }); } return(true); }