基于GIS的多水源环状管网爆管分析的算法

2010-06-26 06:23王杉杉骆旭佳胡小华
水科学与工程技术 2010年4期
关键词:关阀邻接矩阵数组

王杉杉,骆旭佳,高 飞,胡小华

(1.合肥工业大学 土木与水利工程学院,合肥 230009;2.浙江华东测绘有限公司,杭州310030;3.合肥市国土资源局地理信息中心,合肥230001)

伴随着经济的快速发展,我国城市化步伐也在加速。然而城市的快速发展也带来了种种问题:复杂的交通道路系统,复杂的地下给排水管道系统[1],复杂的地下线路系统。由于供水供气管道、地下光缆等设施绝大部分埋设在地下,规格不一,年代不同,因此显得更为复杂[2]。我国计算机管理和基础信息GIS建设起步整体上稍落后于欧美等发达国家,城市快速建设虽留下了丰富的图纸和相关表格资料,但是并没有采用计算机技术进行统一管理,复杂凌乱,资料利用率低。而今,城市建设处于修复、整改和扩建阶段,由于无法获得施工区完整的地下资料,市政施工频频导致地下管线遭到破坏;年代久远的供水供气管道无法满足现代城市的发展需要,加上更新不及时,过大的压力导致陈旧管道爆管事故频频发生。为了最大限度地降低管道爆裂产生的损失,当事故发生时,相关部门必须迅速对这些管道进行定位,快速确定影响范围,并制定最优化的关闭修复方案。这时,传统的人工方法已经无法满足领导快速决策的需求,借助GIS和计算机技术,爆管分析系统应运而生。

目前,国内也已推出很多管道管理软件,但是商品化的软件成本昂贵,数据格式固定,系统内部模型和建模过程也不公开,部分陈旧系统只考虑了树状管道模型,而现在城市地下水多数情况为多水源的环状管道网络。本文以小城市为试点,在研究已有的部分管网信息系统的基础上,结合城市地下管网的特点,建立了GIS的网络数据模型,并对爆管事故进行分析,制定了切实可行的关阀方案。

1 理论模型

城市地下管网纵横交错,流向也随着管道两端压力的变化而变化。由于表格和图纸的局限性,面对庞杂的地下管网,发生事故时传统方法无法快速准确的为决策者提供服务。在部分陈旧的管网分析系统中,由于缺少GIS技术,属性数据与图形数据往往是分开管理,甚至有的系统并未用上图形的功能。而计算机技术和GIS技术的结合,能将图形数据和属性数据很好地结合在一起,形成良好、直观的可视化界面,做到不同类型数据间的统一管理。ArcGIS的shape文件就是一种应用广泛的数据,它将图形数据和属性数据通过统一的字段进行关联,做到了两种数据的统一。在本文中,通过图形数据来表达所有的管道和结点的位置信息;通过属性数据来描述管道与结点之间的邻接关系及管道、结点的其他属性。

1.1 图论数据模型及广序遍历

城市地下管网存在多个供水源头,其内部管道连通错综复杂。由于管网的这种复杂连通关系,使得其中任何两个接头都可能存在关系,简单的树结构根本无法表达复杂的系统。而图却能很好地表述这一问题。本文中借助计算机技术中的图算法来解决管道关阀搜索。G由V、E两个集合组成:G=(V、E)。V表示顶点集合,E表示顶点间的关系。图分为有向图和无向图,可以用图的有向性来表示水流方向[3-4]。

广序遍历(BFS)是从结点集合V中一个指定结点V[i]开始访问,下一步访问所有与V[i]连接的未被访问的点w1,w2,w3,w4,…,wt,再依次访问与w1,w2,…,wt相邻接未被访问的结点。依次类推,直到结点集合V中所有的点均被访问,整个图的遍历才算结束。如图1所示,其广度优先遍历顺序就是0,1,2,3,4,5,6。

1.2 图的邻接矩阵存储方式

