基于分布式计算的城市暴雨内涝模拟数据处理方法与流程

文档序号:33006101发布日期:2023-01-18 04:12阅读:202来源:国知局
基于分布式计算的城市暴雨内涝模拟数据处理方法与流程

1.本发明涉及城市水文领域,尤其是涉及基于分布式计算的城市暴雨内涝模拟数据处理方法。


背景技术:

2.城市洪涝模拟的理论基础是城市水文循环规律,以及水动力学物理机制。相比于自然流域,城市内密集的人类活动对水文过程和水动力过程带来更大的复杂性和不确定性。
3.传统的城市洪涝模型如swmm模型、storm模型、wallingford模型等,主要用于城市排水管网的一维水动力模拟,其主要的不足在于无法模拟的地表二维积水过程。部分模型耦合了二维水动力模块,发展出pc-swmm(swmm升级版)、infoworks(wallingford升级版)、mike-urban等新一代一维/二维耦合城市洪涝模型,以一维模块的输出结果作为二维模块的输入条件,可以实现城市洪涝全过程模拟。但是,该类模型需采用不规则网格构建城市地形,建模较为复杂且模拟结果尚不够理想。
4.城市洪涝灾害的应急管理已经成为国内外热点研究领域,随着地理数据的精度越来越高、类型越来越丰富,城市暴雨内涝的数值模拟的输入数据规模快速增大,计算的时效性不能满足实际生产要求。尽管单机的计算性能有所提升,但仍不能满足快速增长的数据规模,必须有支持分布式计算的方法显著提升计算性能,才能使得城市暴雨内涝的数值模拟应用到城市减灾防灾的现实应用中。


技术实现要素:

