(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格式的河網流場文件自動生成,并將此技術成功應用于黃浦江上游水源地突發污染預警系統平臺的建設中。
NetCDF(Network Common Data Form)網絡通用數據格式是由美國大學大氣研究協會(University Corporation for Atmospheric Research,UCAR)的Unidata項目科學家針對科學數據特點開發的,是一種面向數組型并適于網絡共享的數據的描述和編碼標準。目前,NetCDF被廣泛應用于大氣科學、水文、海洋學、環境模擬、地球物理等諸多領域[8]。
NetCDF數據集(.nc)并非固定格式,根據用戶需要自行定義。一個完整的NetCDF數據集包含維(Dimensions)、變量(Variables)及屬性(Attributes)3種描述類型,每種類型都會被分配一個名字和一個訪問ID,NetCDF庫可以同時訪問多個數據集,ID被用來識別不同數據集。變量存儲實際數據,維給出了變量維度信息,屬性則給出了變量或數據集本身的輔助信息屬性,又可以分為適用于整個文件的全局屬性和適用于特定變量的局部屬性,全局屬性則描述了數據集的基本屬性以及數據集的來源。一個NetCDF文件的結構包括以下對象:
NetCDF name{
Dimensions:… ∥定義維數
Variables:… ∥定義變量
Attributes:… ∥屬性
Data:… ∥數據
}
NetCDF是開放的數據結構模型,用戶可以在具體學習其文件結構后直接編程讀寫.nc文件,但這種方式效率低下,使用成本高昂,且易造成文件格式的變異,難以長期維護和升級NetCDF數據格式。因此,在NetCDF版本更新的同時官方也一并提供了NetCDF接口函數庫以方便用戶以編程方式訪問NetCDF數據,用戶只需熟悉接口函數庫的函數調用方式,而無需考慮數據底層的二進制具體編碼和文件版本等細節問題。目前,NetCDF已經升級到4.4.0,其接口函數庫支持的語言為C、C+ +、Fortran和Java。
在一維河網中,描述水流狀態通常采用特征斷面的水位、流量和平均流速。其中斷面平均流速通常由下式得到:
(1)
式中,A表示斷面流量為Q時對應的過水斷面面積,斷面的平均流速方向垂直于斷面并指向下游。
而在二維流場中,一般采用考察點位的水位和水深平均流速(或單寬流量)描述水流狀態。其中,在笛卡爾坐標下水深平均流速由x、y軸上分量u、v組成的矢量形式表示:

(2)
因此,要將一維河網中的水流以二維方式呈現,需進行如下處理:
(1) 確定一維河網的二維考察點。此次研究中利用一維河網模型中已有橫斷面線,取其兩岸及中心點作為考察點。
(2) 將斷面平均流速做x、y投影:

(3)
式中,θ為平均流速方向與正東方向的夾角。
流場數據文件用于存儲日常定時運算的水動力模型得到的流場結果,結果參數包括流速和流向。由于NetCDF格式數據具備運算與顯示速度快的特點,為支撐業務化運行與應急管理的需要,該研究增加了流場結果實時轉換為NetCDF數據文件的模塊,從而為溢油模型和化學品泄漏模型的運算提供實時流場條件。
此次研究中采用的一維河網水動力模型軟件正是基于.net平臺,采用C#語言開發完成桌面應用軟件,無縫集成數值模型、數據庫與GIS等多個應用模塊。盡管C#被越來越多地應用于科學研究和工程應用中(如math.net項目),但目前NetCDF接口函數庫尚無直接支持C#的版本。
在C#中操作NetCDF文件這種安全可行的方法是使用DllImport調運非托管的NetCDF接口函數庫,鏈接相應的操作函數,以作為C#中類的方法(見圖1)。

圖1 .net平臺調用非托管.dll
WRWMS2NetCDF程序的主要功能是讀取一維河網水流模型軟件生成的斷面位置文件和時序數據文件,處理生成符合平臺要求的NetCDF文件。WRWMS2NetCDF模塊主要包括:主函數類(WC2nc)、河網數據集類(WC_Data)、NetCDF數據類(NetCDF)和NetCDF數據寫入類(NetCdfWriter)(見圖2)。

圖2 WRWMS2NetCDF模塊架構
WC2nc為靜態類,外部程序在引用WRWMS2NetCDF.dll時可以直接調用其中的函數Transform(string[] WCFiles, string ncFile):WCFiles為WRWMS輸出文件的地址列表,程序根據后綴名自動判斷文件類型;ncFile為生成NetCDF文件的地址。
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為計算時間步長數。
NetCDF通過引用InteropServices,以DllImport方式,調用非托管的netcdf.dll(C版本),其中對netcdf.dll的函數和控制參數進行重定義(見圖3)。

圖3 C#中netcdf.dll的部分函數重定義
NetCdfWriter中Write(string path, WC_Data wc)的主要功能是根據WC_Data對象生成.nc文件,主要流程:
(1) 創建.nc文件;
(2) 創建維度,并定義最大范圍;
(3) 創建所有變量;
(4) 寫入屬性;
(5) 寫入所有變量值,先寫低維度變量,后寫高維度變量;
(6) 關閉.nc文件。

圖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 預警系統中局部流場示意
本文研究了基于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
(編輯:朱曉紅)