湖库富营养化状态的快速评价
2014-12-01白爱民
白爱民
(云南省环境监测中心站,云南昆明650034)
近20年来,随着经济和社会的发展,江河湖海的富营养化也日益严重。据调查,我国有大小湖泊24800多个,而处于富营养化的占湖泊总量的65%,处于中营养化转化富营养化的湖泊占湖泊总量的20%[1]。水体富营养化不仅使当地饮用水源地受到威胁,水质普遍恶化,而且也制约了当地的社会经济的可持续发展和人民的生活[2],因此,对湖泊、水库富营养化程度做常规性评价对掌握水体富营养化及变化情况十分重要,也是环境监测部门的常规例行工作之一。
水体富营养化(eutrophication)是指水体中含有过多的氮、磷等可溶性营养物质,导致水体中的藻类及其他浮游生物迅速繁殖,水体溶氧量下降,水质恶化,鱼虾等生物大量死亡的现象[3]。湖泊、水库富营养化程度的评价一般采用综合营养状态指数法。由于计算公式较复杂和麻烦,不仅工作量大,而且极易出现错误[4]。
Microsoft EXCEL是使用最广泛的电子表格软件之一,它在数据综合管理和分析方面具有功能强大、技术先进、使用方便等特点。但很多工作人员使用EXCEL仍停留在初级水平,找出一种简单、易用的求解湖 (库)富营养化指数方法是很有必要的。
1 湖 (库)富营养化程度评价方法
1.1 评价指标
湖泊 (水库)富营养化状况评价指标有五项:叶绿素a(chla)、总磷(TP)、总氮(TN)、透明度(SD)、高锰酸盐指数(CODMn)。
1.2 计算公式
湖泊 (水库)富营养化状况评价方法是综合营养状态指数法,其计算公式为:
式中:TLI(∑)-综合营养状态指数;
Wj-第j种参数的营养状态指数的相关权重;
TLI(j)-代表第j种参数的营养状态指数。
以chla作为基准参数,则第j种参数的归一化的相关权重计算公式为:
式中:rij-第j种参数与基准参数chla的相关系数;
m-评价参数的个数。
中国湖泊(水库)的chla与其它参数之间的相关关系rij及见表1。
表1 中国湖泊(水库)部分参数与chla的相关关系rij及值
表1 中国湖泊(水库)部分参数与chla的相关关系rij及值
注:引自金相灿等著 《中国湖泊环境》,表中rij来源于中国26个主要湖泊调查数据的计算结果。
参数 chla TP TN SD CODMn rij 1 0.84 0.82 -0.83 0.83 1 0.7056 0.6724 0.6889 0.6889 r2 ij
各项目营养状态指数计算:
(1)TLI(chla)=10×(2.5+1.086×ln(chla))
(2)TLI(TP)=10×(9.436+1.624×ln(TP))
(3)TLI(TN)=10×(5.453+1.694×ln(TN))
(4)TLI(SD)=10×(5.118-1.94×ln(SD))
(5)TLI(CODMn)=10×(0.109+2.661× ln(CODMn))
式中:叶绿素a(chla)单位为mg/m3,透明度(SD)单位为m;其它指标单位均为mg/L。1.3 湖泊(水库)营养状态分级
采用0~100的一系列连续数字对湖泊(水库)营养状态进行分级:
TLI(∑)<30 贫营养(Oligotropher);
30≤TLI(∑)≤50 中营养(Mesotropher);
TLI(∑)>50 富营养(Eutropher);
50<TLI(∑)≤60 轻度富营养(light eutropher);
60<TLI(∑)≤70 中度富营养(Middle eutropher);
TLI(∑)>70 重度富营养(Hyper eutropher)。
在同一营养状态下,指数值越高,其营养程度越重。
2 EXCEL自定义函数及其优势
EXCEL有强大的函数库,内置函数使用也很方便,不过EXCEL的内置函数常常不能满足具有特殊性和专业性的计算任务,这时,就可以通过定义自己的函数来解决问题。
EXCEL自定义函数是使用者预先定义,可执行计算、分析等处理数据任务的特殊公式。自定义函数是用通用应用程序脚本编程语言VBA(Visual Basic for Application)创建的。自定义函数和内置函数一样,由函数名、括号及括号内的参数组成。一个函数只有唯一的一个名称,它决定了函数的功能和用途。参数是函数中最复杂的组成部分,它规定了函数的运算对象、顺序或结构等,使用户可以对某些单元格或区域进行处理。
使用自定义函数还有下面优点:
(1)自定义函数像EXCEL内置函数一样简单易用;
(2)自定义函数能满足具有特殊性和专业性计算任务的需要,功能比内置函数更强大,使用更灵活;
(3)有多种方法来输出和调用自定义函数,易于在同行业和有同样需求的部门推广使用;
(4)自定义函数可包含多个参数,函数名和参数名可用汉字或英文字母表示,增加报表的可读性。
3 自定义函数的编写、保存与使用
3.1 编写自定义函数
(1)启动EXCEL,选择菜单“工具→宏→Visual Basic编辑器”命令(或按下键盘Alt+F11组合键),打开Visual Basic窗口。
(2)选择菜单 “插入→模块”命令,于是得到“模块1”,将“模块1”改名为“Eutro模块”(见图1左侧),(取富营养化的英文前5个字符作为模块名。在代码窗口完成自定义函数的编写(见图1右侧。本例中只保留了自定义函数的格式,省略了代码部分)。
(3)自定义函数的编写由“Function”开始,后跟函数名和括在括号中参数,并可明确自定义函数返回值的数据类型,以“End Function”语句结束。开始语句和结束语句之间 (图1中省略部分)是实现自定义函数功能的代码或说明。本例中两个自定义函数名为“EutroIndex”(富营养化指数)和“EutroState”(富营养化程度),均有5个参数:Chl,TP,TN,Tr和COD,参数名与湖(库)富营养化状况评价指标中的英文符号基本一致,方便记忆,使用时也不易弄错顺序。
3.2 保存自定义函数
完成 “富营养化指数”和 “富营养化程度”自定义函数的编写与调试后,为方便推广或在以后的工作中使用,可将模块以文件的形式保存。方法:鼠标右键点击该模块——选择导出文件——选择拟存放文件的目录并输入文件名 (本例使用缺省文件名“Eutro模块.bas”)后保存即可。见图2和图3。
3.3 导入自定义函数
当需要在EXCEL数据报表中使用自定义函数时,须先将自定义函数模块导入。方法:打开数据报表——按Alt+F11(组合功能键)——在Visual Basic窗口的文件菜单中选择“导入文件”(见图4)——选择模块保存的文件夹和文件名——“打开”该文件即完成模块的导入。
3.4 使用自定义函数
自定义函数导入到EXCEL工作薄后,就可像内置函数一样使用了。在 “AD9”单元格输入计算富营养化指数的公式“=eutroindex(AA9,I9,J9,Z9,E9)”(见图5的公式栏),公式中引用的单元格按顺序分别代表了湖库1的参数:叶绿素a、总磷、总氮、透明度和高锰酸盐指数 (为使自定义函数的使用更简明,本例隐藏了EXCEL工作表中无关的行和列)。同理,在 “AE9”单元格输入描述富营养化程度的公式“=eutrostate(AA9,I9,J9,Z9,E9)”,就可获得第一个湖库的评价结果。通过公式复制粘贴 (或句柄拖动方式)快速输入公式后,整张报表的富营养化评价完成(见图5)。
本例中,使用自定义函数计算出了富营养化指数,对富营养化程度给出了文字描述。在报表中,数据缺测时用 “-”表示,当参与计算的参数出现缺测时,富营养化指数用红色的 “(100)”(负一百,)表示,富营养化程度用 “缺项”描述。
3.5 自定义函数的推广
如果想要其它人员 (或在其它计算机上)使用自定义函数,只要把保存的模块文件 (本例为“Eutro模块.bas”)发送给推广对象,再按上面叙述的方法,将模块导入到拟评价富营养化程度的EXCEL文件中即可。当然,也可使用加载宏文件的方式来保存和使用自定义函数,但使用方法更复杂一些。
4 结语
监测和评价湖 (库)的富营养化程度是环境监测部门的常规例行工作之一。评价工作涉及的指标多,计算公式复杂。EXCEL功能非常强大[5],但很多使用者只会分步计算,工作量很大,远没有体现出EXCEL的优越性。本文介绍了评价湖(库)的富营养化程度的Excel自定义函数,以及函数的编写、保存、导入与使用方法。自定义函数能够实现复杂的数据处理与分析,象EXCEL的内置函数一样简单直观,使用方便,且易于推广。利用EXCEL的引用功能,可方便快捷地完成大量重复计算的公式输入 [6],快速获得多个湖 (库)的富营养化评价结果。
[1]刘光钊.水体富营养化及其藻害 [M].北京:中国环境科学出版社,2005.
[2]刘慧.水体富营养化及其防治[J].应用能源技术,2006,(5).
[3]谢小东.水体富营养化及其治理措施 [J].城市建设理论研究,2013,(21).
[4]郑婷婷.EXCEL在湖泊\水库水质富营养化程度评价中的应用[J].城市建设理论研究,2013,(43).
[5]张迎新.EXCEL2003函数应用完全手册[M].2004
[6]白爱民.EXCEL与底泥数据的分析[J].环境科学导刊,2010,29(5):109-112.