二维洪水模型时间序列数据的网络可视化

2018-12-26 08:35赖瑞勋张晓丽
地理空间信息 2018年12期
关键词:水深图层洪水

赖瑞勋,王 敏,杨 明,张晓丽

(1.黄河水利委员会黄河水利科学研究院,河南 郑州 450003;2.南京水利科学研究院水利部水科学与水工程重点实验室,江苏 南京 210029)

二维洪水模型利用Navier-Stokes方程在垂直于水面的方向进行积分,得到二维平面上的浅水方程,在防洪减灾数值模拟与预测方面具有广泛的应用[1-2]。二维洪水模型计算成果数据具有很强的时间和空间分布特点,数据种类也比较丰富。在模型计算的空间区域内,除水深、流速、洪水到达时间、洪水淹没历时等标量数据外,还有流速场等矢量数据。同时,二维洪水模型模拟了特定区域洪水演进过程,其水深、流速等数据又具有时间序列的特征。

二维洪水模型计算成果的可视化是分析探究洪水淹没、演进过程的重要技术途么,是科学计算可视化的重要组成部分。而且,随着网络及移动客户端的普及,二维洪水模型计算成果的网络可视化对宣传洪水风险,提高防洪减灾科学水平也具有十分重要的现实意义。

近年来,在二维洪水模型的时间序列可视化方面开发实现了大量的应用系统。一部分系统以桌面软件为平台,利用ArcGIS、OSG等软件开发包,在DEM或遥感影像等数据的基础上,开发实现了洪水淹没范围随时间的动态演进过程[3-5]。同时,随着网络地理信息技术的发展,洪水淹没数据的网络可视化也取得了一定的进展。例如,朱军[6]等以溃坝洪水为例,利用高性能计算和WebGL等技术,设计并实现了时空过程网络可视化模拟与分析服务的系统。但这些系统的技术实现过程相对比较复杂,也没有在大比例尺范围的洪水演进计算中有相关的应用,其洪水淹没网络可视化的实用性和效率并不明确。

根据洪水风险数据的时空分布特点以及洪水风险的可视化需求,本文设计了二维洪水模型计算结果网络可视化的框架,利用ArcGIS API for JavaScript接口,开发实现了二维洪水结果数据的网络查询和可视化。开发实现的功能主要包括:用不同颜色等级渲染不同空间位置的最大淹没水深;对任意空间位置单元,能查询该计算单元的水深随时间变化的过程;浏览洪水淹没范围随时间变化的过程。该可视化模式应用于黄河下游从小浪底至河口约700 km范围的区域,并从可视化效果及可视化效率等方面进行了分析。

1 洪水时空数据网络可视化

1.1 系统总体设计

二维洪水时间序列数据的网络可视化系统主要包括以下几个方面的内容:遥感影像地图资源、洪水淹没数据资源和客户端功能实现(图1)。

图1 系统总体框架

在遥感影像地图资源中,利用ArcGIS桌面软件将遥感影像发布为影像服务,并在Web服务器中进行影像的缓存处理。这种影像资源可以在本地服务器中部署,也可以调用远程的服务器发布的影像资源。

在洪水淹没数据资源中,高性能计算平台将计算区域划分为若干子区域,各子区域之间采用MPI(message passing interface,消息传递接口)实现消息传递。其高性能计算的基本原理是把各子区域的初始流场信息、几何信息分别装载入各子区域对应的CPU内存中,在每一个CPU中启动计算进程,并完成CPU之间的数据交换[7]。利用高性能平台得到计算区域的洪水淹没数据,再利用数据转换工具将这些数据转换为相应的时间序列图层;同样,利用ArcGIS桌面软件将这些数据发布为地图服务和查询服务。遥感影像资源和洪水淹没资源均以REST[8](representational state transfer,表述性状态转移或表象状态转移)类型的Web服务提供给客户端,供客户端实现各种浏览、查询等功能。在客户端,可以根据用户需求,利用聚合应用Web服务器将不同来源的数据资源聚合在一起,在浏览器中显示为一个地图。

1.2 洪水淹没数据转换

二维洪水模型在求解过程中,模型计算区域被分割为若干互不重叠的计算网格。以三角形计算网格为例,一个计算网格由3个计算节点构成,每个计算节点包含了该节点上的节点编号、水深、流速等信息(图2左边)。同时,一场洪水的淹没数据由若干个时刻构成,为了将这些具有时间特征的洪水淹没数据发布为地图服务,数据需要转换为两个图层(图2右边)。第一个图层是最大淹没水深图层,保存了计算单元在所有时刻中最大的水深、流速,以及流速水深对应的时刻。第二个图层是所有时刻的淹没范围,该图层保存了所有时刻最大淹没范围的几何外边界,以及淹没范围边界对应的时刻。

