public void Check() { if (ExtractGHYT() == false) { return; } IWorkspace workspace = MdbFilePath.OpenAccessFileWorkSpace(); if (workspace == null) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("无法打开ArcGIS 工作空间") }); return; } IFeatureClass featureClass = workspace.GetFeatureClass("GHYT"); if (featureClass == null) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("获取GHYT要素类失败") }); return; } var CArea = Math.Round(ArcClass.GainArea(featureClass, "CJJX = 'C1' OR CJJX = 'C2'"), 0); var E2Area = Math.Round(ArcClass.GainArea(featureClass, "CJJX = 'E2'"), 0); if (CArea < E2Area) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("拆旧区面积不符合大于等于村规划拟新建区面积") }); } }
private List <Question2> CheckArea(List <string> list, string mdbFile, string id, CheckProject2 checkProject2, double?relative, double?absolute) { var questions = new List <Question2>(); IWorkspace workspace = mdbFile.OpenAccessFileWorkSpace(); if (workspace == null) { questions.Add(new Question2 { Code = id, Name = RuleName, CheckProject = checkProject2, Description = string.Format("无法打开ArcGIS 工作空间") }); } else { foreach (var xzqdm in list) { var cghyt = workspace.GetFeatureClass(string.Format("GHYT_{0}", xzqdm)); if (cghyt == null) { questions.Add(new Question2 { Code = id, Name = RuleName, CheckProject = checkProject2, Description = string.Format("无法获取行政区代码【{0}】的村规划中示范区永久基本农田的要素类", xzqdm) }); continue; } var xghyt = workspace.GetFeatureClass(string.Format("GHYT_X_{0}", xzqdm)); if (xghyt == null) { questions.Add(new Question2 { Code = id, Name = RuleName, CheckProject = checkProject2, Description = string.Format("无法获取行政区代码【{0}】的乡规划中示范区永久基本农田的要素类", xzqdm) }); continue; } var cArea = Math.Round(ArcClass.GainArea(cghyt), 0); var xArea = Math.Round(ArcClass.GainArea(xghyt), 0); var abs = Math.Abs(cArea - xArea); var flag = false; if (absolute.HasValue) { flag = abs < absolute.Value; } if (relative.HasValue) { var pp = abs / xArea; flag = pp < relative.Value; } if (flag == false) { questions.Add(new Question2 { Code = id, Name = RuleName, CheckProject = checkProject2, Description = string.Format("行政区代码【{0}】的村规划示范区永久基本农田面积与乡规划示范区永久基本农田面积不一致", xzqdm) }); } } } return(questions); }
public void Check() { if (ExtractGHYT() == false) { return; } if (ArcExtensions2.ImportFeatureClass(string.Format("{0}\\{1}", ParameterManager2.MDBFilePath, "TDGHDL"), MdbFilePath, "TDGHDL", null) == false) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("导入土地规划地类图层失败") }); return; } if (ArcExtensions2.Select(string.Format("{0}\\{1}", MdbFilePath, "GHYT"), string.Format("{0}\\{1}", MdbFilePath, "GHYT_XG"), "GHYTDM LIKE 'G*' OR GHYTDM LIKE 'X*'") == false) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("提取规划用途层中现状和新增数据失败!") }); return; } var sql = "SELECT MID(GHYTDM,2) FROM GHYT_XG GROUP BY MID(GHYTDM,2)"; var list = Search(MdbFilePath, sql); if (list.Count == 0) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("执行SQL[{0}]获取结果为空", sql) }); return; } var workspace = MdbFilePath.OpenAccessFileWorkSpace(); if (workspace == null) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("打开ArcGIS 工作空间失败!") }); return; } var ghytFeatureClass = workspace.GetFeatureClass("GHYT_XG"); if (ghytFeatureClass == null) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("获取要素类【GHYT_XG】失败!") }); return; } var tdghdlFeatureClass = workspace.GetFeatureClass("TDGHDL"); if (tdghdlFeatureClass == null) { QuestionManager2.Add(new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = string.Format("获取要素类【TDGHDL】失败!") }); return; } var messages = new List <string>(); foreach (var item in list) { var ghytArea = Math.Round(ArcClass.GainArea(ghytFeatureClass, string.Format("GHYTDM = 'X{0}' OR GHYTDM = 'G{0}'", item)), 2); var tdghdlArea = Math.Round(ArcClass.GainArea(tdghdlFeatureClass, string.Format("GHDLDM = '{0}'", item)), 2); var abs = Math.Abs(ghytArea - tdghdlArea); var flag = false; if (ParameterManager2.Absolute.HasValue) { flag = abs < ParameterManager2.Absolute.Value; } if (ParameterManager2.Relative.HasValue) { var pp = abs / tdghdlArea; flag = pp < ParameterManager2.Relative.Value; } if (flag == false) { messages.Add(string.Format("规划用途中规划用途代码为【X{0}】+【G{0}】的面积和与土地规划地类层中地类面积和不相等", item)); } } QuestionManager2.AddRange(messages.Select(e => new Question2 { Code = ID, Name = RuleName, CheckProject = CheckProject, Description = e }).ToList()); }