多源非单一洼地地表积水状态的计算方法
技术领域
本申请涉及地表积水计算技术领域,具体地说,涉及一种多源非单一洼地地表积水状态的计算方法。
背景技术
城市内涝问题频发,严重威胁着人们的生命财产安全。为了解决城市内涝问题,涌出了许多能够进行城市积水分析的计算机模型或工具。积水分析作为城市内涝分析过程中最重要一步,决定了内涝分析的准确与否。
城市积水分析方法要基于城市地面高程信息,结合降雨产生的径流或者管井的溢流来计算。为了满足性能上的要求,现有的分析方法都对分析过程进行了简化,要么只是对孤立的单一洼地积水深度进行分析,要么只考虑单一水来源进行分析。简化的分析方法精度低、误差大,并不符合实际积水的过程,造成了分析结果的利用价值不大。而不进行简化的分析复杂度高、实现难度大,性能上远远达不到实际应用的需要。
发明内容
有鉴于此,本申请所要解决的技术问题是提供了一种多源非单一洼地地表积水状态的计算方法,能够综合考虑多个洼地连续的情况、洼地满流后溢出到相邻洼地的情况、洼地漫流的先后顺序会造成积水状况不同的情况、多个洼地满流后会合并为一个洼地的情况、每个洼地有多个水源及不同洼地有不同水源的情况,能够保证计算的高效性,使计算后的积水更加符合现实世界的真实情况,能够满足绝大多数应用的需求。
为了解决上述技术问题,本申请有如下技术方案:
一种多源非单一洼地地表积水状态的计算方法,其特征在于,包括:
从目标区域的水源出发,沿坡度向下,查找出坡度最低的点作为第一积水点,根据所述第一积水点,查找出目标区域的其他积水点,每个积水点都指向其溢流后积水流向的下一个或多个积水点,所述积水点包括但不限于单一积水点和积水点合并后形成的积水点,从所述目标区域查找出的各积水点形成一关联积水点集合;
针对所述关联积水点集合中的每个积水点,计算每一个积水点对应的积水量,当积水量超出对应积水点的最大容量时,将多余的水量作为对应积水点溢流时积水流向的下一个或多个积水点的水源,继续运算,直至多余的水量减少为0;
根据每个积水点的积水量,计算各积水点的积水深度和积水范围,循环所述关联积水点集合中的所有积水点,对积水分析标志有效的积水点做快速积水分析。
优选地,其中:
进一步包括:对查找出的各积水点进行积水点信息记录,
所述积水点信息包括:积水点编号、出水口、积水点底、构成积水点的所有点的集合、最大积水量、当前积水量、溢流后积水流向的下一个或多个积水点的列表和积水分析标志。
优选地,其中:
从目标区域的水源出发,沿坡度向下,查找出坡度最低的点作为第一积水点,进一步为:
在目标区域中找出连续的同一水平面上所有的点,在当前位置进行等高覆盖,
找出等高覆盖后的边界点;
找出所述边界点上高度最低的一个或多个点;
若高度最低的一个或多个点的位置低于当前位置,则将所述高度最低的一个或多个点的位置作为新的当前位置重新查找,若所述高度最低的一个或多个点的位置高于当前位置,则将当前位置作为第一积水点的最底部,找出第一积水点。
优选地,其中:
查找出目标区域的其他积水点,进一步为:
查找出当前积水点的出水口;
判断查找出的出水口是否与已知积水点的出水口重合:若未重合,则根据出水口找出新的积水点;若重合,则将出水口重合的两个或多个积水点合并为新的积水点,并将合并后的新的积水点加入到关联积水点集合中;
判断根据出水口找出的新的积水点是否为已有积水点:若是,则将已有积水点合并为新的积水点,并将新的积水点加入到关联积水点集合中;若否,则判断该积水点为新积水点,并将新积水点加入到关联积水点集合中;
将关联积水点集合中的新积水点作为当前积水点,循环进行新积水点的查找,直至完成目标区域所有积水点的查找。
优选地,其中:
所述查找出当前积水点的出水口,进一步为:
查找出流向为当前区域的点,从积水点的底部开始作为当前区域,若查找到流向为当前区域的点的数量大于0,则将找到的点加入到当前区域,继续查找流向为当前区域的点;若查找到流向为当前区域的点的数量为0,则当前区域为查找到的汇流区域,找出汇流区域的边界点;
找出汇流区域的边界点上的最低点,作为当前积水点的出水口。
优选地,其中:
计算每一个积水点对应的积水量,进一步为:
从所述关联积水点集合中选取一个积水点,统计所有流入到该积水点的入流水源水量,作为该积水点的入流量;
当所有流入到该积水点的入流水源水量超出该积水点的最大容量时,将多余的水量作为该积水点流向的下一个积水点的水源:
若当前积水点和下一个积水点合并为同一个积水点时,将合并为同一个积水点的子积水点置积水分析标志位为无效,各子积水点的积水量之和作为合并后积水点的入流量,合并后积水点多余的水量作为下一个积水点的水源,直至多余的水量减少为0,
若当前积水点和下一个积水点不能合并为同一个积水点时,则单独计算各积水点的积水量,多余的水量作为下一个积水点的水源,直至多余的水量减少为0;
当所有流入到该积水点的入流水源水量未超出该积水点的最大容量时,从所述关联积水点集合中选取另一个积水点进行计算;
循环计算所述关联积水点集合中所有积水点的积水量。
优选地,其中:
进一步包括:将所述关联积水点集合中各积水点的积水量进行叠加,计算出所述目标区域整个地表的积水状态。
与现有技术相比,本申请所述的计算方法,达到了如下效果:
第一,本发明多源非单一洼地地表积水状态的计算方法,能够综合考虑多个洼地连续的情况、洼地满流后溢出到相邻洼地的情况、洼地漫流的先后顺序会造成积水状况不同的情况、多个洼地满流后会合并为一个洼地的情况、每个洼地有多个水源及不同洼地有不同水源的情况,能够保证计算的高效性,使计算后的积水更加符合现实世界的真实情况,能够满足绝大多数应用的需求。
第二,本发明多源非单一洼地地表积水状态的计算方法,忽略了积水的中间过程的计算,直接由积水量得到积水的最终结果,这种统一计算的方法使积水分析快速高效,能够满足绝大多数应用的需求。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明的所述一种多源非单一洼地地表积水状态的计算方法流程图;
图2为本发明的所述一种多源非单一洼地地表积水状态的计算方法中寻找积水点的方法的流程图;
图3为本发明的所述一种多源非单一洼地地表积水状态的计算方法的实施例中积水点示意图;
图4为本发明图3中积水点构成的数据结构图;
图5为本发明中积水量计算的流程图。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
实施例1
参见图1为本发明多源非单一洼地地表积水状态的计算方法的流程图,包括:
步骤101、从目标区域的水源出发,沿坡度向下,查找出坡度最低的点作为第一积水点,根据所述第一积水点,查找出目标区域的其他积水点,每个积水点都指向其溢流后积水流向的下一个或多个积水点,所述积水点包括但不限于单一积水点和积水点合并后形成的积水点,从所述目标区域查找出的各积水点形成一关联积水点集合;
步骤102、针对所述关联积水点集合中的每个积水点,计算每一个积水点对应的积水量,当积水量超出对应积水点的最大容量时,将多余的水量作为对应积水点溢流时积水流向的下一个或多个积水点的水源,继续运算,直至多余的水量减少为0;
步骤103、根据每个积水点的积水量,计算各积水点的积水深度和积水范围,循环所述关联积水点集合中的所有积水点,对积水分析标志有效的积水点做快速积水分析。
本发明的上述方法中,首先找出所有的积水点信息,此处的积水点信息不仅包含最基本的积水点,还包含积水点合并后的积水点(例如多个相邻的积水点都满流后会合并为一个大的积水点),这些积水点信息以一个特殊的链表结构存放,每一个积水点都指向了当它满流后水流向的下一个或多个积水点。在得到所有积水点后,针对每个积水点,统计所有流入它的水源的水量信息作为该积水点的积水量,当超出积水点最大容量时,将多余的水量作为积水点的下一个或多个积水点的水源,继续往下运算,直到水量减少为0为止,从而计算出每个积水点的积水量信息。最后,根据计算出的每个积水点的积水量信息,循环每个积水点,对其做快速积水分析。对于由两个或者两个以上子积水点合并而成的积水点的情况,仅对合并后的积水点做快速积水分析,而不对子积水点做快速积水分析。
通过本发明提供的上述方法计算地表积水状态的方法,综合考虑了地表的各种复杂情况,使计算后的积水更加符合现实世界的真实情况,能够满足绝大多数应用的需求,而且计算过程中忽略了积水的中间过程的计算,直接由积水量得到积水的最终结果,这种统一计算的方法使积水分析快速高效,能够满足绝大多数应用的需求。
实施例2
在实施例1的基础上,本发明多源非单一洼地地表积水状态的计算方法进一步包括:
对查找出的各积水点进行积水点信息记录,
所述积水点信息包括:积水点编号、出水口、积水点底、构成积水点的所有点的集合、最大积水量、当前积水量、溢流后积水流向的下一个或多个积水点的列表和积水分析标志。
其中,积水点编号包括:单个积水点的编号和合并后积水点的编号;出水口为积水点积满水时溢流的出口,该出水口关联了其他的积水点;积水点底即积水点底部信息,当底是一个平面时,可记录某一特定点;积水点分析标志,是为了标识某个积水点是否需要做积水点分析,当两个或多个子积水点合并为一个积水点时,仅需对合并后的积水点做积水点分析,不再对子积水点做积水点分析。
上述步骤101中,查找积水点的流程可参见图2,以下对查找第一个积水点的步骤和查找剩余其他积水点的步骤进行详细说明:
上述步骤101中,从目标区域的水源出发,沿坡度向下,查找出坡度最低的点作为第一积水点,进一步为:
在目标区域中找出连续的同一水平面上所有的点,在当前位置进行等高覆盖,
找出等高覆盖后的边界点;
找出所述边界点上高度最低的一个或多个点;
若高度最低的一个或多个点的位置低于当前位置,则将所述高度最低的一个或多个点的位置作为新的当前位置重新查找,若所述高度最低的一个或多个点的位置高于当前位置,则将当前位置作为第一积水点的最底部,找出第一积水点。
上述步骤101中,查找出目标区域的其他积水点,进一步为:
查找出当前积水点的出水口;
判断查找出的出水口是否与已知积水点的出水口重合:若未重合,则根据出水口找出新的积水点;若重合,则将出水口重合的两个或多个积水点合并为新的积水点,并将合并后的新的积水点加入到关联积水点集合中;
判断根据出水口找出的新的积水点是否为已有积水点:若是,则将已有积水点合并为新的积水点,并将新的积水点加入到关联积水点集合中;若否,则判断该积水点为新积水点,并将新积水点加入到关联积水点集合中;
将关联积水点集合中的新积水点作为当前积水点,循环进行新积水点的查找,直至完成目标区域所有积水点的查找。
上述查找出目标区域的其他积水点的过程中,查找出当前积水点的出水口,进一步为:
查找出流向为当前区域的点,从积水点的底部开始作为当前区域,若查找到流向为当前区域的点的数量大于0,则将找到的点加入到当前区域,继续查找流向为当前区域的点;若查找到流向为当前区域的点的数量为0,则当前区域为查找到的汇流区域,找出汇流区域的边界点;
找出汇流区域的边界点上的最低点,作为当前积水点的出水口。
对于合并积水点而言,将各个子积水点中底最低(即高程值最小)的积水点的底,作为合并后积水点的底。
上述步骤102中,计算计算每一个积水点对应的积水量,进一步为(参见图3):
从所述关联积水点集合中选取一个积水点,统计所有流入到该积水点的入流水源水量,作为该积水点的入流量;
当所有流入到该积水点的入流水源水量超出该积水点的最大容量时,将多余的水量作为该积水点流向的下一个积水点的水源:
若当前积水点和下一个积水点合并为同一个积水点时,将合并为同一个积水点的子积水点置积水分析标志位为无效,各子积水点的积水量之和作为合并后积水点的入流量,合并后积水点多余的水量作为下一个积水点的水源,直至多余的水量减少为0,
若当前积水点和下一个积水点不能合并为同一个积水点时,则单独计算各积水点的积水量,多余的水量作为下一个积水点的水源,直至多余的水量减少为0;
当所有流入到该积水点的入流水源水量未超出该积水点的最大容量时,从所述关联积水点集合中选取另一个积水点进行计算;
循环计算所述关联积水点集合中所有积水点的积水量。
至此,完成了每一个积水点要积水的水量的计算,之后即可对每一个积水点进行积水深度和范围的计算。
实施例3
以下提供本发明多源非单一洼地地表积水状态的计算方法的应用实施例。
本发明基于DEM栅格数据计算多源非单一洼地地表积水状态,具体包括三个步骤:
第一步,找积水点。找出所有的积水点信息,不仅包含最基本的积水点,还包含积水点合并后的积水点(多个相邻的积水点都满流后会合并为一个大的积水点),这些积水点信息以一个特殊的链表结构存放,每一个积水点都指向了当它满流后水流向的下一个积水点。
第二步,计算水量。在得到所有积水点之后,针对每个积水点,统计所有流入它的水源的水量信息作为该积水点的积水量,当超出积水点最大容量时,将多余的水量作为积水点的下一个积水点的水源,继续往下运算,直到水量减少为0为止。
第三步,积水分析。使用第二步中得到的每个积水点的积水量信息,循环每个积水点(合并后的积水点会影响被合并的积水点),对其做快速积水分析。
上述第一步中寻找积水点的过程,是构造积水点关系结构的过程,同时考虑积水点合并情况,并将合并后的积水点也作为积水点进行记录,对于单个积水点,应记录一下内容:
积水点编号:或者合并后积水点的编号列表(也作为编号使用)。
出水口:积满水时溢流的出口,出水口关联了其他的积水点。
底:积水点底部信息,底是一个平面时可只记录某一特定点。
组成点列表:构成积水点的所有点的集合。
最大积水量:积水点积满水时水的总量。
当前积水量:当前积水点的积水量。
下一个积水点:积满水时水流向的下一个(或多个)积水点(列表)。
积水分析标志:标识是否需要做积水分析。
寻找积水点的流程可参见图2,以下结合图3积水点的示意图对图2的流程图进行详细说明。
图3中,S1-S4为积水点,假设S1为初始积水点,通过图2的流程可知:
初始状态,只有积水点S1。
积水点S1满流后会溢出到积水点S2,即S1→S2,得到积水点S2。
积水点S2满流后会溢出到积水点S3,即S2→S3,得到积水点S3。
积水点S3满流后会溢出到积水点S2,即S3→S2,S2已经存在,合并得到积水点S32。
积水点S32满流后溢出到积水点S4,即S32→S4,得到积水点S4。
积水点S4满流后溢出到积水点S3,即S4→S3,S3已经存在,合并得到S432。
积水点S432满流后溢出到积水点S1,即S432→S1,S1已经存在,合并得到S4321。
积水点S4321满流后超出边界,积水点寻找结束。
通过上述过程可以得出,不论将哪个积水点选为第一积水点,得到的结果都是一样的(不考虑顺序),因此可得到如图4所示的数据结构图,左侧框里即为积水点列表。图4所示的数据结构记录了某个积水点在积满水之后会流向的下一个积水点,作为积水索引的存在,每个积水点还记录了它自己的积水能力,能够加快每个积水点积水量的计算,从而能够加快整个积水分析的计算。
作为寻找积水点的初始条件,第一个积水点的寻找方法为:从水源(出水口也是一个水源)出发,沿坡度向下,直到找到最低点(即积水点的底)为止,具体步骤如下:
1、在当前位置等高覆盖(找出连续的同一水平面上的所有的点);
2、找出覆盖后的边界点;
3、找出边界上高度最低的一个或多个点;
4、如果高度最低的一个或多个点的位置低于当前位置,则将最低点作为当前位置,执行第1步;如果最低点的高度高于当前位置,则当前位置为积水点的最底部,结束寻找。
查找积水点的出水口的方法如下:
01、从积水点底部开始作为当前区域,找出流向为当前区域的点;
02、如果找到了0个点,就跳到步骤04;如果找到大于0个点,则跳到步骤03;
03、将找到的点加入到当前区域,跳到步骤01;
04、当前区域为找到的汇流区域,找出汇流区域的边界点;
05、找出边界点上的最低点即是积水点的出水口。
关于合并积水点,将子积水点中底最低(高程值最小)的一个积水点的底作为合并后积水点的低。
计算积水量的过程是基于图4的数据结构进行的,对于每一个积水点,合计它的所有入流水源的水量进行统一计算,这样既考虑了多个水源的情况,又使得不依赖于水源,计算更加快速高效。
每一个积水点的水量计算之后,同时也计算了受其满流溢流影响的其他积水点。所有积水点计算后的叠加,就是最终整个地表的积水状态。积水量计算的流程图参见图5,具体为:
计算每一个积水点对应的积水量,进一步为:
从所述关联积水点集合中选取一个积水点,统计所有流入到该积水点的入流水源水量,作为该积水点的入流量;
当所有流入到该积水点的入流水源水量超出该积水点的最大容量时,将多余的水量作为该积水点流向的下一个积水点的水源:
若当前积水点和下一个积水点合并为同一个积水点时,将合并为同一个积水点的子积水点置积水分析标志位为无效,各子积水点的积水量之和作为合并后积水点的入流量,合并后积水点多余的水量作为下一个积水点的水源,直至多余的水量减少为0,
若当前积水点和下一个积水点不能合并为同一个积水点时,则单独计算各积水点的积水量,多余的水量作为下一个积水点的水源,直至多余的水量减少为0;
当所有流入到该积水点的入流水源水量未超出该积水点的最大容量时,从所述关联积水点集合中选取另一个积水点进行计算;
循环计算所述关联积水点集合中所有积水点的积水量。
至此,计算出了每个积水点要积水的水量,接下来对每个积水点进行积水深度和范围计算。
最后进行积水分析,循环积水点列表中所有的积水点,对积水分析标志有效的积水点做快速积水分析。
快速积水分析后可以得到积水点的积水深度和范围的栅格数据。对于单个积水点进行快速积水分析的方法很多,现用二分法举例如下。
设积水点积水深度为h(积水点底部所在栅格单元的积水深度),则积水点的积水体积v=所有栅格单元(栅格单元的面积*(积水点底部高程+h-栅格单元高程))。
作为初始条件,已知积水点的最大积水(积满水)深度为H,实际积水量为Vs。
1)令h1=H,h2=0。
2)h=(h1+h2)/2,求v。
3)若v>Vs,说明h过大,令h1=h,执行2)。
4)若v<Vs,说明h过小,令h2=h,执行2)。
5)若v=Vs,则说明h为积水深度。执行6)。
6)每个栅格单元的积水深度为:hi=积水点底部高程+h-栅格单元高程,若hi<=0,则hi=0;
上述步骤得到的hi即为每个栅格的积水深度,而有积水的栅格则标定出了积水的范围。
通过以上各实施例可知,本申请存在的有益效果是:
第一,本发明多源非单一洼地地表积水状态的计算方法,能够综合考虑多个洼地连续的情况、洼地满流后溢出到相邻洼地的情况、洼地漫流的先后顺序会造成积水状况不同的情况、多个洼地满流后会合并为一个洼地的情况、每个洼地有多个水源及不同洼地有不同水源的情况,能够保证计算的高效性,使计算后的积水更加符合现实世界的真实情况,能够满足绝大多数应用的需求。
第二,本发明多源非单一洼地地表积水状态的计算方法,忽略了积水的中间过程的计算,直接由积水量得到积水的最终结果,这种统一计算的方法使积水分析快速高效,能够满足绝大多数应用的需求。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。