图2 洪水淹没时间序列数据转换为图层

为实现以上数据转换工作,需要将网格节点上的水深、流速信息通过插值赋值到所对应的网格单元中,使网格单元也具有水深、流速信息。然后将所有时刻的流速、水深数据转换为一个洪水淹没shapefile图层,即一个时刻对应一个图层,这个转换过程是利用ArcMap中的ArcObjects组件来实现的(图2中部)。对某一时刻的洪水淹没数据,具体实现过程是:①利用ShapefileWorkspaceFactory组件的IWorkspaceFactory接口新建一个面状要素图层,并传值给IFeatureWorkspace接口;②利用IFeatureWorkspace接口的OpenFeatureClass打开该面状要素图层,并传值给IFeatureClass接口;③利用IFeatureClass接口的CreateFeatureBuffer创建一个Feature Buffer,并传值给IFeatureBuffer接口;④利用IFeatureClass接口的Insert方法创建一个Feature Cursor,并传值给IFeatureCursor;⑤利用Polygon组件中IPointCollection接口创建计算单元要素,并将值传递给IFeatureBuffer的shape方法;⑥利用IFeatureBuffer接口的value方法新建该计算单元的水深、流速等信息;⑦新建的计算单元要素传值给IFeatureCursor的InsertFeature方法,将新建的计算单元作为一个新的要素保存到面状图层中。

在转换为最大淹没水深图层的过程中,以计算网格的单元编号为索引号,按时间先后顺序保存了所有时刻的水深数据。同时,为了能查询网格单元的最大淹没水深和最大流速,洪水淹没图层在所有时刻中找出最大淹没水深和最大流速,并保存该数据。在转换为淹没范围边界图层的过程中,由于某一时刻的洪水淹没图层包含了若干计算单元,为了提高数据显示效率,将某时刻所有受淹没的单元进行合并操作,保留该时刻最大淹没范围的几何边界。

1.3 客户端实现

在客户端页面中,主要实现的功能包括显示遥感影像地图、按颜色分级显示淹没水深、查询计算单元的水深时间序列数据。这些功能是利用ArcGIS API for JavaScript接口提供的方法来实现的。

遥感影像地图利用API中提供的地图切片图层接口来显示,对应类为esri/layers/ArcGISTiledMapServiceLayer。当实例化一个ArcGISTiledMapServiceLayer类之后,调用地图类的addLayer方法,就可以加载指定的影像地图资源。由于切片地图服务图层引用预先定好的图片缓存切片,再拼接在一起显示一幅无缝的地图,所以切片地图显示效果好、速度快。

最大淹没图层利用API中提供的颜色等级渲染器来渲染,对应类为esri/renderers/ClassBreakRenderer。颜色等级渲染器按照设置的淹没水深范围显示数据,该类最重要的一个方法就是addBreak。如果最大淹没范围按值划分为5个等级,该方法指定某一范围及其对应的符号,如果淹没水深数据值在该范围内,那么就用对应的符号来绘制该网格单元要素。

计算单元水深查询利用API中提供的查询来实现,对应类为esri/tasks/QueryTask。该类利用所提供的洪水淹没水深数据资源,实现对计算单元水深的属性查询。与QueryTask类配合使用的是API提供的弹出模板,用来显示查询出的水深时间序列数据,对应类为esri/dijit/PopupTemplate。PopupTemplate类扩展自esri/InfoTemplate类,并提供了弹出窗体的功能,弹出的窗体可以包含标题、描述、图表、图片及附件。在实现过程中,利用mediaInfos定义弹出窗体的图表类型为line chart,定义要显示的字段为所有时刻的水深数据。

不同时刻淹没范围的时间序列浏览是利用API中提供的时间滑块来实现的,对应类为esri/dijit/TimeSlider。与TimeSlider配合使用的是TimeExtent类,TimeExtent类定义了淹没范围时间序列的起始时间和终止时间。利用TimeSlider类显示时间序列滑块,并利用该类提供的createTimeStopsByTimeInterval方法设置需要显示的淹没范围边界时间序列图层。

2 应用结果

