标题 | 基于EXCEL VBA的作物灌水率图绘制的编程实现 |
范文 | 张志雁 摘要:应用EXCEL VBA编制的程序,通过读取规划灌区的灌溉制度数据,实现自动绘制灌区年度初步灌水率图,并完成动态修正功能。该方法能够快速地解决绘制灌水率图中烦琐、重复的规划设计工作,从而提高工作效率。 关键词:编程;灌水率图;EXCEL VBA 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)01-0098-02 Abstract: Figure of irrigation rate could be Automatic drawn and dynamic amended by getting the data of irrigation schedule using the programming based on EXCEL VBA. This method can solve problem of planning, thereby improving efficiency of design work. Key words: programming; figure of irrigation rate; EXCEL VBA 1 概述 灌水率是指灌区单位面积上所需灌溉的净流量,它是根据灌溉制度确定的。将所得的灌水率绘成直方图,称为灌水率图。设计灌水率是设计灌区内渠首的引水流量和灌溉渠道的设计流量的重要参数,它的大小直接影响到灌溉系统的工程规模以及水资源利用充分与否,因此,在灌区规划设计中受到格外的关注。 传统作物灌水率图的绘制通用性较差、效率较低,而利用EXCEL VBA编写程序可有效提高灌区的规划设计效率。本文主要介绍基于EXCEL VBA在灌区规划设计中作物灌水率图绘制程序的开发及应用。 2程序设计 2.1设计原理 在灌区规划设计中,影响作物灌水率主要因素为作物种植比例、灌水定额、灌水延续时间等基本参数,而这些灌溉制度参数通常是可确定的。 编程过程中,通过读取确定格式的灌溉制度参数,计算各种作物播前灌水及生育期内各次灌水的灌水率,通过编程实现输出全年各灌水时间(以天为单位)内对应的作物灌水率,并应根据每次灌水延续时间绘制各种作物的灌水率过程线,将同时期各种作物灌水率相加,绘成设计灌区年度初步灌水率图,并完成修正。 2.2程序实现 1)读取灌溉制度数据 程序中灌溉制度设定为固定格式,见表1。灌溉制度中,作物数量、各作物灌水次数等参数为不确定数值。 J = 1 For I = 1 To 200 If Cells(I + 1, 4) = "" Then Exit For If Cells(I + 1, 1) <> "") Then 作物类别(J) = Cells(I + 1, 1) 灌溉面积(J) = Cells(I + 1, 2) 作物比例(J) = Cells(I + 1, 3) 灌溉定额(J) = Cells(I + 1, 7) For K = 1 To 200 If (K > 1 And Cells(I + K, 1) <> "" Or Cells(I + K, 6) = "") Then Exit For 灌水起始时间(J, K) = Cells(I + K, 4) 灌水天数(J, K) = Cells(I + K, 5) -Cells(I + K, 4) + 1 灌水定额(J, K) =Cells(I + K, 6) Next K 作物数量 = J J = J + 1 End If Next I 2)计算作物灌水率 按照《灌溉与排水工程设计规范》公式计算作物灌水率。 For I = 1 To 作物数量 For J = 0 To 200 If (灌水天数(I, J) = 0) Then Exit For 灌水率(I, J) = 作物比例(I) * 灌水定额(I, J) / 灌水天数(I, J) / 864 Next J Next I 3)繪制初步灌水率图 在“灌水率”工作表中,按照灌水日期与全年日期对应匹配输出各作物的灌水率,然后完成后绘制初步灌水率图。 For I = 1 To 作物数量 Cells(2, I + 2) = 作物类别(I) For J = 1 To 200 If (灌水天数(I, J) = "") Then Exit For For K = 0 To 灌水天数(I, J) - 1 Cells(灌水起始时间(I, J) + 2 + K, I + 2) = 灌水率(I, J) Next K Next J Next I S1 = Chr$(66 + 作物数量) Range("B2:" & S1 & "368").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlColumnStacked 4)修正灌水率图 在符合规范要求的情况下,可通过提前或推迟灌水日期、延长或缩短灌水时间、调整灌水定额等方法对绘制的初步灌水率图进行修正,并实现灌水率表和灌水率图的动态调整,进而获得设计灌水率图。 5)计算作物月净耗水量 同时,在灌区规划设计中,需进行水资源供需平衡分析评价,利用该程序可快速计算出各作物月净耗水量,可有效提高计算效率。其方法为,在步骤3中循环语句内添加如下语句:Cells(灌水起始时间(I, J) + 2 + K, I + 2) = 灌水定额(I, J) / 灌水天数(I, J),该语句用于计算、输出各作物在不同日期的灌水定额,然后按以下程序可计算各作物月净耗水量,并在“月净耗水量统计”工作表中实现数据输出功能。 For I = 1 To 作物数量 s = 0 For J = 0 To 11 月灌水量(I, J) = 0 For K = 0 To Months(J) - 1 月灌水量(I, J) = 月灌水量(I, J) + Cells(3 + K + s, I + 2) Next K s = s + Months (J) Next J 月灌水量(I, J - 1) = 月均灌水量(I, J - 1) Next I For I = 1 To 作物数量 Cells(2 + I, 1) = 作物类别(I) Cells(2 + I, 2) = 灌溉面积(I) For J = 0 To 11 Cells(2 + I, 3 + J) = 月灌水量(I, J) * 灌溉面积(I) Next J Next I 3算例分析 以南疆某中型灌区规划设计为例,介绍运用该程序绘制灌水率图。该灌区种植作物主要有果园、棉花、小麦等7种,灌溉模式有节水灌和地面灌。输入灌溉制度后,直接单击程序设计的按钮命令,即可运行,绘制出初步灌水率图,并通过提前或推迟灌水日期,动态调整确定设计灌水率图,同时获得各作物月净耗水量。最终的设计灌水率图见图1。 4结束语 本程序通过EXCEL VBA编制程序读取EXCEL表中的灌溉制度数据,计算各种作物播前灌水及生育期内各次灌水的灌水率,输出全年各灌水时间内对应的作物灌水率,自动绘制灌区年度初步灌水率图,并实现动态修正功能,同时,计算出作物月净耗水量。该方法能够快速地解决灌水率图绘制中烦琐、重复的规划设计工作,通用性强,可极大地提高工作效率。 参考文献: [1] GB 50288-99灌溉与排水工程设计规范[S] .北京:中国计划出版社, 1999. [2] 水利部水利水电规划设计总院.水工设计手册第九卷灌溉、供水[M] . 2版.北京:中國水利水电出版社,2014. [3] 汪志农.灌溉排水工程学[ M] .北京:中国农业出版社, 2003. [4] 龚沛曾.Visual Basic程序设计简明教程[M].2版.北京:高等教育出版社,2006. [5] Excel VBA程序开发自学宝典[M]. 3版.北京:电子工业出版社,2014. [6] 邱卫国,房宽厚. 修正灌水率图的新方法[J]. 河海大学学报,1995(5). [7] 张宇亮,张礼兵,周玉良,等. 基于改进加速遗传算法的作物灌水率图修正研究[J]. 灌溉排水学报, 2015(11) [8] 杨强胜,张礼兵,陈得阳,等. 基于EXCEL的作物灌水率图自动绘制与修正[J]. 中国农村水利水电,2011(6). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。