图是一种非线性数据结构,其内部各结点之间都有可能存在关系,这种复杂关系可以有多种存储方法。针对本次开发的平台为Visual Basic,本程序中选用邻接矩阵存储方法来存储一个图。

图1 无向图

如图1所示,可以用一个一维数组V[7]来表示这个图的顶点(vertex),图内点间的关系用一个二维数组A[i][j]来表示,即邻接矩阵。 在邻接矩阵中,i、j表示顶点序号,A[i][j]的值k表示顶点之间的邻接关系。针对图1中顶点之间的关系可以用图2表示。邻接表取值为:

图2 邻接矩阵

2 环状管网爆管分析的算法与实现

城市地下环状管网在实际使用过程中,上下游实时用户的分布情况、阀门情况、水源和供水站的加压情况等随时会改变管道两端的压强,导致管道内部流向变化,无法定性。且管道埋深不一,制作材质不同,这些都会影响管道不同位置的压强,这些因素的权值也无法确定,因此本文将整个地下管道图抽象为无权的无向图。发生管道爆裂等急性事件后,想要得到的最佳方案是:在合理的受损影响范围内,使得关闭的阀门数量最少。在实际过程中即搜寻最近的、与当前管道可以流通的阀门,将其关闭。这样就可以控制水流,也可以统计得到最合理的停水影响范围。

通过上述分析,结合管网数据的特征,现在可以用一张无向图来抽象表示当前管道模型:用顶点表示各个接头、阀门、水源;用一个无权值的邻接矩阵来表示管道、结点之间的连通关系。现在将管道数据组织成如下形式:crunode图层(Point图层),包含各种管道结点的信息,抽象为图的顶点图层;pipe图层(Polyline),存储管道的各种信息,抽象为图的邻接关系。在程序中,建立一个二维数组,通过读取pipe图层的各条记录,得到各个相关管道的FROMID和TOID属性,存入数组,可以生成当前管道图的邻接矩阵。

本文将生成关阀方案的过程分成两部分实现:①通过广序遍历生成初步关阀方案,如图3;②通过对初步方案中的各个阀门进行分析,去除可关可不关的一类阀门,以此来得到最优化的高效率阀门关闭方案[5]。

图3 广序遍历生成初步方案流程

2.1 初步关阀方案算法分析

根据图论广序遍历搜索的原理,通过点击图面拾取或者按照名称查找得到爆裂的管道,先判断管道两头的结点,若两头都是阀门(特殊情况),不需要进行搜索,两端阀门直接进入初步关阀结果;若不是,则以非阀门端为图的起点(两端均为普通节点的任取一个),进行图的广序遍历搜索,来计算生成初步关阀方案:首先访问相邻结点,如果该结点未被访问,则标记为已读。且如果是阀门或者水源,则分别加入初步关阀方案的相应数组:水源数组或者阀门数组;待与该起始点相邻的所有结点访问结束后,从队列中取队头元素,开始新的一层搜索。依次类推,直到队列为空时结束搜索,此时水源数组和阀门数组中的各个结点均为需要关闭的水源或者阀门。

2.2 初步方案进行优化的算法

在2.1部分中生成的初步方案内,有一些阀门处于可关可不关的状态。事故发生后,如果对这一类阀门也进行关闭,只是增加了成本,浪费了人力,因此,下一步的工作就是将这些阀门从初始方案中剔除,在保证关阀正确性的同时,得到优化方案。

假设初步关阀方案中的阀门都关闭,然后对初始方案中的每个阀门都进行如下操作以优化剔除阀门:以该阀门为起点进行广序遍历搜索,寻找未关闭的水源。①如果遇到初步关阀方案中的阀门则停止继续往该路径上进行遍历,因为假设这些阀门也被关闭,“此路不通”,暂停该路径,寻求其他路径去寻找未关闭的水源;②如果通过其他路径该阀门能遍历到初始水源关闭方案以外的水源,则说明关闭某些阀门后,该阀门和其他水源之间依然存在通路,因此它是一定要关闭的阀门;③如果不能遍历到其他水源,则表明这个阀门所在管线的水流被初步方案中阀门集合内某些阀门控制着,关闭了其他阀门,这个阀门所在的管线上就没有水流了,所以这个阀门属于可关可不关的类型,在初步关阀方案中要剔除,最后得到的就是发生爆管事故后最经济的阀门关闭方案。

