雷勇 陈宫 张文成
摘 要: 保护水资源是环境保护的重中之重。利用React、Antd等前端框架和Spring、Spring MVC、Mybatis等服务端框架,设计实现在线水质监测系统,为用户提供监测数据的获取、存储、分析,以及数据可视化和更深层次的预测服务,同时为管理者和决策者提供更加精准科学的数据参考。
关键词: 水质监测; SSM; React; 预测
中图分类号:TP391 文献标识码:A 文章编号:1006-8228(2022)05-52-04
Online water quality monitoring system based on regression prediction
Lei Yong Chen Gong Zhang Wencheng
Abstract: The protection of water resources has become the top priority of environmental protection. The online water quality monitoring system is designed and implemented by using front-end frameworks such as React and Antd, and server-side frameworks such as Spring, Spring MVC and Mybatis. It can provide users with monitoring data acquisition, storage, analysis, data visualization and deeper prediction services, so as to provide more accurate and scientific data reference for managers and decision makers.
Key words: water quality monitoring; SSM; React; prediction
引言
水质监测系统可对水质污染情况自动监测,并及时发出预警,追踪污染源,提供水质数据的获取、存储、分析和数据可视化,以及预测服务,为水环境保护工作带来极大的便利。自1998年以来,我国已先后在七大水系的十个重点流域建成了100个国家地表水水质自动监测站。各地方根据环境管理需要,也陆续建立了400多个地方级地表水水质自动监测站,实现了水质自动监测周报[1]。
水质监测技术的逐步应用,为环境管理工作提供了坚实的数据支持,在重点流域和工程建立水质监管、污染事件预警以及饮用水安全保障等方面发挥着重要的作用[2-3]。本系统的设计与实现是结合现有水质监测系统的优缺点,在原有功能的基础上添加具有特色的预测功能和直观的数据可视化界面,为水质环境管理者和决策者提供更加直观和科学的数据监控平台。
1 系统架构设计
系统采用B/S架构进行开发设计,同时整体实现前后端的分离。
1.1 前、后端技术架构
前端采用React框架,由于其自身的高性能特性使得所编写的前端应用相比于传统HTML、CSS、JavaScript所编写的前端应用有着更好的性能体验。除此之外,还采用蚂蚁集团所开源的Antd组件库来进行前端页面的开发,在提高开发效率的同时还能带来更好的视觉体验。系统服务端采用Spring、Spring MVC、Mybatis来编写,持久层采用MySQL数据库。
1.2 系统架构的特点
采用浏览器/服务器结构。由于浏览器小巧灵活、运行速度快且占用CPU资源较低,同时还能在不同的操作系统上运行,这些都成为这种架构的优点之一。除此之外,B/S架构还具有运营和维护成本较低、开发周期短等特点。从系统数据采集点数量通常较多、软件所运行的平台不统一、软件更新迭代较快、实际开发周期短等特点来考虑,B/S架构更适合本软件系统的使用场景。
2 系统功能需求分析及概要设计
本系统结合实际使用情况,前端主要功能模块为监测点管理模块、数据可视化面板模块、数据分析与展示模块、水质预测预警模块、个人中心模块、登录模块等;由于采用前后端分离的模式,后台主要功能包括对前台发送的请求数据进行收发、数据处理、数据存储等。系统主要功能如图1所示。
3 系统详细设计
3.1 监测点管理
由于在实际使用时需要大量数据采集仪提供监测数据,因此需要对监测点进行统一管理。通过此模块可对监测点进行增加、删除、修改操作,同时,通过列表的方式可以直观地了解监测站中各个数据监测点信息,包括站点所属区域、站点监测类型、站点状态、站点编码、站点创建时间、站点备注等。
3.2 数据可视化面板
數据可视化面板方便用户对大量数据进行直观认识。通过可视化图表的方式能够很快地提取常规数据列表所不能展示出的信息,同时也能带给用户较好的视觉体验。
本模块设计了站点信息可视化和监测数据可视化两部分。其中,站点信息可视化将站点位置信息通过接入高德地图标点的方式进行展示,监测数据可视化主要是通过可视化图表进行数据展示。
采用阿里开源的AntdV数据可视化开源框架,通过获取当前站点总数信息,并通过轮询的方式实现实时数据展示效果。站点地图的展示是通过使用AntV中的点标注图组件,通过传入每个站点位置坐标值将监测点的地理信息标记在地图中,方便用户直观地从现实地图上看到监测点的分布。
3.3 数据分析与展示
数据分析与展示模块是对数据可视化面板的补充。通过数据分析,来挖取更深层次数据信息,以便用户进行参考决策。首先,主要展示污染物近期变化情况。例如,周同比增长、环比增长从而展示出污染物近期的增长状况。其次,对监测站整体数据进行分析,其中包括监测站整体流量统计、污染监测类型统计、整体合格率统计等。通过这些数据管理员可以快速了解到目前监测站的负载情况以及监测的污染物类型情况,从而可以据此增加或删除某些监测点来实现效率最大化。另外,对污染物近期合格率进行详细统计,展示出各个污染物的详细数据,同时通过与整体合格率进行参照,可以快速定位污染问题。
3.4 水质预测预警
3.4.1 预测模块设计
通过对历史数据的分析训练,使程序拥有一定的“经验”,从而对未来的数据变化做出预测,方便用户提前做出应对策略[4]。本模块对未来一周的数据情况进行预测,结果通过热点图的方式进行展示。其中,颜色越深代表数值越大,结合热点图的优点用户可以直观地看到未来一周的数据变化情况。此外,模块也会对预测结果进行判断,若有超标风险会及时对用户进行提醒。
3.4.2 预测算法设计
模块采用线性回归模型进行数据预测。回归问题是研究自变量和因变量之间的关系,从而对未来数据进行预测的一种数据模型。将历史数据代入线性等式,利用最小二乘法或梯度下降法得到系数后即可预测新自变量的变化趋势[5]。
有公式[y=kx+b],当知道参数k和b的情况下,任意一个x值都可以得到y的值,那么这个式子就是线性的。从函数图形来看,线性函数是一条直线;从形式上看,只要函数满足图2这种形式就是线性的。因此,线性回归就是通过数据集训练后,找一个形式像线性方程的函数来拟合数据实现数据预测的过程。
通过历史数据对预测模型进行训练,将实际数据和预测数据进行对比得到预测误差,最终把所有实际和预测之间的误差加在一起就可以量化实际数据和预测数据之间的误差。然后,结合数学模型得到线性回归的损失函数,见公式⑴。
⑴
当损失函数得到的值越小,就说明找到的直线越能拟合数据,就可以将参数求解问题转换为求最小误差问题。常见获得最佳拟合线的方法有最小二乘法和梯度下降算法等。本文采用最小二乘法来获取最佳拟合线。
对于一个样本集尝试用[y=ax+b+e]去进行拟合可以得到公式⑵。
⑵
把所有的[e]都求和构造一个函数,见公式⑶。当Q最小时即可得到最佳拟合的直线,同时也可求导得到a、b。
⑶
[R2]可用来评估拟合程度,见公式⑷。其可以解释为数据集中能够被模型所解释的方差占数据总方差的比重,因此,值越接近1,说明模型对数据的拟合程度越高[6]。
⑷
预测模型的主要代码为:
/* 训练得到预测参数a、b */
public void getAB() {
for(DataNodedataNode:list) {
sumX+=dataNode.getX();
sumY+=dataNode.getY();
sumXY+=dataNode.getXY();
sumX2+=Math.pow(dataNode.getX(), 2);
}
this.alpha=(((sumY*sumX)/n)-sumXY)/
(((sumX*sumX)/n)-sumX2);
this.beta=(sumY-this.alpha*sumX)/n;
}
/* R2評估拟合程度 */
public void getR2() {
for (DataNodedataNode:list) {
sumY+=dataNode.getY();
}
doubleavgY=sumY/list.size();
for (DataNodedataNode:list) {
num+=Math.pow((dataNode.getY()-(dataNode
.getX()*this.alpha+beta)), 2);
den+=Math.pow((dataNode.getY()-avgY), 2);
}
this.r=1-(num/den);
}
至此,可以使用更多的环境数据进行训练,从而得到所需的环境数据预测模型。若误差较大还需要加上漂移因子来纠正预测数据,最终实现数据预测。
4 系统实现环境与结果展示
系统前台使用React、Antd、AntdPro和Node.js开发,服务器端采用Java技术。由于高性能程序的需求,后台程序结合Spring、Spring MVC、Mybatis框架开发,数据存储采用MySQL数据库。系统监测点管理和数据可视化面板如图3所示,数据分析与展示如图4所示,水质预测预警如图5所示。
5 结束语
本文从实际水质监测工作出发,采用React、Java、SSM以及前后端分离的架构模式进行在线水质监测系统的设计与实现,并结合回归模型实现监测数据的预测功能。在满足用户工作需求的同时提高了用户体验,一定程度上方便了环境监测工作。未来将结合实际使用情况进一步改进系统功能,同时在水质预测方面选择更加精确的预测模型进行优化。
参考文献(References):
[1] 孙海林,李巨峰,朱媛媛.我国水质在线监测系统的发展与
展望[J].中国环保产业,2009(3):12-16
[2] 夏文文.地表水水质自动监测系统建设及运行管理中若干
问题的探讨[J].清洗世界,2020,36(11):102-103
[3] 成思梦.基于在线监测的湖泊水质预测及评价研究[D].武汉
理工大学机电工程学院,2019
[4] 陈聪.基于多元线性回归模型的深圳市空气质量实证分析[J].
科学技术创新,2021(9):29-32
[5] 庞铖铖,戎袁杰,刘昕,等.基于线性回归和MLP神经网络的
招标采购预测模型[J].宁夏电力,2021(1):12-17
[6] 廖黎晖.多元线性回归分析在成本预测中的应用[J].郑州航
院报,1984:50-55
收稿日期:2021-09-24
*基金项目:广西高等教育本科教学改革工程项目(2021JGB200); 广西高等教育本科教学改革工程项目 (2020JGB211)
作者简介:雷勇(1997-),男,陕西汉中人,本科,主要研究方向:计算机应用。
通讯作者:陈宫(1976-),男,广西桂林人,硕士,副教授,主要研究方向:计算机应用。