一、前言
随着工业化和城市化的快速发展,我国的水资源污染问题日益严重。为了有效保护水资源,维护水生态环境,我国提出了“河长制”这一政策。河长制是指由地方各级党政主要负责人担任“河长”,负责组织领导相应河湖的管理和保护的一项制度。然而,如何有效实施河长制,及时发现和解决水污染问题,成为了一个重要的研究课题。尤其是在大数据技术日益成熟的今天,利用大数据技术构建河长制大数据监测平台,对于提升河长制实施效果,具有十分重要的意义。
目前,虽然有些地方已经建立了河长制监控系统,但这些系统往往存在一些问题。首先,它们往往只能提供有限的实时监测数据,无法反映水质状况。由于监测设备的数量和分布有限,很难对整个流域的水质进行监测和管理。
其次,它们往往缺乏对监测设备的数据统计和分析,无法评估设备的运行状况和效率。目前很多监控系统只是简单地记录了设备运行的数据,而没有对这些数据进行深入的分析和研究。这使得我们无法了解设备的真实运行状况和效率,也无法及时发现和解决问题。
再次,它们往往缺乏对水质分类占比的统计和对污染超标的警告通知等功能,无法及时发现和解决水污染问题。在实际管理中,我们需要了解不同区域的水质状况,也需要知道哪些地方存在污染超标的情况。而现有的监控系统往往只能提供简单的数据统计和报警功能,无法满足实际需求。
本研究旨在构建一个基于大数据的河长制大数据监测平台,通过实时监测地图、点位监控实时数据、监测设备统计、水质分类占比统计、污染超标警告通知等功能,实现对水资源的监控和管理,为河长制的实施提供强有力的支持。具体来说,本研究的目的包括以下几个方面:
实现对全流域水质状况的实时监测和数据采集;
通过对数据的分析和管理,实现对监测设备运行状况的评估和优化;
实现对全流域水质分类占比的统计和分析;
实现对污染超标的及时发现和警告通知;
为地方各级党政主要负责人提供决策支持和参考依据。
本研究的意义在于利用大数据技术,提高河长制实施的效率和效果,保护水资源,维护水生态环境。同时,本研究也可以为其他领域的大数据应用提供参考和借鉴,推动大数据技术的进一步发展。具体来说,本研究的意义包括以下几个方面:
提高河长制的管理效率和管理水平;
为地方各级党政主要负责人提供科学决策支持和参考依据;
推动大数据技术在环保领域的广泛应用和发展;
为其他领域的大数据应用提供参考和借鉴。
二、开发环境
- 大数据技术:Hadoop、Spark、Hive
- 开发技术:Python、Django框架、Vue、Echarts、机器学习
- 软件工具:Pycharm、DataGrip、Anaconda、VM虚拟机
三、系统界面展示
- 基于大数据的河长制大数据监测平台界面展示:
四、代码参考
- 大数据项目实战代码参考:
def startTcpServer():
"""启动tcp服务
"""
# tcp 绑定的ip 地址
bind_ip = '192.168.123.200'
# tcp 绑定的端口
bind_port = 9997
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 将套接字与指定的ip和端口相连
server.bind((bind_ip, bind_port))
# 启动监听,并将最大连接数设为5
server.listen(5)
print("[*] 监听 %s:%d" % (bind_ip, bind_port))
# 服务端进入主循环,等待连接
while True:
# 当有连接时,将接收到的套接字存到client中,远程连接细节保存到addr中
client, addr = server.accept()
print("[*] 接受的连接来自: %s:%d" % (addr[0], addr[1]))
# 创建新线程,回发信息给客户端
client_handler = threading.Thread(target=handle_client, args=(client,))
client_handler.start()
def handle_client(client_socket):
""" 定义函数,回发信息给客户端
Parameters
----------
client_socket : [type]
连接的socket
"""
# 打印客户端发送的消息
while True:
request = client_socket.recv(1024)
data = json.loads(request)
print(data)
# 添加水质数据保存
addData(data["TU_value"])
# sendData = {
# "getData": 0
# }
# client_socket.send(
# json.dumps(sendData).encode('utf-8')) # 发送json信息
time.sleep(1)
def addData(w_turbidity):
"""添加水质数据
Parameters
----------
w_turbidity : int
水质数据
"""
# 打开数据库连接
db = pymysql.connect(host="127.0.0.1", user="root",
password="123456", database="waterdetect")
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = "INSERT INTO water_detect (w_turbidity) VALUES ( %s)" % (
w_turbidity)
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭数据库连接
db.close()
def listToJson(lst):
keys = [str(x) for x in np.arange(len(lst))]
list_json = dict(zip(keys, lst))
str_json = json.dumps(list_json) # json转为string
return str_json
def GetWaterInfo(sql):
return_json = ""
# 打开数据库连接
# db = pymysql.connect("127.0.0.1", "root", "123456", "waterdetect")
db = pymysql.connect(host="127.0.0.1", user="root",
password="123456", database="waterdetect")
cursor = db.cursor()
try:
# 执行SQL语句
cursor.execute(sql)
results = list(cursor.fetchall())
print(results)
return_list = []
return_dict = {}
for line in results:
return_dict = {
"name": str(line[2]),
"value": str(line[1])
}
return_list.append(return_dict)
print(return_list)
# 返回数据库读取数据列表
except:
print("Error: unable to water data")
db.close()
return json.dumps(return_list)
# return return_list
# 水质显示主页面
@app.route('/getdata', methods=['GET', 'POST'])
def getdata():
sql = "select wid, w_turbidity,w_time from water_detect"
data = GetWaterInfo(sql)
return render_template("index.html", data=data)
# 实时获取数据接口
@app.route('/data', methods=['GET', 'POST'])
def data():
# return 'hello world'
# sql = ""
sql = "select wid, w_turbidity, w_time from water_detect"
data = GetWaterInfo(sql)
return data
@app.route('/')
def return_hw():
return "hello world"
if __name__ == '__main__':
# 启动tcp服务
t = threading.Thread(target=startTcpServer)
t.daemon = True
t.start()
app.run(host='0.0.0.0', port=5000, debug=True)
五、论文参考
- 计算机毕业设计选题推荐-基于大数据的河长制大数据监测平台-论文参考:
六、系统视频
基于大数据的河长制大数据监测平台项目视频:
大数据毕业设计选题推荐-河长制大数据监测平台-Hadoop
结语
大数据毕业设计选题推荐-河长制大数据监测平台-Hadoop-Spark-Hive
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我