2.3 程序实现与结果分析

针对小城市的地下管道系统,数据量相对较少,本系统采用的是Visual Studio 6.0中的Visual Basic 6.0和MapObjects开发组件。VB是微软公司开发的包含协助开发环境的事件驱动编程语言。它拥有图形用户界面,程序员可以轻松地使用VB提供的组件快速建立一个应用程序[6]。MapObjects是ESRI公司提供的一组供GIS应用开发人员使用的组件。利用MapObjects,开发人员可以在应用程序中添加制图和GIS功能。组件式的开发方式大大方便了开发人员。得益于Visual Basic和MapObjects的优点,两者相结合的开发方式在小型GIS软件系统的开发中得到了广泛应用[7-8]。

图4 对初步方案内阀门进行筛选的流程

图5 系统界面

结合分析,通过点击图面选择某一管道作为爆裂的管道,对其进行爆管分析。如图6所示,图中三角形位置为阀门,1、35号结点为水源。假设两端结点ID为48和22的管段破裂,计算过程如下:第一步生成的初步方案中需关闭的阀门共有4个;经优化后,仅需关闭2个阀门(如图6所示)。仔细检查发现,这2个阀门正好可以满足要求,同时也保证了相对较小的受影响区域。对比初始方案和最终结果内部所关闭的阀门情况得出,经过优化的方案大大减少了阀门数量,减少了不必要的损失和浪费。

图6 初始关阀方案与优化关阀方案对比图

3 结语

目前使用的多数管网管理软件通常需要区分配水管和给水管,而本算法却形成了一个通用算法,任何管段爆裂,都能快速准确的定位和生成关阀方案,也可用于计算受影响的用户;也有很多软件只是考虑单个水源的环状管道,本文的方法适用于多个水源的复杂地下管道。但是,其中也存在诸多不足之处:该算法内部未结合阀门本身的故障进行解算,无法解决由于阀门本身或者结点本身损坏而导致的漏水漏气事故;该算法内部没有集成管网内部压强平差的计算。此外,如果能结合计算机硬件技术、单片机技术和网络技术,实时动态的监测各个管道的水压变化,通过网络传输实现网络自动化办公则指日可待。

[1]胡新玲,张宏飞.供水管网地理信息系统中爆管分析的算法与实现[J].测绘科学,2008,33(4):225-226.

[2]刘建川,李永树,蔡国林.基于ArcGIS管网爆管分析的算法优化与实现[J].测绘科学,2008,33(1):215-217.

[3]林伟华,伍永刚,曾文,等.燃气管网爆管分析模型研究[J].测绘科学,2007, 32(6):162-163.

[4]张选平,雷咏梅.数据结构[M].北京:机械工业出版社,2003.

[5]李云海,张宏飞.供水管网地理信息系统中爆管分析的算法与实现[J].新疆有色金属,2007(S0):56-58.

[6]彭其美,冷英男.Visual Basic程序设计教程[M].北京:人民邮电出版社,2006.

[7]韩鹏.地理信息系统开发:MapObjects方法[M].武汉:武汉大学出版社,2004.

[8]薛伟.MapObjects:地理信息系统程序设计[M].北京:国防工业出版社,2004.

猜你喜欢
关阀邻接矩阵数组
轮图的平衡性
JAVA稀疏矩阵算法
智慧水务GIS管网快速关阀分析系统设计与实现
JAVA玩转数学之二维数组排序
基于供水工程中重力流的水锤联合防护措施研究
长距离重力输水管道关阀水锤防护措施总结
泵后两阶段关闭阀门关阀时间及关度的分析确定
Excel数组公式在林业多条件求和中的应用
基于邻接矩阵变型的K分网络社团算法
寻找勾股数组的历程