基于地理实体的排水管网上下游分析算法研究
2022-09-02宋磊张现军
宋磊,张现军
(济南市勘察测绘研究院,山东 济南 25010)
1 引 言
城市排水管线不断完善与快速增长,管线的管理带来了挑战。传统的排水管线管理系统,侧重于数据的展示与属性查询,借助GIS平台特定的数据结构进行空间分析[1~3]。王萌等人提出建立城市排水GIS系统精细拓扑模型,通过对数据结构的重新组织提高管网分析的运算效率[4]。农宇等人在ArcGIS和超图平台的基础上,通过数据处理生成平台的几何网络数据,在此基础上进行排水管线的上下游分析[5,6]。传统连通算法的优化,需要对数据进行分块或增加索引结构,以提高数据分析的效率。随着管线数据更新频率增加,原始数据变化后,用于连通性分析的中间数据也需要同步更新,无疑增加了系统维护的工作量,也无法保证分析结果的现势性。本文基于地理实体构建排水管网数据结构,在管线实体中增加逻辑关系及流向属性,通过递归遍历实体间的邻接与流向,实现排水管线的上下游分析功能。
2 系统架构与管线实体数据
2.1 系统架构
排水管网上下游分析算法的选择需要适合系统的总体架构。本文探讨了在B/S架构下,用户在页面端更新数据库中排水管网实体数据。排水管线分析服务通过遍历实体数据中的关联关系,实时的进行排水管网的上下游分析。如图所示,系统分为用户界面层、应用层、系统服务层与数据层。数据层保存排水管网实体数据和基础地理数据,是算法的基础。系统服务层是用户编辑数据、应用分析的媒介,让用户在界面层操作信息传递至后台,并返回结果。应用层是算法的实现,前端传递的参数结合实体数据之间的关联关系,做出复杂的应用分析。用户界面层是向用户提供服务的入口,用户可以在界面层进行地图浏览、查看分析结果和专题图等。
图1 系统架构图
2.2 排水管线地理实体
地理实体是现实世界中占据一定空间位置,单独具有同一属性或完整功能,可以唯一标识的自然地物或人工设施。其特点是具有唯一编码并能够自由的组合或聚合,应用于不同方向[7,8]。
排水管网上下游分析算法依赖标准的排水地理实体数据。标准的数据格式是算法分析的基础,也是结果分析正确与否的保障。以往数据建库,面向地理要素,注重空间位置与属性的表达,可以很好满足数据的展示与统计的需求。但随着排水管网数据更新速度加快,用户对数据分析的实时性与效率有了更高要求。传统的系统维护由数据生产、数据治理、制作几何网络数据、服务更新等流程组成,存在数据制作周期长、对系统维护人员要求高、大数据量下效率低等缺点。
排水管线地理实体分为排水管点,排水管段,排水独立井和排水沟道四个类别,每个类别都有自己的分类代码和图元编码。地理实体的唯一编码由分类码、位置码、时间码和顺序码组成,通过地理实体的编码可以获取不同类别间地理实体的关联关系,聚合为综合管线实体,也可以是小区地理实体组成部分。利用排水管网实体中排水管点、排水管线的关联关系以及图元信息,不仅能够满足上下游分析的需要,而且对以后数据的挖掘留出了拓展空间。上下游分析算法主要操作对象是管线实体,如图2所示,管线实体的结构由实体编码、管线编号、管线类型、流向、起点信息以及终点信息组成。管线间的关联关系如图3所示,数字代表管线,大写字母代表管点。管线2与管线3的终点A是管线1的起点,同时也是管线1的起点,管线1的终点B是管线4与管线5的起点。管线关联关系中,最常见的是管线2,1,4组成的流向关系,图3展示的是复杂的管线连接情况,也是算法需要着重考虑的情况。每段管线都有唯一的实体编码,管线间通过起点点号与终点点号进行关联。通过管线的数据结构并结合流向信息可以进行管网的上下游分析。
图2 排水管线地理实体图
图3 排水管线地理实体关系示意图
3 上下游分析算法
我们以上游溯源分析算法为例(如图4所示),首先定义结果管线集合,用于保存查询出来的管线编号,初始的结果管线集合为空。首先获取用户在地图上选择管点的点号,假设为图3中的管点A,在数据库中查找以该点为终点的管线,放入过程管线集合中,即由管点A查询出管线2与管线3的过程。判断过程管线集合长度是否为零,如果为零则说明没有管线流向该管点,是管网的起始点,分析结束。如果过程管线集合长度不为零,则需要遍历过程集合中的管线,遍历管线是需要经过两个判断。首先判断结果管线集合中是否包含过程集合中的管线,如果不在就新增到结果管线集合中,如果在就继续判断过程管线集合中下一条管线。遍历过程管线集合结束后,过程管线集合置空。然后判断管线实体中流向属性,流向为正的选取起点点号作为结果,如果流向为反向,则选取终点点号作为结果,此过程就是通过判断管线1,管线2的属性信息查询出管点C与管点D的过程。本算法选择在判断完所有的点号后,再进行遍历新增点号,也就是广度优先策略。为防止重复或者无限循环查找管线,在这个步骤中设置了管点集合,作为判断管点是否已经参与计算的标志。第三步判断新筛选出的管点是否在管点集合中,如果不在就加入管点集合中,然后再检索终点为该点的管线集合,即查询流向管点C或者管点D的过程管线集合。如此递归循环,不断将新查询的管线增加至结果管线集合中,直到新查询管线个数为零,退出循环,输出结果数据集。下游分析算法跟上游溯源分析算法类似,不同之处在于是寻找起点还是终点,内部逻辑是一致的。
图4 系统结果图
图4 上游算法流程图
该算法无须借助GIS开发平台和专门的几何网络模型,直接在标准的管线实体数据库中检索,按照上下游分析的逻辑将管线查询出来,并返回至前端。前端通过解析结果数据,把管线绘制在地图视图中。实现了管线编辑后能够同步反应至分析结果中,并能利用该算法检测管线数据中的错误,查找倒流错误的管线。
4 实例应用
该算法已经运用在济南市排水管线综合运营平台中,在超过 1 280 000条排水管线数据中进行溯源分析,能够流畅的输出结果并绘制在地图中。如图所示,在小清河附近选择一管点,设置搜索深度300,执行汇水分析,即本文描述的上游分析算法。经过不超过300次的递归分析后,查询出流向此管点的309条管线。右侧的表格显示管线的属性信息,地图中绘制管线的位置与流向情况。闪烁的红圈代表选择的要分析的管点,高亮绿色代表分析出的管线,红色箭头代表流向,分析出的管点为了不掩盖管线类型信息,采用了和管点图层一致的管点符号颜色。根据此功能,能够方便的掌握该管点的管线流向信息,并可以直观地检查是否存在数据错误。
5 结 语
本文提出的排水管网上下游分析算法简单实用,在大数据量情况下依然能够流畅分析出溯源结果,实践证明是可行而且有效的。该算法不需要借助GIS平台与特殊的数据结构,当用户在前端更新管线或者管点数据,就可以反映在分析结果中,降低了排水管线运营平台的维护成本。算法在局部的上下游分析中有着强大的优势,对于全部管线流向展示可以采用Python工具,定期更新数据并成图展示。目前算法还不支持多管点的溯源分析,是本算法的优化方向。