You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2343 lines
124 KiB
2343 lines
124 KiB
using ESRI.ArcGIS.Geodatabase; |
|
using ESRI.ArcGIS.Geometry; |
|
using Kingo.RuleCheck.CheckHelper; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
|
|
namespace Kingo.RuleCheck.XJRuleCheck |
|
{ |
|
/// <summary> |
|
/// 城镇村属性上图检查 |
|
/// </summary> |
|
public class CZCSXCheck_DTB : RuleCheckBase_DTB |
|
{ |
|
/// <summary> |
|
/// 下发城镇村等用地字典值 |
|
/// </summary> |
|
private string key_czcdyd = "CZCDYDI"; |
|
|
|
public static List<string> ruleMethodNames = new List<string>() |
|
{ |
|
//"CZC201","CZC203","CZC211","CZC212","CZC213","CZC214","CZC221","CZC222", |
|
//"CZC001","CZC002","CZC101","CZC301","CZC302","CZC303","CZC304","CZC305","CZC306","CZC401","CZC402","CZC403","CZC404","CZC501","CZC502","CZC503","CZC504","CZC505","CZC506","CZC20X" |
|
"CZC001","CZC002","CZC101","CZC20X" |
|
}; |
|
public override List<RuleEntity> ExcuteCheck(string sourePath, IWorkspace workspace) |
|
{ |
|
return this.StartCheck(sourePath, workspace, ruleMethodNames); |
|
} |
|
|
|
public override List<RuleEntity> ExcuteCheck(IWorkspace workspace, List<string> layerNames, List<string> dataSetNames) |
|
{ |
|
return this.StartCheck(workspace, ruleMethodNames, layerNames, dataSetNames); |
|
} |
|
|
|
public override List<RuleEntity> ExcuteCheck(string sourePath, Dictionary<string, IFeatureClass> workspace) |
|
{ |
|
return this.StartCheck(sourePath, workspace, ruleMethodNames); |
|
} |
|
public override List<RuleEntity> ExcuteCheck(string tbbsm, string sourePath, Dictionary<string, IFeatureClass> workspace) |
|
{ |
|
return this.StartCheck(tbbsm, sourePath, workspace, ruleMethodNames); |
|
} |
|
|
|
public List<RuleEntity> CZC001() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "地类编码为1001、1002、1003、1007、1008、1009、1109的图斑,城镇村属性码字段必须为空。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC001", |
|
RuleName = "线状地物城镇村属性赋值情况检查" |
|
}; |
|
try |
|
{ |
|
string sql = $"select BSM from DTBDLTBGX where tbbsm='{TBBSM}' and dlbm in ('1001','1001A','1002','1002A','1003','1003A','1004A','1007','1008','1009','1109') and CZCSXM is not null and czcsxm<>''"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return null; |
|
foreach (DataRow item in dt.Rows) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item[0].ToString(), |
|
BGFWBSM = item[0].ToString(), |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC002() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "地类编码为88类、99类的图斑,城镇村属性码字段必须为空。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC002", |
|
RuleName = "特殊地类城镇村属性赋值情况检查" |
|
}; |
|
try |
|
{ |
|
string sql = $"select BSM from DTBDLTBGX where tbbsm='{TBBSM}' and dlbm in ('8801','9902','9903','9905') and CZCSXM is not null and czcsxm<>''"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return null; |
|
foreach (DataRow item in dt.Rows) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item[0].ToString(), |
|
BGFWBSM = item[0].ToString(), |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC101() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "非建设用地,单图斑阶段不得标注201A、202A、204、205。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC101", |
|
RuleName = "非建设用地标注城镇村属性情况检查" |
|
}; |
|
try |
|
{ |
|
string sql = $"select BSM from DTBDLTBGX where tbbsm='{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and CZCSXM in ('201A','202A','204','205')"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return null; |
|
foreach (DataRow item in dt.Rows) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item[0].ToString(), |
|
BGFWBSM = item[0].ToString(), |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC20X() |
|
{ |
|
List<RuleEntity> result = new List<RuleEntity>(); |
|
try |
|
{ |
|
|
|
List<string> Sljslist = new List<string> { "05H1", "0508", "0601", "0602", "0603", "0701", "0702", "08H1", "08H2", "08H2A", "0809", "0810", "0810A", "09", "1004", "1005", "1201" }; |
|
List<string> Slfjslist = new List<string> { "05H1", "0508", "0601", "0602", "0603", "0701", "0702", "08H1", "08H2", "08H2A", "0809", "0810", "0810A", "09", "1004", "1005", "1201", "1001", "1002", "1003", "1007", "1008", "1009", "1109" }; |
|
List<string> Blfjslist= new List<string> { "05H1", "0508", "0601", "0602", "0603", "0701", "0702", "08H1", "08H2", "08H2A", "0809", "0810", "0810A", "09", "1004", "1005", "1201", "1001", "1001A", "1002","1002A", "1003", "1003A","1004A", "1007", "1008", "1009", "1109" }; |
|
DataTable dataTable = SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, $"select d.bsm,w.gjdlbm,d.dlbm,d.bz from DTBDLTBGX d left join wyrw w on d.tbbsm=w.tbbsm where d.tbbsm='{this.TBBSM}'"); |
|
if (dataTable == null || dataTable.Rows.Count <= 0) |
|
return result; |
|
foreach (DataRow item in dataTable.Rows) |
|
{ |
|
|
|
string slType = string.Empty; |
|
string BLType = string.Empty; |
|
string bsm = item["bsm"].ToString(); |
|
string gjdlbm = item["gjdlbm"].ToString(); |
|
string dlbm= item["dlbm"].ToString(); |
|
if (Sljslist.Contains(gjdlbm)) |
|
slType = "SL_JS"; |
|
if (!Slfjslist.Contains(gjdlbm)) |
|
slType = "SL_FJS"; |
|
if (Sljslist.Contains(dlbm)) |
|
BLType = "BL_JS"; |
|
if(!Blfjslist.Contains(dlbm)) |
|
BLType = "BL_FJS"; |
|
if (dlbm != gjdlbm && BLType == "BL_JS" && slType == "SL_JS") |
|
{ |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = bsm, |
|
BGFWBSM = bsm, |
|
ErrorTip = "原则上地类相对上轮数据库发生变化,但均属于建设用地的图斑,城镇村属性码应与上轮保持一致。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC201", |
|
RuleName = "相对于上轮发生建设用地内部变化城镇村属性标注检查", |
|
RuleContent = "原则上地类相对上轮数据库发生变化,但均属于建设用地的图斑,城镇村属性码应与上轮保持一致" |
|
}; |
|
result.Add(ruleEntity); |
|
|
|
} |
|
if (dlbm != gjdlbm && BLType == "BL_FJS" && slType == "SL_FJS") |
|
{ |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = bsm, |
|
BGFWBSM = bsm, |
|
ErrorTip = "原则上地类相对上轮数据库发生变化,但均属于非建设用地的图斑,城镇村属性码应与上轮保持一致。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC202", |
|
RuleName = "相对于上轮发生建设用地内部变化城镇村属性标注检查", |
|
RuleContent = "原则上地类相对上轮数据库发生变化,但均属于非建设用地的图斑,城镇村属性码应与上轮保持一致。" |
|
}; |
|
result.Add(ruleEntity); |
|
|
|
} |
|
if (dlbm != gjdlbm && BLType == "BL_FJS" && slType == "SL_JS") |
|
{ |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = bsm, |
|
BGFWBSM = bsm, |
|
ErrorTip = "原则上地类相对上轮数据库发生建设用地更新为非建设用地的情况,城镇村属性应参照CZCDYDI层进行标注。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC203", |
|
RuleName = "相对于上轮发生建设用地内部变化城镇村属性标注检查", |
|
RuleContent = "原则上地类相对上轮数据库发生建设用地更新为非建设用地的情况,城镇村属性应参照CZCDYDI层进行标注。" |
|
}; |
|
result.Add(ruleEntity); |
|
|
|
} |
|
if (dlbm == gjdlbm &&(item["bz"].ToString()=="9904"|| item["bz"].ToString() == "9905"|| item["bz"].ToString() == "8801")) |
|
{ |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
BGFWBSM = bsm, |
|
ErrorTip = "地类保持一致的国家意见图斑,城镇村属性待核查。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC204", |
|
RuleName = "相对于上轮发生建设用地内部变化城镇村属性标注检查", |
|
RuleContent = "地类保持一致的国家意见图斑,城镇村属性待核查。" |
|
}; |
|
result.Add(ruleEntity); |
|
|
|
} |
|
|
|
} |
|
} |
|
catch (Exception ex ) |
|
{ |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "原则上地类相对上轮数据库发生变化,但均属于建设用地的图斑,城镇村属性码应与上轮保持一致。规则检查失败:" + ex.Message, |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC20X", |
|
RuleName = "相对于上轮发生建设用地内部变化城镇村属性标注检查", |
|
RuleContent = "原则上地类相对上轮数据库发生变化,但均属于建设用地的图斑,城镇村属性码应与上轮保持一致" |
|
}; |
|
result.Add(ruleEntity); |
|
} |
|
|
|
|
|
return result; |
|
} |
|
|
|
//public List<RuleEntity> CZC201() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "位于三调203范围内的图斑,若实地现状为非建设用地,不得保留203属性。", |
|
// ErrorType = "一类错误", |
|
// RuleCode = "CZC201", |
|
// RuleName = "非建设用地保留203情况检查" |
|
// }; |
|
// RuleEntity ruleEntity202 = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "10平方米以下三调203属性保留合理性检查", |
|
// ErrorType = "二类错误", |
|
// RuleCode = "CZC202", |
|
// RuleName = "10平方米以下三调203属性保留合理性检查" |
|
// }; |
|
// IFeatureClass sdczc_dltbFeatureClass = null; |
|
// IGeometry dltbGXgeo = null; |
|
// IFeatureCursor pCursor = null; |
|
// IFeature feature = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
// { |
|
// throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
// } |
|
// sdczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// ISpatialReference spatialReference = (sdczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
// } |
|
// if (sdczc_dltbFeatureClass.Fields.FindField("CZSX") == -1) |
|
// throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
// WhereClause = "CZCLX ='203' and CZSX = '三调村庄范围'" |
|
// }; |
|
|
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bgqczcsxm='203' and bghczcsxm='203'"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
// List<string> lisCZC201 = new List<string>(); |
|
// List<string> lisCZC202 = new List<string>(); |
|
// foreach (DataRow item in dt.Rows) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(item["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// spatialFilter.Geometry = dltbGXgeo; |
|
// pCursor = sdczc_dltbFeatureClass.Search(spatialFilter, true); |
|
// while ((feature = pCursor.NextFeature()) != null) |
|
// { |
|
// IGeometry geoInter = CheckHelper.CommonHelper.InterSect(feature.ShapeCopy, dltbGXgeo); |
|
// IArea area = geoInter as IArea; |
|
// if (area != null) |
|
// { |
|
// if (area.Area > 10) |
|
// { |
|
// lisCZC201.Add(item[0].ToString()); |
|
// } |
|
// else |
|
// { |
|
// lisCZC202.Add(item[0].ToString()); |
|
// } |
|
// } |
|
// } |
|
// } |
|
// lisCZC201 = lisCZC201.Distinct().ToList(); |
|
// lisCZC202 = lisCZC202.Distinct().ToList(); |
|
// foreach (var item in lisCZC201) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// foreach (var item in lisCZC202) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity202.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity202.ErrorTip, |
|
// ErrorType = ruleEntity202.ErrorType, |
|
// RuleCode = ruleEntity202.RuleCode, |
|
// RuleName = ruleEntity202.RuleName, |
|
// RuleContent = ruleEntity202.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC203() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "疑似203边缘建设用地拆除图斑保留203属性合理性检查", |
|
// ErrorType = "二类错误", |
|
// RuleCode = "CZC203", |
|
// RuleName = "疑似203边缘建设用地拆除图斑保留203属性合理性检查" |
|
// }; |
|
// IFeatureClass sdczc_dltbFeatureClass = null; //三调203 |
|
// IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
// IGeometry dltbGXgeo = null; |
|
// IFeatureCursor pCursor = null; |
|
// IFeature feature = null; |
|
// try |
|
// { |
|
// var wsFactory = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactory(); |
|
// var workspace = wsFactory.OpenFromFile(@"D:\2022变更修改\单图斑建库软件\城镇村等用地参考图层\441204高要区.gdb", 0); |
|
// DicFeatureClass = new Dictionary<string, IFeatureClass>(); |
|
// DicFeatureClass["CZCDYD"] = (workspace as IFeatureWorkspace).OpenFeatureClass("CZCDYDI"); |
|
|
|
// string sql1 = $"select * from dtbdltbgxgc where tbbsm = '{TBBSM}'"; |
|
// DataTable dtt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql1); |
|
// InsertTB(dtt); |
|
|
|
// if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
// { |
|
// throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
// } |
|
// sdczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// edczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// ISpatialReference spatialReference = (sdczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
// } |
|
// if (sdczc_dltbFeatureClass.Fields.FindField("CZSX") == -1) |
|
// throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps, //覆盖 |
|
// WhereClause = "CZCLX ='203' and CZSX = '三调村庄范围'" |
|
// }; |
|
|
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bgqczcsxm='203' and bghczcsxm='203'"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
|
|
// //DTBDLTBGXGC层图斑,变更前地类编码为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201其中之一 |
|
// string sql2 = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bgqdlbm in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201')"; |
|
// DataTable dt2 = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql2); |
|
// if (dt2 == null || dt2.Rows.Count <= 0) |
|
// return rst; |
|
// Dictionary<string, IGeometry> dic = new Dictionary<string, IGeometry>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result2 = dt2.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result2) |
|
// { |
|
// IGeometryCollection geometries = new GeometryBagClass(); |
|
// ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// geometries.AddGeometry(dltbGXgeo); |
|
// } |
|
// //融合 |
|
// gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
// IGeometry pGeoC = gxgcTopological as IGeometry; |
|
// dic[ig.Key] = pGeoC; |
|
// } |
|
|
|
// List<string> lisCZC203 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// IGeometryCollection geometries = new GeometryBagClass(); |
|
// ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// //在B中,若该类型图斑均与三调203范围均不重叠, |
|
// spatialFilter.Geometry = dltbGXgeo; |
|
// pCursor = sdczc_dltbFeatureClass.Search(spatialFilter, true); |
|
// feature = pCursor.NextFeature(); |
|
// if (feature == null) |
|
// { |
|
// geometries.AddGeometry(dltbGXgeo); |
|
// } |
|
// } |
|
// //将B进行融合,形成C |
|
// gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
// IGeometry pGeoC = gxgcTopological as IGeometry; |
|
|
|
// //若C存在图斑与二调203范围共边的情况 |
|
// ISpatialFilter sped = new SpatialFilterClass |
|
// { |
|
// //SpatialRel = esriSpatialRelEnum.esriSpatialRelWithin, //共边 |
|
// WhereClause = "CZCLX ='203' and CZSX = '二调村庄范围'", |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelRelation |
|
// }; |
|
// sped.SpatialRelDescription = "TF**T****"; |
|
// sped.Geometry = pGeoC; |
|
// var aa= (pGeoC as IArea).Area; |
|
// IFeatureCursor cursorEdczc = edczc_dltbFeatureClass.Search(sped, true); |
|
// IFeature featureEdczc = null; |
|
// while ((featureEdczc = cursorEdczc.NextFeature()) != null) |
|
// { |
|
// //提取与其共边的DTBDLTBGXGC层图斑,若变更前地类编码为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201其中之一,相应C中图斑纳入人工核查。 |
|
// var cc = featureEdczc.OID; |
|
// if (dic.ContainsKey(ig.Key)&&CommonHelper.IsInterSect(featureEdczc.ShapeCopy,dic[ig.Key])) // |
|
// { |
|
// lisCZC203.Add(ig.Key); |
|
// } |
|
// } |
|
// } |
|
|
|
// lisCZC203 = lisCZC203.Distinct().ToList(); |
|
// foreach (var item in lisCZC203) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC211() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "二调203范围内非边缘拆除图斑,不得去除203属性", |
|
// ErrorType = "一类错误", |
|
// RuleCode = "CZC211", |
|
// RuleName = "二调203范围内非边界拆除图斑去除203属性情况检查" |
|
// }; |
|
// IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
// IGeometry dltbGXgeo = null; |
|
// IFeatureCursor pCursor = null; |
|
// IFeature feature = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
// { |
|
// throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
// } |
|
// edczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
// } |
|
// if (edczc_dltbFeatureClass.Fields.FindField("CZSX") == -1) |
|
// throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps, //覆盖 |
|
// WhereClause = "CZCLX ='203' and CZSX = '二调村庄范围'" |
|
// }; |
|
|
|
// //对于任务图斑下DTBDLTBGXGC层中变更后地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为空的部分,该部分记为A。在A中,提取变更前城镇村属性码为203的部分,该部分记为B。 |
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bgqczcsxm='203' and (bghczcsxm='' or bghczcsxm is null)"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
|
|
// List<string> lisCZC211 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// bool isOverLaps = false; |
|
// bool isTouch = false; |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// //与二调203范围存在重叠 |
|
// spatialFilter.Geometry = dltbGXgeo; |
|
// pCursor = edczc_dltbFeatureClass.Search(spatialFilter, true); |
|
// feature = pCursor.NextFeature(); |
|
// if (feature != null) |
|
// isOverLaps = true; |
|
// //与二调203范围存在共边的情况 |
|
// ISpatialFilter sped = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelTouches, //共边 |
|
// WhereClause = "CZCSXM='203'" |
|
// }; |
|
// if (edczc_dltbFeatureClass.Search(sped, true).NextFeature() != null) |
|
// isTouch = true; |
|
// } |
|
// if (isOverLaps && !isTouch) |
|
// lisCZC211.Add(ig.Key); |
|
// } |
|
|
|
// lisCZC211 = lisCZC211.Distinct().ToList(); |
|
// foreach (var item in lisCZC211) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC212() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "二调203范围内非拆除图斑,不得去除203属性。", |
|
// ErrorType = "一类错误", |
|
// RuleCode = "CZC212", |
|
// RuleName = "二调203范围内非拆除图斑去除203情况检查" |
|
// }; |
|
// IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
// IGeometry dltbGXgeo = null; |
|
// IFeatureCursor pCursor = null; |
|
// IFeature feature = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
// { |
|
// throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
// } |
|
// edczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
// } |
|
// if (edczc_dltbFeatureClass.Fields.FindField("CZSX") == -1) |
|
// throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps, //覆盖 |
|
// WhereClause = "CZCLX ='203' and CZSX = '二调村庄范围'" |
|
// }; |
|
|
|
// //对于任务图斑下DTBDLTBGXGC层中变更后地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为空的部分,该部分记为A。在A中,提取变更前城镇村属性码为203的部分,该部分记为B。 且变更前地类不为05类、06类(含0603)、07、08、09、1004、1005、1201,且面积大于10平方米。 |
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bgqdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201') and bgqczcsxm='203' and (bghczcsxm='' or bghczcsxm is null) and bghtbdlmj>10"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
|
|
// List<string> lisCZC211 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// //与二调203范围存在重叠 |
|
// spatialFilter.Geometry = dltbGXgeo; |
|
// pCursor = edczc_dltbFeatureClass.Search(spatialFilter, true); |
|
// feature = pCursor.NextFeature(); |
|
// if (feature != null) |
|
// { |
|
// lisCZC211.Add(ig.Key); |
|
// } |
|
// } |
|
// } |
|
|
|
// lisCZC211 = lisCZC211.Distinct().ToList(); |
|
// foreach (var item in lisCZC211) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC213() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "二调203范围内疑似迭代图斑,去除203属性合理性检", |
|
// ErrorType = "二类错误", |
|
// RuleCode = "CZC213", |
|
// RuleName = "二调203范围内疑似迭代图斑,去除203属性合理性检查" |
|
// }; |
|
// IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
// IGeometry dltbGXgeo = null; |
|
// IFeatureCursor pCursor = null; |
|
// IFeature feature = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
// { |
|
// throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
// } |
|
// edczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
// } |
|
// if (edczc_dltbFeatureClass.Fields.FindField("CZSX") == -1) |
|
// throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps, //覆盖 |
|
// WhereClause = "CZCLX ='203' and CZSX = '二调村庄范围'" |
|
// }; |
|
|
|
// //对于任务图斑下DTBDLTBGXGC层中变更后地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为空的部分,该部分记为A。在A中,提取变更前城镇村属性码为203的部分,该部分记为B。 且变更前地类不为05类、06类(含0603)、07、08、09、1004、1005、1201,且面积未达到10平方米。 |
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bgqdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201') and bgqczcsxm='203' and (bghczcsxm='' or bghczcsxm is null) and bghtbdlmj<=10"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
|
|
// List<string> lisCZC213 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// //与二调203范围存在重叠 |
|
// spatialFilter.Geometry = dltbGXgeo; |
|
// pCursor = edczc_dltbFeatureClass.Search(spatialFilter, true); |
|
// feature = pCursor.NextFeature(); |
|
// if (feature != null) |
|
// { |
|
// lisCZC213.Add(ig.Key); |
|
// } |
|
// } |
|
// } |
|
|
|
// lisCZC213 = lisCZC213.Distinct().ToList(); |
|
// foreach (var item in lisCZC213) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC214() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "二调203范围内疑似拆除图斑,不得去除203属性", |
|
// ErrorType = "二类错误", |
|
// RuleCode = "CZC214", |
|
// RuleName = "二调203范围内疑似拆除图斑,不得去除203属性情况检查" |
|
// }; |
|
// IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
// IGeometry dltbGXgeo = null; |
|
// IFeatureCursor pCursor = null; |
|
// IFeature feature = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
// { |
|
// throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
// } |
|
// edczc_dltbFeatureClass = DicFeatureClass[key_czcdyd]; |
|
// ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
// } |
|
// if (edczc_dltbFeatureClass.Fields.FindField("CZSX") == -1) |
|
// throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps, //覆盖 |
|
// WhereClause = "CZCLX ='203' and CZSX = '二调村庄范围'" |
|
// }; |
|
|
|
// //对于任务图斑下DTBDLTBGXGC层中变更后地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为空的部分,该部分记为A。在A中,提取变更前城镇村属性码为203的部分,该部分记为B。 且变更前地类均为05类、06类(含0603)、07、08、09、1004、1005、1201 |
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bgqdlbm in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201') and bgqczcsxm='203' and (bghczcsxm='' or bghczcsxm is null)"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
// string sql2 = $"select bghtbbsm,count(1) from dtbdltbgxgc where tbbsm = '{TBBSM}' group by bghtbbsm"; |
|
// DataTable dt2 = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql2); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
// Dictionary<string, int> dic = new Dictionary<string, int>(); |
|
// foreach (DataRow dr in dt2.Rows) |
|
// { |
|
// dic[dr[0].ToString()] = Convert.ToInt32(dr[1].ToString()); |
|
// } |
|
|
|
// List<string> lisCZC214 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// if (ig.Count() != dic[ig.Key]) |
|
// continue; |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// //与二调203范围存在重叠 |
|
// spatialFilter.Geometry = dltbGXgeo; |
|
// pCursor = edczc_dltbFeatureClass.Search(spatialFilter, true); |
|
// feature = pCursor.NextFeature(); |
|
// if (feature != null) |
|
// { |
|
// lisCZC214.Add(ig.Key); |
|
// } |
|
// } |
|
// } |
|
|
|
// lisCZC214 = lisCZC214.Distinct().ToList(); |
|
// foreach (var item in lisCZC214) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC221() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "新增非建设用地203属性图斑面积不得大于10平方米", |
|
// ErrorType = "一类错误", |
|
// RuleCode = "CZC221", |
|
// RuleName = "新增非建设用地203属性图斑面积检查" |
|
// }; |
|
// IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
// IGeometry dltbGXgeo = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey("JC_DLTB") || DicFeatureClass["JC_DLTB"] == null) |
|
// { |
|
// throw new Exception("未找到“基础_地类图斑”参考图层!"); |
|
// } |
|
// edczc_dltbFeatureClass = DicFeatureClass["JC_DLTB"]; |
|
// ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("基础_地类图斑数据坐标参考为空,质检失败!"); |
|
// } |
|
// //对于任务图斑下DTBDLTBGXGC层中变更后地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。在A中,提取变更前城镇村属性码为空的部分,该部分记为B。 |
|
// string sql = $"select bghtbbsm,egeometry from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and bghczcsxm='203' and (bgqczcsxm='' or bgqczcsxm is null)"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
|
|
// List<string> lisCZC221 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// IGeometryCollection geometries = new GeometryBagClass(); |
|
// ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// geometries.AddGeometry(dltbGXgeo); |
|
// } |
|
// //融合 |
|
// gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
// IGeometry pGeoC = gxgcTopological as IGeometry; |
|
// IArea area = pGeoC as IArea; |
|
// if (area != null && area.Area >= 10) |
|
// lisCZC221.Add(ig.Key); |
|
// } |
|
|
|
// lisCZC221 = lisCZC221.Distinct().ToList(); |
|
// foreach (var item in lisCZC221) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
//public List<RuleEntity> CZC222() |
|
//{ |
|
// List<RuleEntity> rst = new List<RuleEntity>(); |
|
// RuleEntity ruleEntity = new RuleEntity() |
|
// { |
|
// CheckObject = "DTBDLTBGX", |
|
// ErrorId = this.TBBSM, |
|
// ErrorTip = "新增非建设用地203属性图斑必须与203保留图斑共边", |
|
// ErrorType = "一类错误", |
|
// RuleCode = "CZC222", |
|
// RuleName = "新增非建设用地203属性图斑检查" |
|
// }; |
|
// IFeatureClass sdczc_dltbFeatureClass = null; //三调203 |
|
// IGeometry dltbGXgeo = null; |
|
// try |
|
// { |
|
// if (!DicFeatureClass.ContainsKey("JC_DLTB") || DicFeatureClass["JC_DLTB"] == null) |
|
// { |
|
// throw new Exception("未找到“基础_地类图斑”参考图层!"); |
|
// } |
|
// sdczc_dltbFeatureClass = DicFeatureClass["JC_DLTB"]; ; |
|
// ISpatialReference spatialReference = (sdczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
// if (spatialReference == null) |
|
// { |
|
// throw new Exception("基础_地类图斑数据坐标参考为空,质检失败!"); |
|
// } |
|
// ISpatialFilter spatialFilter = new SpatialFilterClass |
|
// { |
|
// SpatialRel = esriSpatialRelEnum.esriSpatialRelOverlaps, //覆盖 |
|
// WhereClause = "CZCSXM='203'" |
|
// }; |
|
|
|
// //对于任务图斑下DTBDLTBGXGC层中变更后地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。在A中,提取变更前城镇村属性码为空的部分,该部分记为B。 |
|
// string sql = $"select bghtbbsm,egeometry,bghdlbm from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghdlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109') and (bgqczcsxm='' or bgqczcsxm is null) and bghczcsxm='203'"; |
|
// DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
// if (dt == null || dt.Rows.Count <= 0) |
|
// return rst; |
|
|
|
// //对于任务图斑下DTBDLTBGXGC层进行提取,提取其中变更前城镇村属性码与变更后城镇村属性码均为203的部分,记为C |
|
// string sql2 = $"select bghtbbsm,egeometry,bghdlbm from dtbdltbgxgc where tbbsm = '{TBBSM}' and bgqczcsxm='203' and bghczcsxm='203'"; |
|
// DataTable dt2 = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql2); |
|
// if (dt2 == null || dt2.Rows.Count <= 0) |
|
// return rst; |
|
// List<Tuple<string, string, IGeometry>> tups = new List<Tuple<string, string, IGeometry>>(); |
|
// foreach (DataRow dataRow in dt2.Rows) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dataRow["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// tups.Add(new Tuple<string, string, IGeometry> |
|
// ( |
|
// dataRow[0].ToString(), |
|
// dataRow[2].ToString(), |
|
// dltbGXgeo |
|
// )); |
|
// } |
|
|
|
// List<string> lisCZC222 = new List<string>(); |
|
// IEnumerable<IGrouping<string, DataRow>> result = dt.Rows.Cast<DataRow>().GroupBy(dr => dr["bghtbbsm"].ToString()); |
|
// foreach (IGrouping<string, DataRow> ig in result) |
|
// { |
|
// IGeometryCollection geometries = new GeometryBagClass(); |
|
// ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
// bool hasTouch = false; |
|
// foreach (DataRow dr in ig) |
|
// { |
|
// dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
// // 将B与C共边,且共边两侧变更后地类编码相同时,通过检查。否则,认定为错误图斑。 |
|
// foreach (var it in tups.Where(x => x.Item2 == dr["bghdlbm"].ToString())) |
|
// { |
|
// if (CommonHelper.IsAdjacent(dltbGXgeo, it.Item3)) |
|
// hasTouch = true; |
|
// } |
|
// } |
|
// if (!hasTouch) |
|
// lisCZC222.Add(ig.Key); |
|
// } |
|
|
|
// lisCZC222 = lisCZC222.Distinct().ToList(); |
|
// foreach (var item in lisCZC222) |
|
// { |
|
// rst.Add(new RuleEntity() |
|
// { |
|
// CheckObject = ruleEntity.CheckObject, |
|
// ErrorId = item, |
|
// BGFWBSM = item, |
|
// ErrorTip = ruleEntity.ErrorTip, |
|
// ErrorType = ruleEntity.ErrorType, |
|
// RuleCode = ruleEntity.RuleCode, |
|
// RuleName = ruleEntity.RuleName, |
|
// RuleContent = ruleEntity.RuleContent, |
|
// }); |
|
// } |
|
// } |
|
// catch (Exception ex) |
|
// { |
|
// ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
// rst.Add(ruleEntity); |
|
// } |
|
// return rst; |
|
//} |
|
|
|
public List<RuleEntity> CZC301() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "201变更为202情况检查", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC301", |
|
RuleName = "201变更为202情况检查" |
|
}; |
|
try |
|
{ |
|
//提取DTBDLTBGXGC层中,变更前城镇村属性码为201,变更后城镇村属性码为202的图斑,纳入人工核查。 |
|
string sql = $"select bghtbbsm from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghczcsxm='202' and bgqczcsxm='201'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC301 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC301 = lisCZC301.Distinct().ToList(); |
|
foreach (var item in lisCZC301) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC302() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "201变更为203情况检查", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC302", |
|
RuleName = "201变更为203情况检查" |
|
}; |
|
try |
|
{ |
|
//提取DTBDLTBGXGC层中,变更前城镇村属性码为201,变更后城镇村属性码为203的图斑,纳入人工核查。 |
|
string sql = $"select bghtbbsm from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghczcsxm='203' and bgqczcsxm='201'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC302 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC303() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "202变更为201情况检查", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC303", |
|
RuleName = "202变更为201情况检查" |
|
}; |
|
try |
|
{ |
|
//提取DTBDLTBGXGC层中,变更前城镇村属性码为202,变更后城镇村属性码为201的图斑,纳入人工核查。 |
|
string sql = $"select bghtbbsm from dtbdltbgxgc where tbbsm = '{TBBSM}'and bghczcsxm='201' and bgqczcsxm='202'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC302 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC304() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "202变更为203情况检查", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC304", |
|
RuleName = "202变更为203情况检查" |
|
}; |
|
try |
|
{ |
|
//提取DTBDLTBGXGC层中,变更前城镇村属性码为202,变更后城镇村属性码为203的图斑,纳入人工核查。 |
|
string sql = $"select bghtbbsm from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghczcsxm='203' and bgqczcsxm='202'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC302 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC305() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "203变更为201情况检查", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC305", |
|
RuleName = "203变更为201情况检查" |
|
}; |
|
try |
|
{ |
|
//提取DTBDLTBGXGC层中,变更前城镇村属性码为203,变更后城镇村属性码为201的图斑,纳入人工核查。 |
|
string sql = $"select bghtbbsm from dtbdltbgxgc where tbbsm = '{TBBSM}'and bghczcsxm='201' and bgqczcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC302 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC306() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "203变更为202情况检查", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC306", |
|
RuleName = "203变更为202情况检查" |
|
}; |
|
try |
|
{ |
|
//提取DTBDLTBGXGC层中,变更前城镇村属性码为203,变更后城镇村属性码为202的图斑,纳入人工核查 |
|
string sql = $"select bghtbbsm from dtbdltbgxgc where tbbsm = '{TBBSM}' and bghczcsxm='202' and bgqczcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC302 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC401() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "因203属性分割的图斑,必须均标记“城镇村图斑编号”", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC401", |
|
RuleName = "城镇村图斑编号标记情况检查" |
|
}; |
|
IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey("JC_DLTB") || DicFeatureClass["JC_DLTB"] == null) |
|
{ |
|
throw new Exception("未找到“基础_地类图斑”参考图层!"); |
|
} |
|
edczc_dltbFeatureClass = DicFeatureClass["JC_DLTB"]; |
|
ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("基础_地类图斑数据坐标参考为空,质检失败!"); |
|
} |
|
|
|
//对于任务图斑下,提取城镇村属性码标注203和空的图斑, |
|
string sql = $"select bsm,egeometry,dlbm,zzsxdm,tbxhdm,ddtcbz,gdlx,CZCTBBH from dtbdltbgx where tbbsm = '{TBBSM}' and (czcsxm='203' or czcsxm='' or czcsxm is null)"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<Tuple<string, IGeometry, string, string>> tuples = new List<Tuple<string, IGeometry, string, string>>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
IGeometry dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
tuples.Add(new Tuple<string, IGeometry, string, string>($"{dr["bsm"]}", dltbGXgeo, $"{dr["dlbm"]}{dr["zzsxdm"]}{dr["tbxhdm"]}{dr["ddtcbz"]}{dr["gdlx"]}", $"{dr["CZCTBBH"]}")); |
|
} |
|
|
|
//若其中存在地类编码、种植属性代码、图斑细化代码、单独图层代码、耕地类型均一致,且共边的图斑,检查其城镇村编号情况是否一致,且不可为空。否则,判定为错误图斑。 |
|
List<string> lisCZC302 = new List<string>(); |
|
var groups = tuples.GroupBy(x => x.Item3); |
|
foreach (var item in groups) |
|
{ |
|
foreach (var gp in item) |
|
{ |
|
string czctbbh = gp.Item4; |
|
foreach (var gp2 in item) |
|
{ |
|
if (gp2.Item1 == gp.Item1) |
|
continue; |
|
if (CommonHelper.IsAdjacent(gp.Item2, gp2.Item2)) |
|
{ |
|
if (gp2.Item4 != gp.Item4 || string.IsNullOrEmpty(gp2.Item4)) |
|
lisCZC302.Add(gp2.Item1); |
|
} |
|
} |
|
|
|
} |
|
} |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC402() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "标记“城镇村图斑编号”的图斑,城镇村属性码应为203或空。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC402", |
|
RuleName = "城镇村图斑编号标记正确性检查" |
|
}; |
|
try |
|
{ |
|
//对于任务图斑下,对于“城镇村图斑编号”不为空、且标记内容相同的图斑,检查其城镇村属性码值域是否在203、空之间。若不位于其中,判定为错误图斑。 |
|
string sql = $"select bsm from dtbdltbgx where tbbsm = '{TBBSM}' and CZCTBBH<>'' and CZCTBBH is not null and (czcsxm not in('203','') and czcsxm is not null)"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
List<string> lisCZC302 = dt.AsEnumerable().Select(x => x[0].ToString()).ToList(); |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC403() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "标记“城镇村图斑编号”的图斑,应共边且地类编码、种植属性代码、图斑细化代码、单独图层代码、耕地类型保持一致", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC403", |
|
RuleName = "城镇村图斑编号标记正确性与地类逻辑检查" |
|
}; |
|
IFeatureClass edczc_dltbFeatureClass = null; //二调203 |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey("JC_DLTB") || DicFeatureClass["JC_DLTB"] == null) |
|
{ |
|
throw new Exception("未找到“基础_地类图斑”参考图层!"); |
|
} |
|
edczc_dltbFeatureClass = DicFeatureClass["JC_DLTB"]; |
|
ISpatialReference spatialReference = (edczc_dltbFeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("基础_地类图斑数据坐标参考为空,质检失败!"); |
|
} |
|
|
|
//对于任务图斑下,对于“城镇村图斑编号”不为空、且标记内容相同的图斑 |
|
string sql = $"select bsm,egeometry,dlbm,zzsxdm,tbxhdm,ddtcbz,gdlx,CZCTBBH from dtbdltbgx where tbbsm = '{TBBSM}' and CZCTBBH <>'' and CZCTBBH is not null"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<Tuple<string, IGeometry, string, string>> tuples = new List<Tuple<string, IGeometry, string, string>>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
IGeometry dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
tuples.Add(new Tuple<string, IGeometry, string, string>($"{dr["bsm"]}", dltbGXgeo, $"{dr["dlbm"]}{dr["zzsxdm"]}{dr["tbxhdm"]}{dr["ddtcbz"]}{dr["gdlx"]}", $"{dr["CZCTBBH"]}")); |
|
} |
|
|
|
//检查其是否共边,且地类编码、种植属性代码、图斑细化代码、单独图层代码、耕地类型均一致。若不共边、或不一致,认定为错误图斑。 |
|
List<string> lisCZC302 = new List<string>(); |
|
var groups = tuples.GroupBy(x => x.Item4); |
|
List<IGeometry> listGeometry; |
|
foreach (var item in groups) |
|
{ |
|
int countsx = item.GroupBy(x => x.Item3).Count(); //比较属性是否都一致 |
|
if (countsx > 1) |
|
{ |
|
foreach (var gp in item) |
|
lisCZC302.Add(gp.Item1); |
|
} |
|
//融合相同城镇村图斑编号的 |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
foreach (var gp in item) |
|
{ |
|
geometries.AddGeometry(gp.Item2); |
|
} |
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
if (CommonHelper.IsMuiltPart(pGeoC, out listGeometry)) |
|
foreach (var gp in item) |
|
lisCZC302.Add(gp.Item1); |
|
} |
|
|
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC404() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "特殊地类不需填写种植属性代码、图斑细化代码、单独图层代码、耕地类型、城镇村属性码、城镇村图斑编号字段", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC404", |
|
RuleName = "特殊地类标注城镇村图斑编号检查" |
|
}; |
|
try |
|
{ |
|
//对于地类编码为88类、99类的图斑,种植属性代码、图斑细化代码、耕地类型、城镇村属性码、城镇村图斑编号字段必须为空。否则,认定为错误图斑。 |
|
string sql = $"select bsm,zzsxdm,tbxhdm,gdlx,CZCTBBH from dtbdltbgx where tbbsm = '{TBBSM}' and (dlbm like '%88%' or dlbm like '%99%')"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
|
|
List<string> lisCZC302 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
if (!string.IsNullOrEmpty(dr["zzsxdm"].ToString()) || !string.IsNullOrEmpty(dr["tbxhdm"].ToString()) || !string.IsNullOrEmpty(dr["gdlx"].ToString()) || !string.IsNullOrEmpty(dr["CZCTBBH"].ToString())) |
|
{ |
|
lisCZC302.Add(dr["bsm"].ToString()); |
|
} |
|
} |
|
lisCZC302 = lisCZC302.Distinct().ToList(); |
|
foreach (var item in lisCZC302) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC501() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "标注村庄属性的非建设用地与三调村庄范围重叠面积大于10平方米时,应切割图斑、并去除重叠部分村庄属性标注。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC501", |
|
RuleName = "标注203非建设用地疑似位于三调203范围内检查" |
|
}; |
|
IFeatureClass czc_FeatureClass = null; //三调203 |
|
IGeometry dltbGXgeo = null; |
|
IFeatureCursor pCursor = null; |
|
IFeature feature = null; |
|
List<IGeometry> listGeometryIntsect = null; |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
{ |
|
throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
} |
|
czc_FeatureClass = DicFeatureClass[key_czcdyd]; |
|
ISpatialReference spatialReference = (czc_FeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
} |
|
if (czc_FeatureClass.Fields.FindField("CZSX") == -1) |
|
throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
//1、对于地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。 |
|
string sql = $"select bsm,egeometry from dtbdltbgx where tbbsm = '{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109','1001A','1002A','1003A') and dlbm not like '88%' and dlbm not like '99%' and czcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
//2、提取下发城镇村等用地参考图层中的“三调村庄属性”部分,改部分记为B。 |
|
List<string> lisCZC501 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass |
|
{ |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
WhereClause = "CZCLX like '203%' and CZSX = '三调村庄范围'" |
|
}; |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
|
|
spatialFilter.Geometry = dltbGXgeo; |
|
pCursor = czc_FeatureClass.Search(spatialFilter, false); |
|
feature = null; |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
//3、将A与B进行叠加,若存在单个重叠部分大于10平方米,认定为错误图斑。 |
|
//IGeometry pGeoInt = CommonHelper.InterSect(feature.ShapeCopy, dltbGXgeo); //叠加 |
|
//CommonHelper.IsMuiltPart(pGeoInt, out listGeometryIntsect); |
|
//foreach (var geo in listGeometryIntsect) |
|
//{ |
|
// IArea pArea = geo as IArea; |
|
// if (pArea.Area > 10) |
|
// { |
|
// lisCZC501.Add(dr[0].ToString()); |
|
// } |
|
//} |
|
geometries.AddGeometry(feature.ShapeCopy); |
|
} |
|
|
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
//3、将A与B进行叠加,若存在单个不重叠部分大于10平方米,认定为错误图斑。 |
|
IGeometry pGeoInt = CommonHelper.InterSect(pGeoC, dltbGXgeo); |
|
CommonHelper.IsMuiltPart(pGeoInt, out listGeometryIntsect); |
|
foreach (var geo in listGeometryIntsect) |
|
{ |
|
IArea pArea = geo as IArea; |
|
if (pArea.Area > 10) |
|
{ |
|
lisCZC501.Add(dr[0].ToString()); |
|
} |
|
} |
|
} |
|
lisCZC501 = lisCZC501.Distinct().ToList(); |
|
foreach (var item in lisCZC501) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC502() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "标注村庄属性的非建设用地与三调村庄范围重叠面积小于10平方米时,核实未重叠部分与二调村庄范围的重叠情况。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC502", |
|
RuleName = "标注203非建设用地存在与三调203部分重叠检查" |
|
}; |
|
IFeatureClass czc_FeatureClass = null; //三调203 |
|
IGeometry dltbGXgeo = null; |
|
IFeatureCursor pCursor = null; |
|
IFeature feature = null; |
|
List<IGeometry> listGeometryIntsect = null; |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
{ |
|
throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
} |
|
czc_FeatureClass = DicFeatureClass[key_czcdyd]; |
|
ISpatialReference spatialReference = (czc_FeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
} |
|
if (czc_FeatureClass.Fields.FindField("CZSX") == -1) |
|
throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
//1、对于地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。 |
|
|
|
string sql = $"select bsm,egeometry from dtbdltbgx where tbbsm = '{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109','1001A','1002A','1003A') and dlbm not like '88%' and dlbm not like '99%' and czcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
//2、提取下发城镇村等用地参考图层中的“三调村庄属性”部分,改部分记为B。 |
|
List<string> lisCZC502 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass |
|
{ |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
WhereClause = "CZCLX like '203%' and CZSX = '三调村庄范围'" |
|
}; |
|
spatialFilter.Geometry = dltbGXgeo; |
|
if (czc_FeatureClass.FeatureCount(spatialFilter) == 0) |
|
{ |
|
if ((dltbGXgeo as IArea).Area < 10) |
|
lisCZC502.Add(dr[0].ToString()); |
|
} |
|
else |
|
{ |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
|
|
pCursor = czc_FeatureClass.Search(spatialFilter, true); |
|
feature = null; |
|
bool flag = false; |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
////3、将A与B进行叠加,若存在重叠部分面积均小于10平方米,纳入人工核查。 |
|
//IGeometry pGeoInt = CommonHelper.InterSect(feature.ShapeCopy, dltbGXgeo); //叠加 |
|
//IArea pArea = pGeoInt as IArea; |
|
//if (pArea.Area >= 10) |
|
//{ |
|
// flag = true; |
|
//} |
|
geometries.AddGeometry(feature.ShapeCopy); |
|
} |
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
//3、将A与B进行叠加,若存在单个不重叠部分大于10平方米,认定为错误图斑。 |
|
IGeometry pGeoInt = CommonHelper.InterSect(pGeoC, dltbGXgeo); |
|
CommonHelper.IsMuiltPart(pGeoInt, out listGeometryIntsect); |
|
foreach (var geo in listGeometryIntsect) |
|
{ |
|
IArea pArea = geo as IArea; |
|
if (pArea.Area >= 10) |
|
{ |
|
flag = true; |
|
} |
|
} |
|
if (!flag) |
|
lisCZC502.Add(dr[0].ToString()); |
|
} |
|
} |
|
lisCZC502 = lisCZC502.Distinct().ToList(); |
|
foreach (var item in lisCZC502) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC503() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "标注村庄属性的非建设用地与二调村庄范围不重叠面积大于10平方米时,应切割图斑、并去除不重叠部分村庄属性标注。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC503", |
|
RuleName = "标注203非建设用地疑似落在二调203范围外检查" |
|
}; |
|
IFeatureClass czc_FeatureClass = null; //三调203 |
|
IGeometry dltbGXgeo = null; |
|
IFeatureCursor pCursor = null; |
|
IFeature feature = null; |
|
List<IGeometry> listGeometryIntsect = null; |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
{ |
|
throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
} |
|
czc_FeatureClass = DicFeatureClass[key_czcdyd]; |
|
ISpatialReference spatialReference = (czc_FeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
} |
|
if (czc_FeatureClass.Fields.FindField("CZSX") == -1) |
|
throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
//1、对于地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。 |
|
string sql = $"select bsm,egeometry from dtbdltbgx where tbbsm = '{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109','1001A','1002A','1003A') and dlbm not like '88%' and dlbm not like '99%' and czcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
//2、提取下发城镇村等用地参考图层中的“二调村庄属性”部分,改部分记为B。 |
|
List<string> lisCZC503 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass |
|
{ |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
WhereClause = "CZCLX like '203%' and CZSX = '二调村庄范围'" |
|
}; |
|
spatialFilter.Geometry = dltbGXgeo; |
|
if (czc_FeatureClass.FeatureCount(spatialFilter) == 0) |
|
{ |
|
if ((dltbGXgeo as IArea).Area > 10) |
|
lisCZC503.Add(dr[0].ToString()); |
|
} |
|
else |
|
{ |
|
//融合相同城镇村图斑编号的 |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
pCursor = czc_FeatureClass.Search(spatialFilter, false); |
|
feature = null; |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
//3、将A与B进行叠加,若存在单个不重叠部分大于10平方米,认定为错误图斑。 |
|
//listGeometryIntsect = CommonHelper.DifferenceWithSingle(dltbGXgeo, feature.ShapeCopy); |
|
//foreach (var geo in listGeometryIntsect) |
|
//{ |
|
// IArea pArea = geo as IArea; |
|
// if (pArea.Area > 10) |
|
// { |
|
// lisCZC503.Add(dr[0].ToString()); |
|
// } |
|
//} |
|
geometries.AddGeometry(feature.ShapeCopy); |
|
} |
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
//3、将A与B进行叠加,若存在单个不重叠部分大于10平方米,认定为错误图斑。 |
|
listGeometryIntsect = CommonHelper.DifferenceWithSingle(dltbGXgeo, pGeoC); |
|
foreach (var geo in listGeometryIntsect) |
|
{ |
|
IArea pArea = geo as IArea; |
|
if (pArea.Area > 10) |
|
{ |
|
lisCZC503.Add(dr[0].ToString()); |
|
} |
|
} |
|
} |
|
} |
|
lisCZC503 = lisCZC503.Distinct().ToList(); |
|
foreach (var item in lisCZC503) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC504() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "标注村庄属性的非建设用地与二调村庄范围不重叠面积小于10平方米时,核实重叠部分与203范围重叠情况。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC504", |
|
RuleName = "标注203非建设用地存在新增203情况检查" |
|
}; |
|
IFeatureClass czc_FeatureClass = null; //三调203 |
|
IGeometry dltbGXgeo = null; |
|
IFeatureCursor pCursor = null; |
|
IFeature feature = null; |
|
List<IGeometry> listGeometryIntsect = null; |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
{ |
|
throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
} |
|
czc_FeatureClass = DicFeatureClass[key_czcdyd]; |
|
ISpatialReference spatialReference = (czc_FeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
} |
|
if (czc_FeatureClass.Fields.FindField("CZSX") == -1) |
|
throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
//1、对于地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。 |
|
string sql = $"select bsm,egeometry from dtbdltbgx where tbbsm = '{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109','1001A','1002A','1003A') and dlbm not like '88%' and dlbm not like '99%' and czcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
//2、提取下发城镇村等用地参考图层中的“二调村庄属性”部分,改部分记为B。 |
|
List<string> lisCZC503 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass |
|
{ |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
WhereClause = "CZCLX like '203%' and CZSX = '二调村庄范围'" |
|
}; |
|
spatialFilter.Geometry = dltbGXgeo; |
|
if (czc_FeatureClass.FeatureCount(spatialFilter) == 0) |
|
{ |
|
if ((dltbGXgeo as IArea).Area <= 10) |
|
lisCZC503.Add(dr[0].ToString()); |
|
} |
|
else |
|
{ |
|
//融合相同城镇村图斑编号的 |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
pCursor = czc_FeatureClass.Search(spatialFilter, true); |
|
feature = null; |
|
bool flag = false; |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
//3、将A与B进行叠加,若存在单个不重叠部分均小于10平米,纳入人工核查。 |
|
//listGeometryIntsect = CommonHelper.DifferenceWithSingle(dltbGXgeo, feature.ShapeCopy); |
|
//foreach (var geo in listGeometryIntsect) |
|
//{ |
|
// IArea pArea = geo as IArea; |
|
// if (pArea.Area == 0 || pArea.Area >= 10) |
|
// { |
|
// flag = true; |
|
// } |
|
//} |
|
geometries.AddGeometry(feature.ShapeCopy); |
|
} |
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
//3、将A与B进行叠加,若存在单个不重叠部分大于10平方米,认定为错误图斑。 |
|
listGeometryIntsect = CommonHelper.DifferenceWithSingle(dltbGXgeo, pGeoC); |
|
foreach (var geo in listGeometryIntsect) |
|
{ |
|
IArea pArea = geo as IArea; |
|
if (pArea.Area == 0 || pArea.Area >= 10) |
|
{ |
|
flag = true; |
|
} |
|
} |
|
if (!flag) |
|
lisCZC503.Add(dr[0].ToString()); |
|
} |
|
} |
|
lisCZC503 = lisCZC503.Distinct().ToList(); |
|
foreach (var item in lisCZC503) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC505() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "未标注村庄属性的非建设用地与二调村庄范围重叠面积大于30平方米时,应切割图斑、并将重叠部分标注村庄属性。", |
|
ErrorType = "一类错误", |
|
RuleCode = "CZC505", |
|
RuleName = "未标注城镇村属性的非建设用地疑似位于二调203范围内检查" |
|
}; |
|
IFeatureClass czc_FeatureClass = null; //三调203 |
|
IGeometry dltbGXgeo = null; |
|
IFeatureCursor pCursor = null; |
|
IFeature feature = null; |
|
List<IGeometry> listGeometryIntsect = null; |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
{ |
|
throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
} |
|
czc_FeatureClass = DicFeatureClass[key_czcdyd]; |
|
ISpatialReference spatialReference = (czc_FeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
} |
|
if (czc_FeatureClass.Fields.FindField("CZSX") == -1) |
|
throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
//1、对于地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。 |
|
string sql = $"select bsm,egeometry from dtbdltbgx where tbbsm = '{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1002','1003','1007','1008','1009','1109','1001A','1002A','1003A') and dlbm not like '88%' and dlbm not like '99%' and (czcsxm='' or czcsxm is null)"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
//2、提取下发城镇村等用地参考图层中的“二调村庄属性”部分,改部分记为B。 |
|
List<string> lisCZC505 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass |
|
{ |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
WhereClause = "CZCLX like '203%' and CZSX = '二调村庄范围'" |
|
}; |
|
//融合相同城镇村图斑编号的 |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
spatialFilter.Geometry = dltbGXgeo; |
|
pCursor = czc_FeatureClass.Search(spatialFilter, true); |
|
feature = null; |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
////3、将A与B进行叠加,若存在单个重叠部分大于30平方米,认定为错误图斑。 |
|
//IGeometry pGeoInt = CommonHelper.InterSect(feature.ShapeCopy, dltbGXgeo); //叠加 |
|
//CommonHelper.IsMuiltPart(pGeoInt, out listGeometryIntsect); |
|
//foreach (var geo in listGeometryIntsect) |
|
//{ |
|
// IArea pArea = geo as IArea; |
|
// if (pArea.Area > 30) |
|
// { |
|
// lisCZC505.Add(dr[0].ToString()); |
|
// } |
|
//} |
|
geometries.AddGeometry(feature.ShapeCopy); |
|
} |
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
//3、将A与B进行叠加,若存在单个不重叠部分大于10平方米,认定为错误图斑。 |
|
IGeometry pGeoInt = CommonHelper.InterSect(pGeoC, dltbGXgeo); //叠加 |
|
CommonHelper.IsMuiltPart(pGeoInt, out listGeometryIntsect); |
|
foreach (var geo in listGeometryIntsect) |
|
{ |
|
IArea pArea = geo as IArea; |
|
if (pArea.Area > 30) |
|
{ |
|
lisCZC505.Add(dr[0].ToString()); |
|
} |
|
} |
|
|
|
} |
|
lisCZC505 = lisCZC505.Distinct().ToList(); |
|
foreach (var item in lisCZC505) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
public List<RuleEntity> CZC506() |
|
{ |
|
List<RuleEntity> rst = new List<RuleEntity>(); |
|
RuleEntity ruleEntity = new RuleEntity() |
|
{ |
|
CheckObject = "DTBDLTBGX", |
|
ErrorId = this.TBBSM, |
|
ErrorTip = "未标注村庄属性的非建设用地与二调村庄范围重叠面积小于30平方米时,核实未重叠部分与203范围重叠情况。", |
|
ErrorType = "二类错误", |
|
RuleCode = "CZC506", |
|
RuleName = "未标注城镇村属性的非建设用地存在灭失203情况检查" |
|
}; |
|
IFeatureClass czc_FeatureClass = null; //三调203 |
|
IGeometry dltbGXgeo = null; |
|
IFeatureCursor pCursor = null; |
|
IFeature feature = null; |
|
List<IGeometry> listGeometryIntsect = null; |
|
try |
|
{ |
|
if (!DicFeatureClass.ContainsKey(key_czcdyd) || DicFeatureClass[key_czcdyd] == null) |
|
{ |
|
throw new Exception("未找到“下发城镇村等用地”参考图层!"); |
|
} |
|
czc_FeatureClass = DicFeatureClass[key_czcdyd]; |
|
ISpatialReference spatialReference = (czc_FeatureClass as IGeoDataset).SpatialReference; |
|
if (spatialReference == null) |
|
{ |
|
throw new Exception("下发城镇村等用地数据坐标参考为空,质检失败!"); |
|
} |
|
if (czc_FeatureClass.Fields.FindField("CZSX") == -1) |
|
throw new Exception("“下发城镇村等用地”参考图层 未包含CZSX字段"); |
|
|
|
//1、对于地类编码不为05H1、0508、0601、0602、0603、0701、0702、08H1、08H2、08H2A、0809、0810、0810A、09、1004、1005、1201以及1001、1002、1003、1007、1008、1009、1109的图斑,且变更后城镇村属性码为203的部分,该部分记为A。 |
|
string sql = $"select bsm,egeometry from dtbdltbgx where tbbsm = '{TBBSM}' and dlbm not in ('05H1','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0810A','09','1004','1005','1201','1001','1001A','1002','1002A','1003','1003A','1007','1008','1009','1109') and dlbm not like '88%' and dlbm not like '99%' and czcsxm='203'"; |
|
DataTable dt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql); |
|
if (dt == null || dt.Rows.Count <= 0) |
|
return rst; |
|
//2、提取下发城镇村等用地参考图层中的“三调村庄属性”部分,改部分记为B。 |
|
List<string> lisCZC506 = new List<string>(); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
dltbGXgeo = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon, spatialReference.FactoryCode, false); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass |
|
{ |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects, |
|
WhereClause = "CZCLX like '203%' and CZSX = '二调村庄范围'" |
|
}; |
|
spatialFilter.Geometry = dltbGXgeo; |
|
if (czc_FeatureClass.FeatureCount(spatialFilter) == 0) |
|
{ |
|
if ((dltbGXgeo as IArea).Area < 30) |
|
lisCZC506.Add(dr[0].ToString()); |
|
} |
|
else |
|
{ |
|
//融合相同城镇村图斑编号的 |
|
IGeometryCollection geometries = new GeometryBagClass(); |
|
ITopologicalOperator gxgcTopological = new PolygonClass(); |
|
pCursor = czc_FeatureClass.Search(spatialFilter, true); |
|
feature = null; |
|
bool flag = false; |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
////3、将A与B进行叠加,若存在重叠部分面积均小于30平方米,纳入人工核查。 |
|
//IGeometry pGeoInt = CommonHelper.InterSect(feature.ShapeCopy, dltbGXgeo); //叠加 |
|
//IArea pArea = pGeoInt as IArea; |
|
//if (pArea.Area >= 30) |
|
//{ |
|
// flag = true; |
|
//} |
|
geometries.AddGeometry(feature.ShapeCopy); |
|
} |
|
gxgcTopological.ConstructUnion(geometries as IEnumGeometry); |
|
IGeometry pGeoC = gxgcTopological as IGeometry; |
|
|
|
IGeometry pGeoInt = CommonHelper.InterSect(pGeoC, dltbGXgeo); |
|
CommonHelper.IsMuiltPart(pGeoInt, out listGeometryIntsect); |
|
foreach (var geo in listGeometryIntsect) |
|
{ |
|
IArea pArea = geo as IArea; |
|
if (pArea.Area >= 30) |
|
{ |
|
flag = true; |
|
} |
|
} |
|
if (!flag) |
|
{ |
|
lisCZC506.Add(dr[0].ToString()); |
|
} |
|
} |
|
} |
|
lisCZC506 = lisCZC506.Distinct().ToList(); |
|
foreach (var item in lisCZC506) |
|
{ |
|
rst.Add(new RuleEntity() |
|
{ |
|
CheckObject = ruleEntity.CheckObject, |
|
ErrorId = item, |
|
BGFWBSM = item, |
|
ErrorTip = ruleEntity.ErrorTip, |
|
ErrorType = ruleEntity.ErrorType, |
|
RuleCode = ruleEntity.RuleCode, |
|
RuleName = ruleEntity.RuleName, |
|
RuleContent = ruleEntity.RuleContent, |
|
}); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
ruleEntity.ErrorTip = $"{ruleEntity.RuleName}失败:{ex.Message}"; |
|
rst.Add(ruleEntity); |
|
} |
|
return rst; |
|
} |
|
|
|
/// <summary> |
|
///使用方式 |
|
//var wsFactory = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactory(); |
|
//var workspace = wsFactory.OpenFromFile(@"D:\2022变更修改\单图斑建库软件\440203武江区.gdb", 0); |
|
//DicFeatureClass = new Dictionary<string, IFeatureClass>(); |
|
// DicFeatureClass["CZCDYDI"] = (workspace as IFeatureWorkspace).OpenFeatureClass("CZCDYDI"); |
|
//string sql1 = $"select * from dtbdltbgx where tbbsm = '{TBBSM}'"; |
|
//DataTable dtt = CheckHelper.SQLiteDBOperate.Instance.ExceDataTable(this.SourcePath, sql1); |
|
//InsertTB(dtt); |
|
/// </summary> |
|
/// <param name="dt"></param> |
|
private void InsertTB(DataTable dt) |
|
{ |
|
var wsFactory = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactory(); |
|
var workspace = wsFactory.OpenFromFile(@"D:\2022变更修改\单图斑建库软件\新建文件地理数据库.gdb", 0); |
|
IFeatureClass featureClass = (workspace as IFeatureWorkspace).OpenFeatureClass("DLTBGX"); |
|
//若之前存在记录则删除,根据WYRWTBBSM |
|
(featureClass as ITable).DeleteSearchedRows(null); |
|
int ibgqdlbm = featureClass.Fields.FindField("DLBM"); |
|
//int ibgqhlbm = featureClass.Fields.FindField("BGHDLBM"); |
|
int ibgqczcsxm = featureClass.Fields.FindField("CZCSXM"); |
|
//int ibghczcsxm = featureClass.Fields.FindField("BGHCZCSXM"); |
|
int ibghtbbsm = featureClass.Fields.FindField("BSM"); |
|
foreach (DataRow dr in dt.Rows) |
|
{ |
|
IFeature feature = featureClass.CreateFeature(); |
|
string dlbm = dr["dlbm"].ToString(); |
|
feature.Value[ibgqdlbm] = dlbm; |
|
string czcsxm = dr["czcsxm"].ToString(); |
|
feature.Value[ibgqczcsxm] = czcsxm; |
|
string bghtbbsm = dr["bsm"].ToString(); |
|
feature.Value[ibghtbbsm] = bghtbbsm; |
|
//string bgqdlbm = dr["bgqdlbm"].ToString(); |
|
//feature.Value[ibgqdlbm] = bgqdlbm; |
|
//string bghdlbm = dr["bghdlbm"].ToString(); |
|
//feature.Value[ibgqhlbm] = bghdlbm; |
|
//string bgqczcsxm = dr["bgqczcsxm"].ToString(); |
|
//feature.Value[ibgqczcsxm] = bgqczcsxm; |
|
//string bghczcsxm = dr["bghczcsxm"].ToString(); |
|
//feature.Value[ibghczcsxm] = bghczcsxm; |
|
//string bghtbbsm = dr["bghtbbsm"].ToString(); |
|
//feature.Value[ibghtbbsm] = bghtbbsm; |
|
|
|
|
|
feature.Shape = CheckHelper.GeometryConvertHelper.ConverJsonToIGeoemtry(dr["egeometry"].ToString(), esriGeometryType.esriGeometryPolygon); |
|
feature.Store(); |
|
} |
|
|
|
} |
|
} |
|
}
|
|
|