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