Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }