基于ArcEngine的通用数据质量检查系统研究

2023-10-11 21:45

摘要:该系统基于VS2015+ArcGIS Engine10.4平台,采用C#语言开发,实现数据属性质量的检查,并将检查项目设置给用户谁可以编辑和添加,可以使用该系统检查不同的项目。目前,该系统已在第三次全国土地调查和贵州省违法占地项目中得到应用。

关键词:ArcGIS Engine;数据质量检查、自定义检查项目

1 简介

对于不同的项目或空间数据库,数据质量检查是必要的,并且不同项目要求的数据库质量检查内容不一致。针对不同的项目需要开发相应的数据质量检验软件,开发成本和精力成本巨大,但本系统的研究解决了这个问题。对于不同的空间数据库,即使检查内容不一致,只要设置相应的检查项目,就可以用于特定的项目。系统主界面如下图:

图1 系统主界面

2 其他接口及功能介绍

图2.1 检查项目设置

检查功能的实现。核心代码如下:

CkeckDataFunc(IFeatureLayer culFeatLayer, 字符串 strSQL, 字符串 strError)

              {

ITable 表 = culFeatLayer.FeatureClass as ITable;

IQueryFilter pQF = new QueryFilter();

pQF.WhereClause = strSQL;

ICursor 光标 = table.Update(pQF, false);

IRow Row = 光标.NextRow();

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

int maxCount = table.RowCount(pQF);

for (int i = 0; i < maxCount; i++)

{

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

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

cursor.UpdateRow(Row);

Row = 光标.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);

}

3 总结

本系统基于VS2015+ArcGIS Engine10.4平台,采用C#语言开发。可自定义数据库质检项目进行检查。您只需新建文本并输入相应的检验内容和检验错误描述,系统就会读取该文本进行检查。

该系统的优点是,针对不同的项目,如果需要对空间数据库属性进行质量检查,用户只需添加相应的检查内容即可(内容结构如图3所示)。目前该系统已在第三次全国土地调查和贵州省违法占地项目中使用,大大节省了巡查软件的开发成本,提高了工作效率。将来也可以用于其他项目。

图3 检查内容结构