城市排水管网GIS数据异常的检测与修复
2022-06-15信昆仑李树平颜合想
杨 歌,汪 维,陶 涛,信昆仑,李树平,颜合想
(同济大学环境科学与工程学院,上海 200092)
防治城市内涝、保障城市水环境健康、维持城市正常运行等都离不开城市排水系统良好的运营管理[1]。将地理信息系统(GIS)技术与给排水专业知识相结合,建立城市排水管网GIS系统,可以极大地提高管网基础信息的更新维护效率,加快相关部门对管网事故的反应速度并丰富其应对措施。排水管网GIS数据库建立和运行的各个阶段均可能产生数据异常,如测量、绘图或施工过程中的误差导致采集到的数据本身存在异常;人工录入、编辑处理和数据修复操作引入的数据异常;使用过程中用户的理解不当或错误使用带来的数据异常[2]。数据是贯穿于GIS系统各开发阶段与组成部分的重要要素,低质量的排水管网数据可能会对排水管网的建模、运行分析及管理方案的决策等多个方面造成不良影响[3]。因此,如何精准、高效地维护和管理城市排水管网GIS数据库,保证数据信息的完整性、准确性与系统性,是一项重要的研究课题。
国外对GIS用于排水系统的研究范围很广,如将GIS应用于计算排水管道的故障概率[4]、估算污水处理厂服务人口[5]、计算城市污废水的热量[6]等,但目前尚未有针对排水管网GIS数据异常检测与修复的研究。国内学者则在排水管网GIS数据质量方面进行了一定的有益探索,如秦立为[3]梳理了排水管网GIS系统的常见数据异常形式和原因等,据此提出了相应的数据质量评价指标及方法。孔彦虎[7]提出了对拓扑异常、属性缺失、图层合并等问题的检测和修复方法,但仅针对单个案例提出该方法,未进行系统性研究。王腾龙[8]结合案例分析了管网中的拓扑异常,在空间数据库中编写规则来检测和修复数据,对人工判断的依赖性较强。以上研究方法一般仅能识别和修正管网拓扑错误和部分属性错误,而针对文本属性、管径和高程等重要数值属性的研究甚少,尚缺乏高效可靠的检测与修复策略。本文提出了系统性解决排水管网各类主要数据异常问题的方法,具有一定的普适性,并采用人机结合的处理方式大大降低了人工成本,为排水管网GIS数据的智能化维护与管理提供了有效的技术支撑。
1 拓扑检测与修复
排水管网的拓扑异常包括排水节点与排水管渠的缺失和重复、管段端点或节点的位置不准确、排水管渠方向错误、管网始端节点与终端节点标注错误等。针对管段和节点的重复、孤立、缺失或位置错误等问题,可借助ArcGIS软件的“拓扑”工具箱,为排水管网中的点、线、面要素建立合理的空间规则,并在错误检查器中进行相应的拓扑修复[9]。而针对部分特殊的拓扑问题,可进一步采用结构化查询语言(structured query language, SQL)在SQL Server或其他软件中编写查询与修正的规则来进行检测与修复:判断排放口或出水口,即查询某个管段的下游节点不为任意管段的上游节点;判断反向管段,即判断某个管段的起点只为其他一根或多根管段的起点,不是任意管段的终点,且它的终点只为其他一根或多根管段的终点,不是任意管段的起点。
2 文本属性项归类与修复
排水管网数据库的文本属性项主要包括排水体制、管渠材料、管理归属部门3类。属性项的表述不应出现存在空值、同种类型表述方式不同、表述方式存在包含关系等错误。本研究基于Jaccard相似系数(Jaccard similarity coefficient)矩阵进行排水管网文本属性项的归类与修复。Jaccard相似系数的数学定义是集合A与集合B的交、并集大小的比值,Jaccard相似系数越大,说明两文本间的相似度越高,从而实现文本分类[10]。基于Jaccard相似系数矩阵的排水管网属性项半自动分类方法包括如下5个步骤。
(1) 剔除某一属性项中的重复值,形成一组新的数据TA={da1,da2,da3,…,daN},计算dai在原始数据TAraw中出现的概率pi,按照文本出现的概率从大到小排序,得到两组相互对应的数据{p1,p2,p3,…,pN}和{da1,da2,da3,…,daN}。
(2) 根据Jaccard相似系数的相反数计算TA不同文本之间的1-gram距离Ji,j,如式(1)。
(1)
其中:Li——文本dai的字符个数;
Lj——文本daj的字符个数;
(3)Ji,j形成距离矩阵J,如图1所示,Ji,j表示dai跟daj的1-gram距离。为避免重复计算,只需计算距离矩阵J的上三角数据,距离矩阵J的对角线数值全部为0。
图1 距离矩阵
(4) 根据距离矩阵J,从da1遍历到daN,将1-gram距离小于某一阈值的两文本划分为同一类别,形成分类矩阵C。对分类矩阵C进行人工调整形成C′,以确保分类准确。如图2所示,处于矩阵C′同一行的文本为同一类别,排在前面的文本出现的频率较大,分类矩阵的行数等于类别数目。
注:NULL为原数据中的空值;[]为矩阵长度不够的占位空值
文本属性项问题的处理流程如图3所示,异常的属性值将被修改为其可能正确的表述中与其距离“最近”的修正值,而距离“最近”通过比较1-gram距离确定。被归为同一类的所有属性值,将被修改为“最常见”的正确属性值,而“最常见”通过统计各属性项在数据集中出现的次数确定。这种方法具有无需挑选训练集对其进行标记、人工操作简单、维护成本低等优点。
图3 属性项半自动分类方法流程图
3 管径检测与修复
本文提出基于规则的异常管径修复方法,排水管网的管径问题包括错误值和缺失值,处理流程如图4所示。将明显不在取值范围内的错误管径值修改为0,针对管径值为0的管段进行逐个判断填充,根据用户自定义的一系列参数取值,结合上下游管段的实际存在情况填充缺失管径。在程序编写中,函数如式(2)。
图4 管径问题的处理流程图
[H, ifup, tick] = GetH(t, H0set, FL_Q, ifupprior, ifdel, Nmax)
(2)
其中:t——临时变量,表示第t根缺失管径的管段;
H0set——缺失管径的管段集合;
FL_Q——管段数据;
ifupprior——确定非管网始端管段管径按上游或下游管段管径填充的参数;
ifdel——确定管网始端管段管径按下游管段管径填充或直接删除的参数;
Nmax——单根孤立管段管径的填充值;
H——管径填充值;
ifup——记录返回管径值是上游还是下游管径的参数;
tick——记录管段的上游或下游管段的总数。
具体输入参数说明如表1所示,输出参数说明如表2所示。
表1 输入参数说明
表2 输出参数说明
若返回的管径值为0,说明此时管网中至少存在两条连续的缺失管径管道,这种情况可以通过两次或多次填充解决。但考虑到多次填充可能带来较大误差,重复填充的次数不宜过多,关于管段孤立或连续管径缺失的情况还需结合外部信息才能更好地进行填充。
4 高程检测与修复
在一个管段分支中,排水管道的高程一般遵循从上游到下游逐渐下降且无突变的规律,基于这种规律可以识别出异常的高程值。首先对管段高程进行预处理,将明显异常的高程值以“埋深0.7 m”为标准进行修正,以降低后续不合理检测或修复情况的发生概率。然后整理排水管网GIS数据,构造节点索引的管段分支集合。每个分支用一个数组来表示,按从下游往上游追溯排列,分支branch[i]=[分支终端节点编号, 管段1编号, 管段2编号, …, 管段n-1编号, 管段n编号, 分支始端节点编号],分支集合topology={branch[1], branch[2], …, branch[m-1], branch[m]}。构造这个管段分支集合的函数流程如图5和图6所示。
图5 构造管段分支集合的主函数流程图
图6 构造管段分支的迭代函数流程图
根据构造出的全部管段的分支集合,基于最小二乘法进行分支管段高程异常值的检测。对每个分支上各根管段的下游(或上游)高程做直线拟合(分支管段数为两根)或二次曲线拟合(分支管段数≥3根),并做出曲线的50%置信区间,超出置信区间的管段上游和下游高程被认为可能是错误的,需要进行标记并结合外部信息具体判断。分支管段高程处理方法实现的流程如图7所示。
图7 分支高程异常检测流程图
分支高程修复结束后,还需要对各分支连接处的高程进行检测。若多通节点处有上游管段下游管底标高≤(下游管段上游管底最小标高-上游管段直径),则认为管段高程可能有误。若检查井处不满足井底标高≤下游管段上游管底标高或井底标高≤上游管段下游管底标高,则认为检查井井底标高可能有误。
5 程序开发
Matlab具有强大的数据处理能力,适应于排水管网数据量大且复杂的特点,因此,本研究根据上述方法,在Matlab的GUIDE中编写交互界面,开发排水管网异常数据检测与修复程序,从而实现人机结合的数据异常处理策略。该程序包括4个界面,如图8所示。界面一是主界面,用于读取GIS数据、保存GIS数据中的列信息、将修改后的GIS数据写入新的GIS文件中,由用户输入管段编号等数据的所在列,方便程序读取。界面二是排水管网属性项归类与分析界面,由用户输入属性数据表名及待分析属性所在列,程序可计算并展示出该属性所有独立文本出现的次数及分类矩阵,用户可根据经验进行人工调整并据此进行修复。界面三是管径异常值检测与修复界面,由用户输入管径所在列,程序可计算并展示出管径所有值出现的次数,用户可将明显异常的管径修改为0,程序可根据用户设定的参数返回相应的管径修正参考值。界面四是检测和修复管段高程界面,由用户输入相应高程所在列,将高出地面的管段高程和埋深过大的高程修改为埋深0.7 m,接下来可以对所有分支进行曲线拟合,识别异常高程,并将曲线上的点作为异常高程的推荐修改值。程序可以将异常的上下游高程及推荐值在界面的表格中展示,用户可根据经验判断修正表格中的高程推荐值,据此修复GIS数据。
图8 排水管网异常数据检测与修复的程序界面
6 工程案例分析
以ZH市部分区域的排水管网GIS数据作为工程案例的研究对象。评估范围内有排水管道共1 969.77 km,排水沟渠共505.01 km。对原始数据进行预处理,用节点索引的分支管段拓扑结构表示法构造管网的管段分支集合和特殊节点集合,简化后得到排水管道共6 805个分支。异常数据检测与修复结果如表3所示。
表3 ZH市排水管网GIS数据异常数据检测与修复结果
将所有异常管段和节点写入新的GIS文件,检测与修复的结果可在ArcGIS中与原始GIS数据对比展示。如图9所示,左侧是不同类型异常的图层列表,将异常数据分为“拓扑”“管渠尺寸”“高程”和“其他”4大类,此外可能正确的修正值也被写入GIS文件的属性数据库中以供参考。
图9 在ArcGIS中查看异常数据
7 结论
目前,我国绝大部分城市都已经建成或正在建立城市排水管网GIS数据库,但这些数据库往往存在着不同程度的数据质量问题。只有保证高质量的数据,才能使GIS系统真正发挥出在排水管网信息化管理和建模分析等方面的作用。本文着重研究和实现了具有一定普适性的解决排水管网各类主要数据异常问题的方法:总结了拓扑检测的两种实现;提出了文本属性项的半自动分类与修复方法;实现了基于规则的上下游管径填充法;构造了一种节点索引的分支管段拓扑结构表示法,在此基础上实现了基于最小二乘法的分支管段高程异常检测与修复;基于上述策略开发了具有属性项归类、管径修复和高程修复功能的排水管网异常数据检测与修复程序,实现了人机交互式的异常数据检测与修复;最后将该方法应用到ZH市某区域排水管网GIS数据的异常检测与修复中,验证了方法的可行性与实用性。