Hello,大家好,我是陈泽伟,一名帅气的水力模型工程师。今天按照江湖惯例,闲言少叙,技术硬核分享。
大家在模型运行模拟成功之后,有没有想到统计每个排水片区的管道的服务范围(面积),以及一些系统的出口/泵站的服务区域,服务的排水量以及其他你想要关心的模拟结果?
如果有的话,那么第一个遇到的问题就是:如何使用排水模型来又快又好的统计指定管道的服务范围。
好的,陈工帅气硬核分享开始——
第一类简单的排水系统(一个集水区排入一个节点)
第二类:复杂排水系统(一个集水区排入多根排水管道)
第一类:简单的排水系统(一个集水区排入一个节点)
我们先讲的第一种系统是较为简单也最为常见的系统:即一个子集水区仅仅排入一个节点。这种方式经常用于各种尺度的防涝模型项目。对于形式,由于对应关系简单明了,对于后期的结果分析来说比较方便。因此,我个人是比较建议大家以后在项目中采用这种一一对应的模式。
首先通过下游跟踪选中一段我们的希望进行分析统计的管道(下图标红)。
接下来,我们依次点击选择→修正选择,然后点击确定,软件就会自动选中所有与选中管道相关联的子集水区,如下图所示。
好了,模型已经办你自动选中了排水管道对应的服务片区了,接下来,我们通过几个非常简单的SQL就可以非常方便的统计这些集水区的出流,面积,降雨以及控制率等信息了。就问你棒不棒~
第二类:复杂排水系统(一个集水区排入多根排水管道)
第二种情况就稍微复杂一点了,就是当一个某些情况下,特别是海绵城市模拟时,某些子集水区较大,很难把这个集水区只排入一根管道,于是就会使用一种“多根管道分配法”,即将一个集水区内的产流按照一定的规则排入就近的多根管道中(如下图所示)。这种情况在建模初期可以方便建模,但是后期统计的时候就会出现一些问题,因为每个集水区有对应多个管道,所以就很难明确这些管道对应的服务面积。但是总归是有方法的。
首先,我们先定规则,既然在目前这个情况,一个子集水区同时排水到多个检查井(管道),在统计管道的服务范围时候,我们就简单粗暴认为负责这个集水区的管道就是那个所占排水权重最大的管道。就好像下图,子集水区19的水量82%是流入XXXXX000017检查井对应的管道,我就认为这根管道就负责子集水区19了。好了,既然判断规则定下来了,我们接下来就来思考怎么实现吧。
首先,需要实现的第一步就是把模型网络每个集水区对应的水量分配的检查井信息批量查找出来,使用下图的SQL就可以了。
运行该SQL后,得到的结果如下图所示,显示出来对应的排入检查井的ID号,排入该检查井的权重以及对应的子集水区的ID号,好的,大家把这个表格复制粘贴到Excel表格里面进行下一步数据筛选。
接下来我们要实现的目的就是把每个集水区中排水权重最大的检查井给找出来。我们接下来一切的操作都是为了实现这个目的。当然,使用Matlab或者Python会简单很多,但是考虑到绝大多数朋友都更加喜欢使用Excel,所有下面的操作都是在Excel里面实现的。
Step 1:选中三列,然后点击排序,把oid当成主要排序条件,weight当成次要排序条件,具体操作截图详见下图。
STEP 2:新建一个辅助列1,写一个判断条件(如下图),找出所有子集水区有重复的行。
STEP 3:新建一个辅助列2,把辅助列1的数值(纯文本格式),辅助粘贴到辅助列2中,然后对于辅助列2筛选,选择所有的空白的行。
STEP 4:新建一个excel表格,把我们辛辛苦苦得到的子集水区ID与对应的排入权重最大的检查井ID的表格粘贴进来,就得到了美美的下图,然后记得把它保存成为csv文件,方便后期导入模型。
到原来的模型网络,新建一个方案,把集水区的drain to都改变为Node,然后通过数据导入中心导入子集水区ID,Node ID。
接下来,就看到现在子集水区都单独排入了权重最大的检查井了,然后就可以使用方法一里面的各种功能来进行统计了。
比如下图,选中下面标红的管道,使用修正选择就可以选中排入这些管道的集水区了。
好了,今天的分享就到此结束了,如果对于这次分享有不明白的,或者有其他问题想要和陈工沟通咨询的,欢迎和我联系,陈工的QQ是879008342,也可以关注我们的微信公众号“水务ICT”。最后感谢李臻为本文章中数据分析提供的技术支持。
全球智库,为你服务。亲爱的各位,我们下期再会。