将二维洪水模型时间序列可视化框架应用于黄河下游小浪底至河口河段。黄河下游河段从平面看上宽下窄,从纵向看上陡下缓,纵比降与相应的河道纵比降基本相同,横比降大小主要与漫滩次数的多少有关。黄河下游滩区跨河南、山东两省,经15个市45县(区),滩内有耕地31.28万 ha ,村庄1 999个,人口186.47万人(包含封丘倒灌区24.74万人)。

利用黄河水利科学研究院自主开发的黄河二维洪水模型开展模型计算,计算河道长度约700 km,计算区域面积约5 685 km2。整个计算区域剖分三角形计算网格32万,其中主槽部分三角形网格边长约为50 m,滩地部分三角形网格边长为100~200 m,网格大小从主槽逐渐过渡到滩地。模型计算平台采用黄河超级计算中心的神威4 000 H高性能集群计算机,该集群计算机系统拥有14个计算节点,系统通用计算峰值速度为4.66 Tflops。

模型计算进口为小浪底,出口为黄河口汊三断面,小浪底进口的洪水流量级别为13 000 m3/s,出口采用水位流量关系曲线控制水位,同时考虑了黑石关、武陟和小花间无控区来水。模型进口流量的时间范围从2016-08-08~2016-08-20,共13 d,312个h,模型计算结果输出时间间隔为2 h。

在高性能计算过程中,该区域被分割为8个子区域,每个子区域的计算网格约为4万,模型计算时间约为2 h。模型计算完成后,利用上述方法将模型计算的洪水淹没数据转换为具有时间序列特征的shapefile图层,并以地图服务的方式发布,发布数据量级约为500 M字节。遥感影像地图采用切片地图方式进行发布,地图分辨率划分为四个等级,能显示不同详尽程度的地物地貌信息。洪水淹没时间序列数据和遥感影像地图资源均可以利用REST方式访问数据资源,并在浏览器端进行数据资源的聚合,将来自不同服务器的数据资源整合在一张地图中。

图3显示了洪水最大淹没范围的渲染效果,以及淹没水深时间序列数据网络可视化的查询效果。洪水淹没水深按照水深大小划分为5个等级,分别为小于0.5 m、0.5~1.0 m、1.0 ~2.0 m、2.0~3.0 m和大于3.0 m,淹没水深的颜色从浅蓝逐渐过渡到深蓝。单击选中任意计算网格,可以弹出该计算网格的水深随时间变化的过程曲线,单击曲线上任意节点,还可以进一步查询到该节点的时间以及具体的水深值。

图4显示了不同时刻洪水淹没范围的浏览功能,利用淹没时间序列滑块,可以查看任意时刻该场次洪水的淹没范围,或者查看淹没范围随时间变化的动态效果。

图3 黄河下游最大淹没范围及水深时间序列

图4 黄河下游不同时刻淹没范围时间序列

3 结 语

本文回顾了洪水淹没数据网络可视化的最新进展,根据洪水风险分析及防汛减灾的需求,设计了二维洪水淹没数据的网络可视化架构。该架构利用高性能计算平台计算得到洪水淹没演进数据,利用ArcObject组件转换为具有时间序列特征的洪水水深图层。同时,将洪水水深数据资源及遥感影像地图资源以REST方式发布为Web服务,提供给客户端访问。在系统架构的客户端,聚合了不同数据资源,利用ArcGIS提供的JavaScript接口,实现了不同水深的颜色渲染,能查询任意计算单元的水深随时间变化的过程,并实现了洪水淹没范围时间序列数据的浏览。

该洪水淹没数据的网络可视化架构应用于黄河下游小浪底至河口区域,测试结果表明,该系统既能实现最大淹没水深的颜色渲染,也能查询任意计算单元的水深随时间变化的过程。虽然洪水计算区域比较大,具有时间特征的淹没水深数据量也比较大,但整个系统在页面端显示的效率是可以接受的。

下一步,将进一步优化系统的数据处理过程,利用GeoTools等开发工具,在模型计算过程中直接输出shapefile图层,简化数据转换流程,为黄河防汛减灾提供更便捷的技术服务。

猜你喜欢
水深图层洪水
书法静水深流
基于水深分段选择因子的多光谱影像反演水深
洪水时遇到电线低垂或折断该怎么办
又见洪水(外二首)
巧用混合图层 制作抽象动感森林
洪水来了
图层法在地理区域图读图中的应用
跟我学添加真实的光照效果
GPS RTK技术在水深测量中的应用
论设计洪水计算