APP下载

基于NetCDF格式的河网水流二维呈现技术研究

2018-01-04

水利水电快报 2017年12期
关键词:河网预警系统水流

(1.上海碧波水务设计研发中心,上海 200233;2.上海市水务规划设计研究院,上海 200233 )

基于NetCDF格式的河网水流二维呈现技术研究

钱真1,2

(1.上海碧波水务设计研发中心,上海 200233;2.上海市水务规划设计研究院,上海 200233 )

为在在线预报预警系统上展示模拟的河网水流运动情况,根据NetCDF格式标准和一、二维流速关系,采用C#语言编程开发,提出并研究了实现一维河网水流运动的二维呈现技术,并在.net平台上设计编写了相应的转化模块。此项技术已成功应用于黄浦江上游水源地突发污染预警系统平台中。

污染预警;污染预报;数值模拟

平原感潮河网水流数值模型是研究平原感潮地区水流运动规律、编制防洪除涝和河网水环境整理规划的重要工具[1-2]。数字河网水量水质模型系统(Digital River Network Water Quantity & Quality Model System,简称:DRWMS)是针对上海感潮河网地区水文条件及水流运动特点,集成水文水力学数值模拟、GIS、数据库等技术,由上海市水务规划设计研究院和南京航空航天大学计算机科学与技术学院联合研发形成的一套集模型建模、模拟计算、结果演示于一体的软件系统,被广泛应用于上海区域内涝、水环境治理等相关科研和规划设计中[3-4]。

近年来,随着社会对水安全需求的不断提高和互联网技术的发展,水量水质数值模拟技术不仅被广泛应用于研究、规划设计中,也被应用于常规的业务监测预报预警。在“大数据”、“互联网+”的大背景下,结合数值模拟技术,国内外已研发了一系列先进的在线预报预警系统。著名的有ASA公司开发的OilMap和ChemMap系统[5-7],但这些系统要求水流模型结果以二维流场的方式接入并展示,而传统的河网水流模拟结果通常是一维的,无法被在线系统直接调用。

本文根据NetCDF数据结构和DRWMS的特点,从水流表征变量的物理意义出发,在.net平台上,采用C#语言编程开发,实现了NetCDF格式的河网流场文件自动生成,并将此技术成功应用于黄浦江上游水源地突发污染预警系统平台的建设中。

1 NetCDF格式