5.有鉴于此,本发明的目的在于提供基于分布式计算的城市暴雨内涝模拟数据处理方法,以克服海量地理数据在应用于城市暴雨内涝模拟仿真计算中的高耗时问题,利用计算机集群提供的丰富计算资源,实现地理数据的并行预处理和计算结果汇集,解决内涝仿真中最为耗时的计算环节。
6.为实现上述目的,本发明采用以下内容:
7.本发明提供的基于分布式计算的城市暴雨内涝模拟数据处理方法,包括如下步骤:
8.s1:将数字地表模型上传至控制节点服务器,控制节点服务器根据计算节点服务器的数量,将数字地表模型切分成与计算节点服务器数量相同的数据分块,并将n个数据分块分发给n个计算节点服务器执行处理;
9.s2:计算节点服务器根据暴雨内涝模型工具完成模拟演算,并反馈结果给节点服务器;
10.s3:控制节点服务器根据每个计算节点服务器的处理结果,汇总完成暴雨内涝模拟结果的融合拼接。
11.在实施中,所述步骤s1中,数字地表模型包括城市高精度地形数据、城市排水分区
数据、城市高密度降水预测数据,对数字地表模型的切分是通过qgis技术实现栅格文件的分块,切分的具体步骤是:
12.s11、河流等线要素转面:利用arcgis的toolbox工具,实现要素相交面的提取,并导出shp格式数据;
13.s12、切面分组:对需要进行切分的水域交叉面进行分组归类;
14.s13、地形数据掩膜裁剪:基于python调用qgis掩膜裁剪方法,输入数字地表模型以及水域面,并导出asc格式的栅格文件。
15.在实施中,所述步骤s1中:控制节点服务器接收到模拟命令后,针对输入的数字地表模型数据进行处理,包括文件格式转化、坐标配准、加载至内存、转化为栅格形式。
16.在实施中,所述步骤s2中:控制节点服务器接收到模拟命令后,会将需要处理的数据地址及保持地址发送给各个计算节点服务器上的暴雨内涝模型工具,暴雨内涝模型工具收到命令之后,进行相应的数据模拟演算,演算结束后发送消息至控制节点服务器,由控制节点服务器上的模型演算结果处理程序进行相应的演算结果处理。
17.在实施中,所述步骤s3中,暴雨内涝模拟结果的融合拼接的具体步骤是:
18.s31、暴雨内涝模拟结果的数据拼接:
19.控制节点服务器接收到各个暴雨内涝模型工具的演算结果后,基于python脚本调用qgis算法库,输入演算结果asc格式的数据文件及各个分区的经纬度范围,模型算法库自动根据输入的插入,对各个演算结果进行数据拼接,最后调用数据转换库将拼接结果导出为asc格式的栅格文件;
20.s32、暴雨内涝模拟结果的数据着色:
21.处理软件收到拼接结果之后,利用image对象着色器,结合图例数据要求,实现asc格式文件的解析,着色以及导出为tiff格式的文件;
22.s33、暴雨内涝模拟结果的切片:
23.利用qgis输入tiff格式图片文件,输入lod层级,输出瓦片文件;
24.s34、发布暴雨内涝模拟结果:
25.将放在不同文件夹下的瓦片文件通过iis为各模型文件夹创建虚拟目录,发布模拟结果。
26.在实施中,所述步骤s34中:利用网络路径“http://ip:端口号/虚拟目录名/level/x/y.png”,便可读取到模拟演算结果的瓦片文件。
27.区别于传统单一模型处理,本发明通过分布式的调度优化模型处理软件的调度,提升了模型处理的效率;区别于传统的tiff文件,本发明采用asc栅格数据图层,提高模拟软件的演算速度;区别于传统tiff格式加载,本发明通过金字塔瓦片切图的方式进行web端的加载,解决了web端大文件图片的秒级加载。
附图说明
28.下面结合附图对本发明的具体实施方式作进一步详细的说明。
29.图1为本发明的硬件环境示意图;
30.图2为本发明对高精度的数字地表模型的处理步骤图;
31.图3示出本发明分布式调度的示意图;
32.图4为本发明瓦片发布与加载的示意图。
具体实施方式
33.为了更清楚地说明本发明,下面结合优选实施例对本发明做进一步的说明。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
34.通常情况下,城市暴雨内涝模拟仿真计算的整个过程可以从逻辑上划分为三个阶段。第一阶段,针对输入数据(本发明称为数字地表模型,可简称地理数据)进行处理,包括文件格式转化、坐标配准、加载至内存、转化为栅格形式;第二阶段,针对栅格上的数值进行数学公式计算,数学公式包括了水文水动力相关公式,并将计算结果输出到临时文件;第三阶段,对输出结果临时文件进行汇集、可视化或其他应用。其中,不同研究学者在城市暴雨内涝模拟仿真过程中所应用到的数学公式会有细微差别,具体是体现在数学公式中的参数取值、某些物理量的取舍,而数学公式的差异不属于本技术涉及及讨论范围。本技术重点解决的是,第一阶段和第三阶段中对数据的相关处理方法。
35.由于本技术涉及有数据处理方法,基于计算机集群环境,这对机器性能要求相对较高,因此为保证系统的运行效果,本技术对控制节点服务器和计算节点服务器配备的硬件要求建议如下:
[0036]ⅰ、控制节点服务器1台,配置要求:
[0037]
操作系统:windows servr 2018或更高
[0038]
处理器(cpu):8核心,主频不低于2.0ghz
[0039]
内存(ram):不低于32gb
[0040]
控制节点服务器自带硬盘:200gb。
[0041]ⅱ、计算节点服务器n台,每台节点的配置要求:
[0042]
操作系统:ubuntu16.04 64bit
[0043]
处理器(cpu):16核心,主频不低于2.0ghz
[0044]
内存(ram):不低于64gb
[0045]
计算节点服务器自带硬盘:200gb
[0046]ⅲ、控制节点和计算节点共享存储不低于3tb。
[0047]ⅳ、所有节点所处的局域网网络速度不低于1000mbps。
[0048]
本技术的技术方案为:
[0049]
s1:将数字地表模型上传至控制节点服务器,控制节点服务器根据计算节点服务器的数量,将数字地表模型切分成与计算节点服务器数量相同的数据分块,并将n个数据分块分发给n个计算节点服务器执行处理;
[0050]
s2:计算节点服务器根据暴雨内涝模型工具完成模拟演算,并反馈结果给节点服务器;
[0051]
s3:控制节点服务器根据每个计算节点服务器的处理结果,汇总完成暴雨内涝模拟结果的融合拼接。
[0052]
简单来说,首先通过河流、水系、排水管网等gis矢量数据(shp),将高精度的数字地表模型dsm(asc)进行切分,结合实时降雨数据生成分布式降雨栅格图层(asc),然后利用
暴雨内涝模型工具进行分布式暴雨内涝模拟,最后利用分布式融合工具将暴雨内涝模拟结果进行融合展示。
[0053]
第一方面、对高精度的数字地表模型dsm(asc)切分是通过qgis技术实现栅格文件的分块,通过编程调用qgis库可实现机器自主栅格数据处理。
[0054]
切分的具体步骤是:
[0055]
s11、河流等线要素转面:利用arcgis的toolbox工具,实现要素相交面的提取,并导出shp格式数据;
[0056]
s12、切面分组:对需要进行切分的水域交叉面进行分组归类;
[0057]
s13、地形数据掩膜裁剪:基于python调用qgis掩膜裁剪方法,输入数字地表模型以及水域面,并导出asc格式的栅格文件。
[0058]
第二方面、分布式调度是采用mqtt进行模型验算工具调度,mqtt是iso标准(iso/iec prf 20922)下基于发布/订阅范式的消息协议。它工作在tcp/ip协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。通过控制中心(控制节点服务器)将进行实时动态的模型工具调度,当控制中心(控制节点服务器)收到模型模拟验算处理命令之后,控制中心(控制节点服务器)会将模型需要处理的数据地址以及保存地址发送给各个模型工具,模型工具收到命令之后,进行相关的数据模拟演算,模型演算结束之后会发送消息给控制中心(控制节点服务器),控制中心(控制节点服务器)收到消息之后,会发送消息给模型演算结果处理程序进行相关的演算结果处理。
[0059]
第三方面、暴雨内涝模拟结果的融合拼接切片是在处理各个分布式暴雨内涝模拟结果,采用qgis将各个区块的asc格式的模型文件,按照经纬度范围进行合并导出asc,然后利用编程工具结合自定义的图例,实现模拟结果的着色,着色结果导出为tif格式,接着利用图片金字塔切片算法,处理出来可供web端加载的瓦片数据,最后利用iis进行相关数据的服务发布。
[0060]
暴雨内涝模拟结果的融合拼接的具体步骤是:
[0061]
s31、暴雨内涝模拟结果的数据拼接:
[0062]
控制节点服务器接收到各个暴雨内涝模型工具的演算结果后,基于python脚本调用qgis算法库,输入演算结果asc格式的数据文件及各个分区的经纬度范围,模型算法库自动根据输入的插入,对各个演算结果进行数据拼接,最后调用数据转换库将拼接结果导出为asc格式的栅格文件;
[0063]
s32、暴雨内涝模拟结果的数据着色:
[0064]
处理软件收到拼接结果之后,利用image对象着色器,结合图例数据要求,实现asc格式文件的解析,着色以及导出为tiff格式的文件;
[0065]
s33、暴雨内涝模拟结果的切片:
[0066]
利用qgis输入tiff格式图片文件,输入lod层级,输出瓦片文件;
[0067]
s34、发布暴雨内涝模拟结果:
[0068]
将放在不同文件夹下的瓦片文件通过iis为各模型文件夹创建虚拟目录,发布模拟结果,利用网络路径“http://ip:端口号/虚拟目录名/level/x/y.png”,便可读取到模拟演算结果的瓦片文件。
[0069]
下面结合具体实例对本技术的方案作详细描述。
[0070]
实施例
[0071]
参阅图1所示,涉及到的硬件环境主要包括:由9台服务器以及若干客户端组成b/s系统构架,其中,一台服务器作为分布式调度中心节点,即控制节点服务器,另八台服务作为暴雨内涝模拟的计算节点服务器,客户端用于显示城市内涝模拟的结果。
[0072]
首先,将城市高精度地形的tiff格式转换成.asc格式模型,按照城市的水系、排水管网,生成排水分区shp文件。
[0073]
接着,利用qgis算法库,将地形文件按照排水分区切成若干个地形asc文件,读取每小时各个气象站的降雨数据,基于降雨数值以及站点经纬度。
[0074]
接着,利用qgis空间差值算法,生成城市分布式降雨数据栅格图层asc格式的文件。
[0075]
之后,将地形分区数据以及分布式降雨数据提交给分布式调度中心,也就是控制节点服务器,分布式调度中心收到数据之后,发送给各个计算节点服务器上的的暴雨内涝模拟工具,各个暴雨内涝模拟工具收到分布式调度中心消息之后,进行暴雨内涝模拟,模拟完成发给分布式调度中心。
[0076]
然后,分布式调度中心上的内涝处理工具接收到命令后,利用qgis输入内涝结果asc文件以及分区shp文件,将内涝模拟结果拼接成一张完整的模拟结果tiff图,利用qgis的金字塔瓦片切图工具,实现暴雨内涝模拟的切片。
[0077]
再接着,利用iis创建虚拟目录发布瓦片地图,以上的所有三维模型以及shp图层都存放在服务器端。
[0078]
最后,在客户端中加载iis发布的内涝模拟数据,实现web端的城市内涝模拟结果的快速显示浏览。
[0079]
结合图2所示,关于城市高精度地形依据河流管网的切片步骤如下:
[0080]
a、河流管网中心线数据处理
[0081]
利用arcgis加载河流管网shp矢量数据,检查一下河流管网面是否是连续的,若不是连续的,要对面进行编辑,确保面是连续不间断的;然后调用arctoolbox——数据管理工具——要素——面转线,检查线图层是否是开口连续的图形;定义投影坐标系,坐标系的定义方法如下:arctoolbox——数据管理工具——投影和变换——定义投影,调用arctoolbox——制图工具——制图综合——提取中心线,生成shp文件。
[0082]
b、排水分区面生成
[0083]
加载上一步生成的河流管网中心线数据,调用arctoolbox——数据管理工具—要素—要素转面工具,设置相关输出路径以及xy容差,生成分布式排水分区面的shp文件。
[0084]
c、城市高精度地形分区切片
[0085]
利用qgis分别加载城市高精度地形asc数据和上面提到的排水分区面shp文件,然后调用工具箱——gdal——栅格提取——按掩膜图层裁剪栅格,输入地形、排水分区面、指定坐标,最后导出为asc格式的栅格地形数据。
[0086]
d、数据格式转换
[0087]
打开qgis,加载上一步生成的栅格地形数据文件,调用工具箱——gdal——栅格投影——重投影工具,输入地形数据文件,指定源crs、目标crs、选择重采样方法最临近采样,选择导出的数据格式asc以及导出目录,生成可供处理的分布式地形asc栅格数据。
[0088]
结合图3所示,关于采用分布式调度中心(控制节点服务器)的步骤为:
[0089]
a、导入数据
[0090]
在调度中心软件中上传分布式地形分区数据、排水分区数据以及分布式降雨数据。
[0091]
b、下发模拟演算命令
[0092]
调度中心收到模拟命令之后,通过mqtt将命令下发到各内涝模拟工具,命令内容包含各个模拟工具需要输入的参数信息,内涝模拟工具收到命令之后,自动进校演算处理。
[0093]
c、暴雨内涝模拟结果处理
[0094]
暴雨内涝模拟工具完成模拟演算之后,自动给调度中心发送模拟成功的消息,消息包含了模拟结果状态以及模拟结果的最终路径,调度中心收到命令之后,下发给内涝结果处理工具,内涝结果处理工具收到命令之后,调用qgis的工具箱——gdal——栅格杂项——合并,输入所有的内涝处理结果asc文件,选择输出数据类型为float32,设置无效数据的像素值为0,启动处理,处理完成导出为asc格式的文件,再利用着色软件,依据给定的图例,生成带颜色的tiff图片。
[0095]
结合图4所示,暴雨内涝模拟结果的切片发布展示的步骤为:
[0096]
1、生成瓦片图片
[0097]
打开qgis,在浏览器中找到内涝模拟结果tiff图片所在目录,双击文件在qgis中加载,加载完成之后,调用qgis的工具箱——gdal——栅格杂项——gdal2tiles,在界面中选择输入图层为内涝模拟结果,瓦片分割切面为墨卡托投影,选择缩放层级为1-18级,重采样方法平均,坐标系为wgs84,选择输出的目录,点击处理按钮开始生成瓦片文件。
[0098]
2、iis发布瓦片数据
[0099]
计算机右键——管理——服务和应用程序——internet信息服务(iis)管理器——网站右键——添加网站,在出现的提示框中输入网站名称,选择物理路径;右键新建一个虚拟目录,名称按照自己要求起,物理路径选择内涝模拟切片所放的文件夹,设置允许目录浏览;模型文件,iis不能进行网络发布识别,所以要设置一下mime类型,添加一个后缀为.png,mime类型为application/octet-stream的项;模型在调用是使用js调用,有时会出现跨域问题,在iis中要设置“http响应标头”,允许跨域进行访问,在其中添加access-control-allow-headers:content-type,api_key,authorizationaccess-control-allow-origin:*access-control-allow-methods:get,post,put,delete,options以上三项键值对。
[0100]
利用网络路径“http://ip:端口号/虚拟目录名/level/x/y.png”即可读取到模拟结果的瓦片文件。
[0101]
综上,按照本技术实施例中介绍的技术与方法,通过进行分布式计算,将原有单一处理软件,进行分布式调度处理,将城市按照分区分为若干块区域,每个模拟工具所处理的数据大大的减少,从原来处理时间一个多小时,可以优化到5分钟处理完一个城市,将处理结果通过金字塔瓦片处理,实现了web端秒级渲染。
[0102]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发
明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1