基于ArcGISEngine的数据质量通用检查系统研究与实现

2021-08-03 05:42罗万林吴永星
建材与装饰 2021年22期
关键词:质量检查字段错误

罗万林,吴永星

(贵州省第三测绘院,贵州 贵阳 550004)

0 引言

对于不同的项目或者空间数据库,数据质量的检查是必须的,而不同的项目要求的数据库质量检查内容又不一致,需要针对不同的项目开发出对应的数据质量检查软件,开发成本和精力耗费巨大,而本系统的研究正解决了这一问题,针对不同的空间数据库,即便检查内容不一致,只要按照一定的格式要求设置好对应的检查项,就可以用于具体的项目。系统主界面如图1所示:

图1 系统主界面

1 操作流程

操作流程非常简单,只需几个步骤就可以,如图2所示。

图2 操作流程

2 系统实现功能介绍

2.1 检查功能的实现

将错误代码和错误类型开放存至本系统目录“...检查项”下的.txt文件中,用户可以自定义编辑增加修改检查项内容(如图3所示),系统会自动读取该目录下的所有检查项,并将检查的错误类型和错误代码读取,然后去执行CkeckDataFunc()方法,有错误记录的会被追加记录到检查字段“CheckResult”中。

图3 自定义检查项

检查功能核心代码如下所示:

CkeckDataFunc(IFeatureLayer culFeatLayer,string strSQL,string strError)

{

ITable table=culFeatLayer.FeatureClass as ITable;

IQueryFilter pQF=new QueryFilter();

pQF.WhereClause=strSQL;

ICursor cursor=table.Update(pQF,false);

IRow Row=cursor.NextRow();

int fieldCR=Row.Fields.FindField("CheckResult");

int maxCount=table.RowCount(pQF);

for(int i=0;i

{

string strCR=(string)Row.Value[fieldCR];

Row.Value[fieldCR]=strCR+strError+";";

cursor.UpdateRow(Row);

Row=cursor.NextRow();

}

Marshal.ReleaseComObject(pQF);

}

读取自定义检查内容并检查核心代码如下:

using(StreamReader sr=new StreamReader(strtxt,Encoding.UTF8))

{

selSQL=sr.ReadToEnd();

string selSQLBJ=selSQL.Split('&')[0];//错误类型

selSQL=selSQL.Split('&')[1];//错误代码

CkeckDataFunc(pSelectFtLayer,selSQL,selSQLBJ);

}

2.2 设置是否检查

用户可以针对具体情况,设置某检查项是否需要检查(如图4所示),将需要检查的项点击选择对应的复选框,然后点击保存。系统在执行检查时会判定,只将选中的选项进行检查。

图4 检查项设置

2.3 检查结果

检查结果存放在被检查的要素图层的字段“CheckResult”中,可以用ArcGIS查看,以便于修改,如图5所示:

图5 检查结果

3 结语

本系统基于VS2015+ArcGISEngine10.4平台,采用C#语言开发,实现数据库质量检查项可以自定义检查,只需新建文本并按照文本格式输入相应的检查内容和检查错误描述,系统就会读取该文本内容去执行检查,检查结果存放在被检查数据的字段“CheckResult”中。

本系统的优势在于针对不同的项目,若需要对空间数据库属性质量检查,只需用户添加相应的检查内容就可以了(内容结构如图6所示),“&”为分割符号,分隔符左边为检查的问题描述,右边为执行检查的SQL语句。目前本系统已经用于第三次全国国土调查和贵州省违法占耕项目,极大地节约了检查软件的开发成本,且提高工作效率,后续还可以用于其他项目。

图6 检查内容结构

猜你喜欢
质量检查字段错误
图书馆中文图书编目外包数据质量控制分析
在错误中成长
审计署赴江西省审计厅质量检查座谈会
中注协举办2016年证券资格会计师事务所执业质量检查人员培训班
加强会计信息质量检查促进会计基础工作规范
不犯同样错误
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
《错误》:怎一个“美”字了得
关于CNMARC的3--字段改革的必要性与可行性研究