许辉熙,薛万蓉,何政伟,张东辉
(1.四川建筑职业技术学院交通与市政工程系测量工程研究所,四川德阳 618000;2.成都理工大学数字国土与生态科学研究所,四川成都 610059)
修建水库是水电站建设的重要内容。库区地形开阔,河道纵坡缓,水库蓄水量就大,工程效益也较大;反之,若库区地形狭窄,河道纵坡陡,坝虽高,但其蓄水量不一定大。用以反映水库地形特征的曲线称为水库特性曲线,分为水库水位-面积关系曲线和水库水位-库容关系曲线(简称水库面积-库容曲线,下同),它们是水库的重要技术指标,是水库规划设计的重要依据[1]。
水库面积-库容曲线计算,关键在于水库库容计算。常用水库库容计算方法有两种[2]:一种是图上量测;一种是实地量测。在图上量算的方法中又有“等高线法”[3]、“格网法”、“横断面法”[4]和“解析法”[5]。 “等高线法”、“格网法”和“横断面法”计算库容工作量大,耗时多,精度较低;“解析法”计算的精度比前三种方法要高,但算法复杂,不易实现。实地量测的方法是在库区实地,采用测量横断面图的方法进行库容的量测计算,这种方法的精度要高些,但是实际可操作性不强。GIS技术的普及应用,为水利水电工作者解脱繁重的量算工作、提高工作精度和效率提供了技术支持。
本文基于数字高程模型(DEM),提出基于“土地平整法”计算水库面积-库容曲线的思想,并通过.NET平台 C#语言编写软件,以期在水电开发决策的预可研阶段实现水库面积-库容曲线的快速计算,提高决策效率和水平,有利于各项参数比选,真正做到水电站规划的优化设计。
图1 “土地平整法”计算水库面积和库容的基本原理
“土地平整法”计算水库面积-库容曲线的基本原理:将计算水库面积和库容视为一项土地平整工程,水库面积就是工程设计标高所在平面面积,水库库容计算就是工程土方的填方量,如图 1所示。
“土地平整法”计算水库面积和库容的简要过程:将“土地平整区”(库区)微分成许多相同的正方形单元,且认为每个单元表面是水平的,即高程是均一的,而邻近单元有差异。这样,单个栅格单元填方体积实际就是地面与“土地平整设计标高线”(即水库设计水位线)之间构成的立方体体积 V=Δh×s,s是微分单元面积,Δh是该单元实际地面高程与“设计标高”(即设计水位线)之间的差值。将整个“土地平整区”(即库区)所有微分单元体积求和就是“土地平整工程量”(即库容);而所有单元面积之和就是水库水面面积。式(1)是水库面积和库容计算公式。
式中:a为地面采样微分单元边长;h0为某一设计水位高程;hi为该设计高程以下淹没的某一单元的高程;n为淹没单元个数;V为该设计高程的水库库容;S为该设计高程下的水库面积。
根据式(1)可以计算任意设计水位高程 h0对应的水库水面 S和水库容积 V,进而可以绘制水位-面积曲线和水位-库容曲线。
但是,和土地平整工程不同之处是,水库库容计算“只填不挖”,即只算“填方体积”,不算“挖方体积”,包括库区中的孤岛也不能“开挖”。
系统框架结构设计见图2。本系统工作流程为:
(1)对 DEM数据进行预处理操作,生成系统易于导入的数据集。
(2)导入符合要求的数据集,生成一维数组,将硬盘数据导入到计算机的内存储器中,以便于算法实现。
(3)进行计算前的准备工作,设置相关参数,满足不同数据下对系统计算的不同需求,这些设置包括:设置高程信息、DEM分辨率和高程计算步长等。
(4)把事先导入的数据,通过读取上述设置信息,代入数学模型中,分别得出水库面积和水库库容计算结果。
(5)利用图形控件,根据计算结果,生成水库水位-面积和水库水位-库容曲线,将所有的原始数据、中间设置数据和计算结果(包括文本和图形)都能够以一定的方式导出到硬盘中,供研究分析使用。
本系统以 DEM(ASCII码)数据为计算起点,以生成水库水位-面积和水库水位-库容曲线为最终目标,整体功能具有严密的流程,数据具有明显时序性。鉴于此,本系统的设计采用的是流程式架构,即根据数据运算的先后顺序来划分系统模块。系统的功能总体上分为5个。
(1)数据导入模块:读取经过预处理的数据文件,并导入到数组中;
(2)数据准备模块:进行计算前相关参数的设置等准备工作;
(3)数据计算模块:根据数学算法,计算水库面积和水库容积;
(4)生成图形模块:绘制相关曲线;
(5)导出数据模块:将中间数据以及结果数据进行导出。
本系统开发工具选择.NET平台的 C#语言。C#是.NET平台的主流语言,是一种先进的、面向对象的语言。通过 C#可以使程序开发人员快速地建立大范围的基于 Microsoft网络平台的应用,并且提供大量的开发工具和服务,帮助开发人员开发基于计算和通信的各种应用。C#也可以为 C/C++开发人员提供快速的开发手段而不需要牺牲任何 C/C++语言的特点和优点。从继承角度来看,C#在更高层次上重新实现了 C/C++,熟悉C/C++开发的人员可以很快地转变为 C#开发人员。作为一种全新的语言,C#具有许多新特性,其中主要有自动内存管理、统一类型系统、版本控制及对网络编程新标准的支持等。
图2 水库面积-库容曲线计算系统框架设计
3.1.1 自动内存管理
.Net运行时(Run Time)提供了一个无用单元收集器,负责 C#程序中的内存管理。当检测到过程需要清理时,即调用无用单元收集器,由其检测哪些对象不可以从代码中访问,并将其删除。
3.1.2 统一类型系统
所有类型都是从 System Object类型派生而来,并且它们都可被当作对象处理。
3.1.3 版本兼容
版本兼容问题起因于多个应用程序都安装了相同DLL名字的不同版本。.Net平台通过使用装配件 (装配件是自我描述的安装单元)对应用程序提供版本支持,使C#可以更好地支持版本控制。
3.1.4 支持网络编程新标准
C#的内置特性使任何组件可以轻松转化为 XML网络服务,被任何操作系统上运行的任何程序调用。
本系统采用的是多级数据控制结构,可以在保护重点数据的前提下,利用缓存技术,优化文件数据的运算和存储方式。数据读取的方式是后台处理办法,一定程度上加速了读取的速度。表1是系统核心数据的定义。
黄河玛尔挡水电站为西北勘测设计研究院《黄河上游干流多松至尔多河段水电规划》推荐 3级开发方案中的第 2个梯级电站。坝址位于青海省玛沁县拉军镇上游约 5 km的黄河干流上,左岸为果洛州玛沁县,右岸为海南州同德县,距上游规划的宁木特水电站(正常蓄水位 3 410m)约 75 km,距下游规划的尔多水电站(正常蓄水位 3 070m)约 33 km。西宁 ~果洛州省道(S101)通过下坝址右坝肩,距西宁市公路里程约 363 km。工程规模为Ⅰ等大(1)型工程,主要建筑物为1级,次要建筑物为 3级,是一座以发电为主的大型水电枢纽工程。工程目前处于预可研阶段。
坝址区地处青藏高原腹地,为典型高原深切峡谷地貌。河谷弯曲,总体西流,深切 200~250m,河道狭窄,水流湍急,多有跌坎,岸坡陡峭,部分直立,基岩裸露较好,河床覆盖浅,冲沟支流发育,多常年有水,两岸高平台为黄河高阶地侵蚀堆积成因,受局部剥蚀,呈不连续分布。场内勘察工作环境和条件如气候(多雨雪、大风)、交通、供水供电、水上作业等,极为困难。
以玛尔挡水电站研究区格网DEM计算初拟正常蓄水位3 270m时的水库面积-库容曲线为例,说明软件的使用过程。
(1)DEM数据准备。采用研究区 1∶10000等高线数据,在 ArcGIS的 WorkStation工作环境中,利用 Topogridtool命令生成 2m分辨率格网DEM,根据水电站水库设计的下坝址位置和初拟正常蓄水位 3 270m,通过掩膜(mask)处理得到正常蓄水位线以下的 DEM,利用 ArcGIS的“Raster to ASCII”命令将其导出为 ASCII码(文本文件),删除文本文件中记录原数据行列号等信息的头文件,得到可直接用于本系统计算水库面积和库容的数值文件。
(2)启动系统(图 3),读入 DEM文本文件(图 4)。
(3)输入设计水位线、DEM栅格单元大小和高程计算步长(图 5)。
(4)计算不同水位时的水库面积(图 6)。
(5)计算不同水位时的水库库容(图 7)。
(6)自动生成水库水位-面积关系曲线(图 8)。
(7)自动生成水库水位-库容关系曲线(图 9)。
(8)文本、图片等成果输出(图 10)。
图3 系统启动界面
图4 读入 DEM文本数据
图5 设置计算参数
图6 计算不同高程的水库面积
图7 计算不同高程的水库库容
图8 自动绘制水库水位-面积曲线
图9 自动绘制水库水位-库容曲线
图10 计算成果输出
通过计算得到的水库水位-面积关系曲线和水库水位-库容关系曲线,反映了玛尔挡水电站的水库面积和库容随着蓄水位变化而变化的趋势,对水库地形特征的展示形象直观,一目了然。
[1]武鹏林,霍德敏,马存信,等.水利计算与水库调度[M].北京:地震出版社,2000
[2]袁勇.基于 DEM库容计算及可视化研究[D].武汉:武汉大学,2004
[3]叶守泽.水文水利计算[M].北京:水力电力出版社,1992
[4]刘炜,牛占,陈涛.断面法水库库容计算模型的几何分析[J].人民黄河,2006,28(10):72-74
[5]何习平.解析法计算水库库容[J].南昌水专学报,1998,17(3):56-61