NetCDF(Network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF被广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域[8]。

1.1 NetCDF数据结构

NetCDF数据集(.nc)并非固定格式,根据用户需要自行定义。一个完整的NetCDF数据集包含维(Dimensions)、变量(Variables)及属性(Attributes)3种描述类型,每种类型都会被分配一个名字和一个访问ID,NetCDF库可以同时访问多个数据集,ID被用来识别不同数据集。变量存储实际数据,维给出了变量维度信息,属性则给出了变量或数据集本身的辅助信息属性,又可以分为适用于整个文件的全局属性和适用于特定变量的局部属性,全局属性则描述了数据集的基本属性以及数据集的来源。一个NetCDF文件的结构包括以下对象:

NetCDF name{

Dimensions:… ∥定义维数

Variables:… ∥定义变量

Attributes:… ∥属性

Data:… ∥数据

}

1.2 NetCDF接口函数库

NetCDF是开放的数据结构模型,用户可以在具体学习其文件结构后直接编程读写.nc文件,但这种方式效率低下,使用成本高昂,且易造成文件格式的变异,难以长期维护和升级NetCDF数据格式。因此,在NetCDF版本更新的同时官方也一并提供了NetCDF接口函数库以方便用户以编程方式访问NetCDF数据,用户只需熟悉接口函数库的函数调用方式,而无需考虑数据底层的二进制具体编码和文件版本等细节问题。目前,NetCDF已经升级到4.4.0,其接口函数库支持的语言为C、C+ +、Fortran和Java。

2 一维河网水流的二维呈现

2.1 基本原理

在一维河网中,描述水流状态通常采用特征断面的水位、流量和平均流速。其中断面平均流速通常由下式得到:

(1)

式中,A表示断面流量为Q时对应的过水断面面积,断面的平均流速方向垂直于断面并指向下游。

而在二维流场中,一般采用考察点位的水位和水深平均流速(或单宽流量)描述水流状态。其中,在笛卡尔坐标下水深平均流速由x、y轴上分量u、v组成的矢量形式表示:

(2)

因此,要将一维河网中的水流以二维方式呈现,需进行如下处理:

(1) 确定一维河网的二维考察点。此次研究中利用一维河网模型中已有横断面线,取其两岸及中心点作为考察点。

(2) 将断面平均流速做x、y投影:

(3)

式中,θ为平均流速方向与正东方向的夹角。

2.2 关键技术

流场数据文件用于存储日常定时运算的水动力模型得到的流场结果,结果参数包括流速和流向。由于NetCDF格式数据具备运算与显示速度快的特点,为支撑业务化运行与应急管理的需要,该研究增加了流场结果实时转换为NetCDF数据文件的模块,从而为溢油模型和化学品泄漏模型的运算提供实时流场条件。

此次研究中采用的一维河网水动力模型软件正是基于.net平台,采用C#语言开发完成桌面应用软件,无缝集成数值模型、数据库与GIS等多个应用模块。尽管C#被越来越多地应用于科学研究和工程应用中(如math.net项目),但目前NetCDF接口函数库尚无直接支持C#的版本。

在C#中操作NetCDF文件这种安全可行的方法是使用DllImport调运非托管的NetCDF接口函数库,链接相应的操作函数,以作为C#中类的方法(见图1)。

图1 .net平台调用非托管.dll

3 程序设计

WRWMS2NetCDF程序的主要功能是读取一维河网水流模型软件生成的断面位置文件和时序数据文件,处理生成符合平台要求的NetCDF文件。WRWMS2NetCDF模块主要包括:主函数类(WC2nc)、河网数据集类(WC_Data)、NetCDF数据类(NetCDF)和NetCDF数据写入类(NetCdfWriter)(见图2)。

图2 WRWMS2NetCDF模块架构

3.1 主函数类(WC2nc)

WC2nc为静态类,外部程序在引用WRWMS2NetCDF.dll时可以直接调用其中的函数Transform(string[] WCFiles, string ncFile):WCFiles为WRWMS输出文件的地址列表,程序根据后缀名自动判断文件类型;ncFile为生成NetCDF文件的地址。

3.2 河网数据集类(WC_Data)

WC_Data是从文件中读取WRWMS河网数据后在内存中生成河网数据对象,读取WRWMS河网数据是该对象的方法,WC_Data定义的是一个动态类,读取一次河网数据随即生成一个河网数据集对象。该类中另外引用2个类:Point和Section,以简化断面数据的读取。

(1) Point:封装控制点的坐标信息,初始化函数:public Point(double xValue, double yValue)。

(2) Section:封装断面所属河段号(strRiver)、断面编码(strSec)、断面控制点集(secPoints)、断面法向(Alpha)以及断面时序变量值(Data)。

WC_Data以河网为描述对象,通过方法ReadSectionPosition(string fileName)、ReadLonLat(string fileName)、ReadHisBinary(string fileName)等获取断面对象的空间信息和时序数据后,进行变量数据的处理(如,计算断面平均流速的u,v分量),并将变量从断面对象解析出来,这些变量如表1所示。

表1 WC_Data属性

注:PointCount为控制点个数,TimeCount为计算时间步长数。

3.3 NetCDF数据类(NetCDF)

NetCDF通过引用InteropServices,以DllImport方式,调用非托管的netcdf.dll(C版本),其中对netcdf.dll的函数和控制参数进行重定义(见图3)。

图3 C#中netcdf.dll的部分函数重定义

3.4 NetCDF数据写入类(NetCdfWriter)

NetCdfWriter中Write(string path, WC_Data wc)的主要功能是根据WC_Data对象生成.nc文件,主要流程:

(1) 创建.nc文件;

(2) 创建维度,并定义最大范围;

(3) 创建所有变量;

(4) 写入属性;

(5) 写入所有变量值,先写低维度变量,后写高维度变量;

(6) 关闭.nc文件。

图4 研究区域河网水系示意

4 应用实例

在DRWMS上建立了上海全市及黄浦江沿太浦河上游(面积约8 613.5 km2)范围内的河网水量水质模型(见图4),其中,降雨网格(3 km×3 km)655个,河段1 633个,断面821个,泵闸139座。以2014年3月12~20日和2014年7月10~26日期间实测的降雨、水文及工情对该模型率定验证,使其精度满足预报预警业务需求。在实际应用中,DRWMS根据实时的降雨、水文及工情条件进行水流计算,通过WRWMS2NetCDF模块自动将结果转换NetCDF格式,供黄浦江上游水源地突发污染预警系统(见图5)实时调用,结合OilMap和ChemMap可对突发水污染事件进行预报。

图5 预警系统中局部流场示意

5 结 语

本文研究了基于NetCDF格式的一维河网二维呈现原理和技术,在.net平台上,设计和编写了WRWMS2NetCDF模块(申请并获得软件著作权),并成功应用于黄浦江上游水源地突发污染预警系统平台中。本文的研究成果可以为类似的实时预报预警系统平台建设提供技术参考。

[1] 李光炽,钱真.感潮河道区间入流反分析[J].水科学进展,2013,24(2):266-271.

[2] 钱真,贾卫红.基于GIS的感潮地区城市区域除涝能力评估[J].水电能源科学,2014,32(3):85-87.

[3] 钱真,谭琼,贾卫红.基于城市雨洪综合模拟的区域除涝分析[J].水利水电科技进展,2015,35(6):57-61.

[4] 谭琼,时珍宝,张建频,等.排水实时模型在上海防汛中的应用示范[J].中国给水排水,2012,28(15):49-52.

[5] 李保刚,周克梅,林涛,等.水源地保护及突发性水污染事件预警应急的研究与实施进展[J].水资源保护,2008,24(1):87-91.

[6] 陈荣昌,陈俊峰.ChemMap在长江危险化学品泄漏风险及对策研究中的应用[J].港航节能,2011(1):2-5.

[7] 陈荣昌,赵前,邓健,等.Delft3D和OilMap在内河溢油模拟中的联合应用研究[J].中国水运,2011,11(4):65-67.

[8] 曹柱,苏天赟,王国宇.大规模海洋水文环境多维可视化技术研究[J].中国海洋大学学报(自然科学版),2017,47(4):132-138.

2017-08-10

国家重点研发计划“长江水源地供水保证率提升对策与措施”资助项目(2017YFC0405406)

钱 真,男,上海碧波水务设计研发中心,工程师.

1006-0081(2017)12-0039-04

X832

A

(编辑:朱晓红)

猜你喜欢

河网预警系统水流
哪股水流喷得更远
能俘获光的水流
民用飞机机载跑道入侵预警系统仿真验证
我只知身在水中,不觉水流
一种基于CNN迁移学习的井下烟、火智能感知预警系统
基于DEM数据与GIS技术方法的水文信息提取研究
——以莲花县为例
基于ZigBee与GPRS的输电杆塔倾斜监测预警系统
基于PSR模型的上海地区河网脆弱性探讨
桥、隧安全防范声光预警系统
MIKE11模型在城市河网生态调水工程中的应用