版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要当今信息技术快速进程,水文数据的采集和可视化成了现代水文学研究的重要课题,本项目主要想达成水文数据采集,预测和可视化的目标,凭借此设计了多功能的水文系统。这个系统设计时利用网络爬虫技术,从相关水文数据网站自动获取数据,还用Python编程语言,MySQL数据库加上Flask框架,对获取的数据做数据清洗,整理,存储和可视化表现,该系统借助对历史数据开展机器学习来分析和预测,让用户既能知晓历史水文情况又能预测未来的水文状况。本系统要应对用户的不同需求,于是设置了许多功能模块,用户登录注册模块,水文数据管理模块,水文数据可视化模块,预测模块等等。这些模块既能满足用户的数据处理和存储需求,又能把数据清楚地展示给用户,便于用户做数据分析和决策。本研究成果有力地支撑了水资源管理工作,经由形成这样一个结合式的水文数据采集与可视化系统,用户能更为高效地获取并分析水文信息,进而按照需求为改善水资源管理与利用赋予精确的数据,放眼未来,这个系统很可能会在水文研究及水资源管理范畴得到更全泛的运用,助力信息技术在水文领域进一步向前发展。关键词:水文数据;Flask;mysql;可视化;水文数据管理ABSTRACTWiththerapiddevelopmentofinformationtechnology,thecollectionandvisualizationofhydrologicaldatahasbecomeanimportanttopicinmodernhydrologyresearch,andthisprojectaimstoachievethegoalofhydrologicaldatacollection,predictionandvisualization,anddesignamultifunctionalhydrologicalsystemwiththispurpose.Thesystemisdesignedtousewebcrawlertechnologytoautomaticallyobtaindatafromrelevanthydrologicaldatawebsites,andalsousesPythonprogramminglanguage,MySQLdatabaseandFlaskframeworktoclean,organize,storeandvisualizetheobtaineddata,thesystemanalyzesandpredictshistoricaldatawiththehelpofmachinelearning,sothatuserscanknowbothhistoricalhydrologicalconditionsandpredictfuturehydrologicalconditions.Thesystemhastorespondtothedifferentneedsofusers,soithassetupmanyfunctionalmodules,suchasuserloginregistrationmodule,hydrologicaldatamanagementmodule,hydrologicaldatavisualizationmodule,predictionmoduleandsoon.Thesemodulescannotonlymeettheuser'sdataprocessingandstorageneeds,butalsoclearlydisplaythedatatotheuser,sothattheusercanmakedataanalysisanddecision-making.Theresultsofthisstudystronglysupportwaterresourcesmanagement,throughtheformationofsuchacombinedhydrologicaldatacollectionandvisualizationsystem,userscanobtainandanalyzehydrologicalinformationmoreefficiently,andthengiveaccuratedataforimprovingwaterresourcesmanagementandutilizationaccordingtoneeds,lookingtothefuture,thissystemislikelytobemorecomprehensiveinthefieldofhydrologicalresearchandwaterresourcesmanagement,andhelpthefurtherdevelopmentofinformationtechnologyinthefieldofhydrology.Keywords:hydrologicaldata,Flask,mysql,visualization,Hydrologicaldatamanagement.目录TOC\o"1-3"\h\u179231绪 论 绪 论系统背景随着人们改造自然程度的加深以及全球变暖问题愈发严重,全球水资源正面临着有史以来最为严重的危机,极端气候频发导致部分地区干旱与暴雨交替出现,工业废水、农业面源污染等严重污染水质,而人口增长及经济发展又带来用水需求急剧上涨,导致许多地方生活用水十分短缺,因此对水文数据的采集分析便成为一种可以预测水文情况、合理调配水资源和减少水灾害影响的重要手段,成为了关系人类生存和发展的重要话题。以前因为技术原因,我们采集研究水文数据困难重重,采用人工采集的方法不仅效率很低,而且所覆盖区域也十分局限,无法全面了解水文系统的状况。同时,对数据处理以及分析的过程中,人工判断主观性较高,并且会存在误差,使得研究结果的准确性和可靠性严重打折。但是在现在信息化快速发展的时代,人工智能有了翻天覆地的进步,大数据也在不断的成熟起来,在这些新的发展,给数据研究带来了全新的发展,使得各种数据研究更加准确,而且更为高效,在这个时代,许多领域的数据研究都进入到了一个崭新的时代,其中就包括我们息息相关的生活、生产和生态环境息息相关的水文数据的研究,水文数据研究也成为了学界和业界研究的热点REF_Ref18905\r\h[1]。回看传统水文数据研究,大多依靠人工手段来收集数据,像监测站点的数据定时汇总,关键河段水流量的即时人工记录等等,这样既浪费人力又耗时,而且因为采样频率低,数据采集点少,所以数据精度不够,误差大,人工处理和分析数据的方法也很难应对海量且复杂的水文数据,无法深入挖掘数据背后的隐藏规律和趋势,现在,大数据技术同水文数据研究紧密结合之后,这种状况就发生了根本改变,大数据技术有着很强的数据存储,处理和分析能力,可以对大量的水文数据展开高效的整合和分析,利用机器学习,深度学习等算法模型,找出数据中潜藏的模式和规律,给水文研究给予了更为科学,准确的依据,使得水文数据研究达到了质的飞跃。本系统的设计目的就是迎合这种技术发展的趋势,打造一个能够对数据进行采集、分析、预测以及可视化的综合平台,把现代先进的水文预测模型整合起来,充分利用气象数据,地理信息,历史水文数据,再结合前沿的数据挖掘和分析技术,深入探究水文变化背后的规律,给水资源管理,灾害防范之类的决策给予有力的数据支撑,而且,系统还会采用先进的可视化技术,把那些复杂多变,难以理解的水文数据变成直观易懂的图表和动态演示,消除数据和使用者之间的理解障碍,让不懂专业术语的人也能很快掌握数据背后的关键信息,从而极大增强了数据处理的直观性。采用这个系统以后,或许会在诸多方面取得明显成果,第一,就水文数据管理而言,达成数据自动采集,存储并加以分析,从而大幅改进数据管理效率,削减人工操作引发的误差和拖延,第二,关于水资源利用而言,凭借精确的水文预估和数据分析,给水资源的合理调配和改良调配赋予科学根据,提升水资源的利用效能,改善用水短缺状况,第三,在灾害防治方面,提前准确地预估洪涝,干旱之类的自然灾害,给有关部门争取更多应急反应时间,减小自然灾害造成的人员财产损失,从长远角度看,这个系统会为生态环境的守护和持续发展给予有力支撑,推动做到人与自然的和谐共处。研究意义科学决策与资源管理:此系统可以实时、正确地收集到有关水文的数据,并利用先进的预测模型来预见水文以后会发生哪些变化情况,比如水流量大不大,水位高不高之类的信息,而水系管理机构会根据这些水文信息来做合理规划,在城乡供应用水,灌溉农田,工厂用汽等方面,使水资源能够得到充分利用,优化水利工程运作计划,提升水资源利用率,达成水资源可持续开发利用。灾害预警与风险防控:及时精准的水文预测可以提前察觉到洪水,干旱之类的灾害苗头,给有关部门争取到宝贵的预警时段,可视化系统会把预测得到的结果用直观好懂的图表,地图等表现出来,这样决策者和民众就更容易明白灾害所波及的区域大小以及危害程度,利于制订恰当的应急计划,安排人群疏散事宜,调度救援物资,削减灾害造成的生命财产损失。生态环境保护:对水文数据展开长期观测及剖析之后,该系统就可体现河流,湖泊,湿地之类的生态环境的健康情形,针对水位变动给湿地生态体系造成的效应加以监测,为生态改良与守护供应数据辅助,有益于守住生态体系的均衡与安稳,保卫生态资源的丰富性。行业协同与发展:水利,气象,农业,能源等行业中,水文数据都有重要价值,这个系统可以打破不同行业之间的数据壁垒,做到数据共享和协同分析,促使不同学科交叉融合,给各个行业给予更全面,更精确的决策依据,带动相关产业共同发展,更新升级。数据驱动与技术创新:研究并搭建这个系统要融合传感器技术,通信技术,大数据分析,人工智能等众多先进技术,这有益于优化水文监测和预测的技术水准,而且能带动这些技术在别的领域得到应用与发展,促使产生更多的新想法和解决办法,给智慧水利,智慧城市建设赋予技术根基。1.3国内研究现状中国是一个地理多样性丰富的大国,虽然整体淡水资源总量相对较为丰富,达到约2.8万亿立方米,但由于地区发展不均、气候差异及人均资源占有量较低,部分地区面临严重的水资源短缺问题。尤其在北方干旱或半干旱地区,水资源的稀缺问题更为突出。所以我国积极研究水文数据,以求能实现对水资源的高效管理。其中主要由地方政府带头再加上相关机构的辅助,通过使用现代技术手段来优化水文数据研究能力,主要涵盖:水文监测网络的创建:淡水资源越来越紧张的时候,国家有关部门就开始着手形成水文监测网络,在全国范围内设立起水文监测网络,由流量监测站,水位监测站以及降水监测站等很多自动监测站点构成。数据集成与共享:国家和地方相关部门一起努力,创建了许多数据共享平台,这些平台包括“水利部水文信息中心”,还有地方水文监测系统,它们把分散的水文数据汇聚起来,放到一个统一的数据库里,这样做可以方便管理并且分析,借助数据集成和共享,水文监测网络在达成跨部门,跨地域协同治理的时候起到了重要作用,各个部门和地方政府可以共享资源,协调行动,一同应对各种复杂的水资源问题,当遭遇突发性水灾或者干旱等自然灾害的时候,数据共享平台就能给各方面给予重要的决策帮助,迅速做出回应并采取有效对策。水文模型构建与应用研究:随着水资源管理需求的增长,国内学者对水文模型的构建与应用展开了诸多探索与研究,这些模型有助于我们认识水文过程,也为水资源的管理,分配及生态环境保护给予了有力的科学支撑,近些年来,由于计算能力的加强和获取数据技术的进步,SWAT(土壤和水流转输模型),VIC(法规综合模型),HEC(洪水影响评估模型),HSPF(水文管理和评估模型)等众多水文模型被广泛应用REF_Ref17239\r\h[2]。1.4国外研究现状相比我国,国外在水文数据研究和应用领域的起步较早,技术手段和数据应用层面已经形成较为成熟的体系,其领先之处主要表现在以下几点:空间信息技术和智能装备不断迭代升级,遥感技术、无人机监测等先进手段正在改变水文数据采集的模式和效能,美国建立起了覆盖全国的立体监测网络,依靠高分辨率的卫星遥感系统,可以及时捕捉到大面积水域的水位、流量、水质变化情况,即便是偏远山区和广袤海洋也无法逃过它的“法眼”,气象站作为地面监测节点,通过高频次的数据采集,对卫星数据形成了有效的补充,在密西西比河流域的管理中,卫星遥感可以动态监测洪水淹没的范围,气象站可以采集降雨强度、风速风向等数据,两者结合,将洪水预警的时间从以前的数小时延长到了2-3天,水位预测的误差率也降到了5%以下。欧盟多国联手开发的无人机水文监测体系,装载了多光谱传感器和激光雷达,可以自由穿行于复杂地形当中,对小型流域以及城市内河展开细致巡查,及时传回水质参数和河道形态数据,从而弥补传统人工监测难以覆盖的盲区REF_Ref14250\r\h[3]。在数据可视化领域,国外的研究和应用一直走在前面,像D3.js、Tableau这样的交互式可视化工具,有着很强的数据处理能力和灵活的图形渲染能力,成了水文研究和管理的得力助手,美国地质勘探局(USGS)打造的国家水文可视化平台,把全国的水文监测数据汇集起来,用D3.js来模拟河流网络,用户可以自由切换时间维度,看不同季节或者年份的流量变化趋势,还可以通过交互式地图,直接看到流域内的水质分布热力图,点击任何一个监测点,就能得到详细的参数。Tableau在欧洲水资源管理当中得到广泛应用,荷兰政府借助此工具创建起防洪决策系统,把实时水位,气象预报,防洪设施状况等数据汇聚成动态仪表盘,决策人员通过拖拽,筛选等操作,可以迅速形成自己想要的分析图表,从而明显优化了应急应对速度,而且,虚拟现实(VR),增强现实(AR)技术也开始渗透到水文可视化领域,澳大利亚的研究小组开发出AR水文模拟系统,使用者戴上装置之后,就能看到虚拟水流在真实地形上流动的情形,给大众科普和学术研究赋予了新视角。1.5研究的发展趋势智能化与自动化发展:物联网技术快速发展,各类传感器和监测设备可以无缝衔接成网络,实时监测水文数据变得可能,从水位,流速到水质等各方面数据采集会更加快捷准确,这种网络化的监测方式提高了数据获取的速度,也扩展了数据获取的范围,并且把人工智能(AI)技术同水文数据获取联系起来,可以在数据获取和预处理阶段实施智能分析,借助机器学习算法自动识别异常数据,提升数据品质,依靠深度学习技术,可以对复杂的水文过程加以模拟,从而改善预测能力以及自动化程度。数据整合:把传统的水文数据,像以往的测量记录,气象资料这些,和新出现的智能化获取数据,像当下无人机监测的即时数据,物联网传感器收集到的数据等融合起来,就会产生出更高级别的数据集合,这种数据整合有益于改进水文预测模型的准确度和稳定度,把传统水文数据和智能化获取的数据整合在一起,在这个基础上塑造起完整的融合模型,从而优化水文预测模型的精确度。可视化技术的升级:未来的水文数据可视化技术会更看重用户体验,交互性得到加强以后,用户就能按照自己的想法随意探究和剖析数据,像用户点几下或者滑动几下,就可以毫不费力地选出不一样的要素,看清楚不同因素带来的影响,从而加深对水文数据的认识REF_Ref14440\r\h[4]。并且可视化工具将集成先进的预测模型,可以具备智能回答功能,帮助用户获取实时水文信息,并对未来趋势进行预测。这类工具能够通过自然语言处理技术,理解用户的查询并提供相应的可视化数据结果,提升用户的决策支持能力。1.6论文的组织结构本篇论文总共分了七个章节,每章的安排如下:第一章为绪论,主要讲解了系统的研究背景、研究意义、国内外的研究现状以及未来的发展趋势。第二章为开发技术和工具介绍,主要介绍了包括Python语言、Flask框架、ECharts图表、Request库和决策回归树等技术,PyCharm、HBuilder、Navicat等工具。第三章为系统需求分析和可行性分析,主要介绍了系统的功能需求如采集功能、预测功能、可视化功能等和非功能性需求如安全性、拓展性等。第四章为系统设计,主要内容为架构设计、功能设计和数据库设计,介绍了主要的架构和系统功能。第五章为系统实现,主要介绍了爬虫的实现原理和流程、数据的清洗和存储、模型的对比与选择、可视化图表的实现与展示、预测的结果分析、用户的管理模块、数据的管理模块、公告的展示与管理、爬虫日志的管理。第六章为系统测试,启动环境后对各个模块进行测试确保系统能正常运行第七章是总结,总结成果并提出未来展望。1.7本章小结本章节通过对水文数据研究的背景,为后面的设计奠定基础。通过国内外对比,能够清楚地了解到目前水文数据研究存在的不足和未来的发展趋势,给后面的系统实施带来公分的思考和动力,这不仅有利于水文科学的发展,也有利于水资源的科学管理和有效利用。2开发技术及工具本章节主要介绍开发技术和开发工具包括Python语言、Flask框架、Echarts、Scikit-learn等技术和Pycharm、HBuilder、Navicat等工具。2.1开发技术2.1.1Python语言Python
是一种面向对象的、解释型的、通用的、开源的脚本编程语言。它不仅简单易学而且标准库和第三方库十分丰富,可以用来开发小工具也能用来开发企业级的应用。当前随着人工智能和大数据的发展,python功能也越来越强大再加上社区学习资源丰富非常适合初学者学习和专业开发者,使它成为了许多开发人员的首选语言。2.1.2Flask框架Flask是一个轻量级的Web框架,用Python来编写,很灵活,也很容易使用,Flask有一个模块化的设计,可以用蓝图(Blueprints)去管理比较大的应用程序,还拥有很强的路由能力,Flask自带一个开发用的服务器和一个调试器,这些都能方便开发者进行开发和调试。Flask有很多扩展库,用户根据自己的需要添加功能。Flask的文档非常详细,而且社区很活跃,所以很适合做快速原型开发和一些小到中型项目REF_Ref12402\r\h[5]。本系统中Flask提供数据操作接口,在用户管理模块中的用户输入输出和显示的数据都是由layui来实现后台管理页面,然后通过js实现动态网页。可视化功能模块中使用Flask框架搭建一个web服务器端的应用程序,接收用户请求并返回水文数据和可视化页面。2.1.3EchartsECharts属于开源可视化图表库,其交互性很强,图表类型也很丰富,可供用户选用。该库支持多种数据格式,渲染性能高,用户使用时可按自身需求灵活安排,也能处理大规模数据REF_Ref12595\r\h[6]。而本系统中的可视化图表都是由Echarts构建。2.1.4Request库Request库是Python里做HTTP请求常用的工具,它的功能很强大,使用起来也挺方便,支持GET,POST,PUT这些请求类型,可以灵活设置请求参数,处理响应数据也很方便,在网络数据采集,调用API,提交数据这些场景里用得比较多,只需要简单的代码就可以跟Web服务器交换数据,像发送requests.get()去获取网页内容,用requests.post()去提交数据之类的。2.1.5决策回归树Request库是Python中用于HTTP请求的常用工具,功能强大,使用方便,支持GET、POST、PUT等多种请求类型,可以灵活设置请求参数,方便处理响应数据,在网络数据采集、API调用、数据提交等方面广泛使用,只需简单的代码就可以与Web服务器进行数据交互,比如发送requests.get()来获取网页内容。决策回归树作为基于决策树的回归算法,通过对输入特征的取值进行划分,以每个叶节点为基础开展回归预测,从而实现对输出的预估。它的主要想法是,把数据集慢慢拆分成越来越小的部分,然后在每个小部分里试着用简单一点的线性回归模型来拟合,再按照最小化拟合时出现的错误的原则去划分数据集,这个划分的过程一般会用递归构建二叉树的方式展开,每一个节点表示一次数据划分,就这样一直分下去,最后在树叶上得到预测结果,这样就能对复杂的数据关系做出建模和预测。2.2开发工具2.2.1PyCharmPyCharm是一个免费的Python开发集成环境,虽然功能不如专业版那么强大但是它不仅是开源而且还是跨平台的适用于多种操作系统。PyCharm的功能也十分的强大,在对代码进行智能编辑时能将代码中空缺的部分进行自动的补充完整,并且在代码编写完成后开发者不仅能根据需要进行调试还能检查代码是否有语法错误和结构错误,提高了编码效率的同时还优化了用户体验,这些特点都使得它受到许多Python开发者欢迎。2.2.2HBuilder简介HBuilder是款着重于HTML5应用及小程序开发的工具,它也支持很多编程语言,JavaScript,HTML,CSS等。其功能非常丰富,比如可帮用户自动补全空白代码,即时展示预览界面,管理项目文件并执行版本控制等,这些功能让HBuilder界面很友好,较易上手,方便用户立即开发和调试移动应用,HBuilder支持不少跨平台方案,开发者借此能很快开展恰当于Android和iOS的应用,所以它是前端开发者和移动开发者热衷的选择。2.2.3Navicat简介Navicat功能非常强大,它支持多种数据库,MySQL,MariaDB等等。它有很直观的界面,方便用户做数据相关操作,比如建表建库,形成模型,备份数据等,Navicat有强大的可视化工具,还有数据同步,数据迁移功能,这样管理数据库就更高效,Navicat也支持团队协作,多用户管理,个人开发者能用,企业也能用。2.3开发环境开发环境版本/工具PYTHON3.6.8开发工具PyCharm操作系统Windows10内存要求8GB以上浏览器Firefox、GoogleChrome、Edge数据库MySQL8.0数据库工具NavicatPremium15项目框架FLASK2.4本章小结在这一章中对系统设计所需要使用到的技术和工具进行了较为全面的介绍,不仅有各工具版本需求的介绍还有开发环境的要求完善了技术需求3系统需求分析与可行性分析这个系统以形成和开展一套包含水文学数据收集,分析,预测和显示功能的解决方案为宗旨,给水资源的科学治理构筑牢靠的基础。其主要目标涉及:及时收集水文数据,精确预测未来走势,创建用户友好的可视化平台表现数据信息,优化用户体会和分析数据的能力,借助做到多用户管理和权限分级确保数据安全,合规。3.1功能需求数据采集:设计爬虫程序,对目标网站(主要是长江水文网)数据进行爬取.数据存储:将爬取到的数据储存在本地的数据库中,使用Navicat进行管理。数据预测:建立模型并基于历史数据,应用机器学习算法进行未来水文数据的预测,例如使用时间序列分析、回归模型等。数据可视化:使用HBuilder和Echarts实现可视化展示,包括多种可视化图表(如折线图、柱状图、热力图等),支持用户自定义数据展示。支持导出可视化结果为图片或报告。用户管理:用户分为管理员和普通用户。其中管理员具有系统登录、用户登录、公告管理、水文数据管理、数据可视化、数据预测、爬虫日志功能如图3.1,而普通用户则有注册登录、公告查看、水文数据可视化、数据预测功能如图3.2图3.1管理员用例图图3.2普通用户用例图3.2非功能需求塑造水文数据采集,预测以及可视化系统的时候,非功能需求主要集中在保障系统高效运行,操作方便以及数据可靠上,这些因素对达成准确预测和有效决策非常关键,下面是一些可能存在的功能性需求:定制化用户体验:系统要按照用户偏好,历史行为及反馈情况,动态调整服务,从而赋予个性化体验。实时数据分析与可视化报告:即时处理海量数据,生成直观图表,助力决策者迅速把握趋势与洞察安全性与隐私保护方面,要执行严格的数据加密和访问控制机制,保障用户信息安全,依照相关法律法规。可扩展性和灵活性方面。要设计模块化架构,这样方便日后添加功能,利于系统升级,还能适应业务规模改变。用户友好的界面与交互设计在于营造直观且易用的用户界面来改进用户体验,包含响应式设计,高效导航以及直观的反馈机制。3.3可行性分析3.3.1技术可行性数据采集:选择合适的水文学数据平台进行信息抓取,以获取准确可靠的数据资源数据格式:确保数据以JSON或CSV等通用格式呈现,对后续处理与分析至关重要预测模型:在水文数据开展分析与预测的时候,挑拣合适的机器学习或者统计模型非常重要。本系统所选择的是决策树模型和随机森林模型很受喜爱,因为它们在处理复杂数据关系的时候比较灵活有效。可视化技术:在设计可视化方案的时候,要考虑选择符合项目需求的工具比如D3.js和Echarts。其中D3.js适合创建高度定制化的动态交互视觉效果,而Echarts则含有丰富的内置图表类型,极易结合。用户界面:构建简洁易用的用户界面以优化数据分析体验3.3.2操作可行性从用户体验出发,该系统用了直觉式界面布局,有人机交互的高效机制,希望用户只要做些基本操作,就能有效完成数据可视化体现和深入分析任务。本平台用云端解决方案,用户不用操心本地软件部署和管理那些繁琐事,可以随时访问,开展水文数据分析和决策,这样就大幅改进了便利性和响应速度。3.3.3经济可行性从经济效益方面考虑,本项目采用了开源代码技术和社区共享工具,这样做有效地削减了研发费用,而且经由云服务模式开展部署,大幅减轻了购买和捍卫服务器的负担,也就缩减了对硬件投资的需求。3.4本章小结本章节介绍了系统的需求分析和可行性分析。其中需求分析从功能性需求和非功能性需求两个角度进行介绍,这里面功能性需求有采集、预测、可视化、公告管理、用户管理等,非功能性需求有用户体验、系统稳定、信息安全、集成能力、界面设计等。同时通过可行性分析从技术、操作、经济等角度进行分析,提升了系统的可实现性。4系统设计4.1架构设计在本水文数据采集预测与可视化系统中架构设计主要分为表示层、业务逻辑层、数据储存层和环境支撑层。数据主要运用爬虫技术对目标网站进行爬取,具有实时获取数据的功能并将获取到的水文数据放到以MySQL为主的数据库中存放。然后再通过python对获取到的水文数据进行处理与分析,再通过建模和机器学习来对未来水位的变化进行预测,然后再通过可视化技术将获取到的数据和预测结果分别展示出来。而在系统使用方面,用户分为管理员和普通用户,管理员能控制数据的更新,编辑公告和日志,而普通用户能查看公告和日志并选择自己需要获取的信息进行查看REF_Ref18467\r\h[7]。4.1系统架构图4.2系统功能设计在水文数据采集与预测系统中具有用户注册与登录、数据采集、公告模块、数据管理、可视化这几个模块,如图4.2水文数据采集预测与可视化系统功能结构图所示:4.2水文数据采集预测与可视化系统功能结构图用户模块包括了登录、注册、搜索、管理等功能为用户提供了一个完整的个人信息管理平台,是用户使用水文数据采集系统的入口。而用户又分为普通用户和管理员,管理员可以通过设定的权限对普通用户的信息进行修改、删除等操作。数据采集模块包含启动爬虫、爬虫日志、爬虫日志列表、爬虫日志管理等功能,其中启动爬虫功能负责爬虫程序的启动获取最新的数据,爬虫日志和爬虫日志列表的主要功能是为用户展示数据更新的日期,爬虫日志管理可以对日志进行编辑。该模块是整个系统的数据采集核心,管理员可以通过爬虫日志列表查看系统的爬虫状态和日志信息,也可以编辑和删除日志信息,以及启动爬虫任务。数据分析模块包含水文数据可视化和水文数据预测两个功能,是系统的核心功能之一。水文数据可视化功能包含了各种图表可以将大量的水文数据进行可视化展示,方便用户更直观、更便捷的了解数据。水文预测功能是通过对历史水文数据进行分析然后预测未来一段时间内的水文数据变化,包括水位、流量等信息预测。公告模块包含公告的查看、列表、添加、编辑等功能,普通用户在进入系统后可以查看公告和公告列表。管理员则可以通过添加、编辑公告告知用户系统的维护与更新。数据管理模块包含了列表、搜索、编辑和删除功能,列表功能负责将采集模块中获取到的数据展示出来,搜索功能可以让用户搜索自己需要的站点的水文信息,编辑与删除功能负责对不重要的数据进行编辑与删除。4.3数据库设计4.3.1系统关系图在系统中管理员对普通用户为一对多,而水文数据、公告数据、日志对管理员是多对一的关系,如图4.3.1系统关系E-R图。图4.3系统关系E-R图4.3.2数据表结构设计用户信息表包含了水文数据采集预测与可视化系统中的管理员和普通用户的基本信息,结构如表4.1所示:表4.1用户数据表结构字段名称数据类型字段内容主键设置非空idint系统自动生成是是accountvarchar用户账号否否passwordvarchar用户密码否否companyvarchar企业名称否否mailvarchar邮箱否否typeint0管理员,1普通用户否否statusint0禁用,1启用否否水文数据包含了水源地、水位、流量、时间、站点、编号等属性REF_Ref13042\r\hREF_Ref13042\r\h[8],如表4.2所示:表4.2水文数据结构表字段名数据类型数据内容主键非空ShuiyuandiVarchar水源地否否ShuiweiDecimal水位否否LiuliangInt流量否否TimeDatetime时间否否ZhandianVarchar站点否否BianhaoInt编号否否爬虫日志表用于记录系统数据采集模块爬虫运行的日志信息,数据表结构如表4.3所示:表4.3爬虫日志表字段名称数据类型字段内容主键设置非空IdInt 爬虫日志ID是是LogVarchar日志内容否否create_timeDatetime日志时间否否公告信息表用于存放系统中公告信息,数据表结构如表4.4所示:表4.4公告数据信息表字段名称数据类型字段内容主键设置非空IdInt公告ID是是titlevarchar公告标题否否contentlongtext公告内容否否user_namevarchar发布人否否create_timedatetime发布时间否否管理员信息表用于存放管理员信息如图4.5所示:4.5管理员信息表字段名数据类型数据内容主键非空admin_idINT管理员ID是是usernameVARCHAR(50)用户名否否passwordVARCHAR(255)密码否否emailVARCHAR(100)邮箱否否create_timeDATETIME创建时间否否4.4本章小结本章节在对系统的主要功能如采集功能、预测功能、可视化功能等进行简单描述的同时,还对数据库设计也进行了较为详细的介绍。5系统实现5.1水文数据爬虫构建5.1.1数据采集水文数据采集模块,也就是爬虫功能模块,它是系统获取数据的核心所在,更是系统开发的前置必要模块。毕竟,只有确保有数据可供使用,后续才能依据这些数据开展设计与开发工作。该模块的设计目的是为了便捷地获取水文数据。这里将长江水文网各站点的水情数据作为目标采集对象(数据源:/sqindex.html)。通过定时爬取的办法,从多个数据源站点获取水情数据,之后运用数据清洗的相关技术手段对数据进行处理,最终把处理规整后的数据存入数据库。核心的思路是借助bs4技术与requests技术来获取html文本,接着利用正则表达式对数据进行解析。图5.1长江水文网站网页结构图图5.2爬取结果图爬虫程序启动后,会先向长江水文网发送请求以获取网页数据,将响应内容转换为UTF-8编码格式的文本。之后,借助正则表达式从网页数据里提取所需的JSON格式数据,这些数据涵盖站点名称、水源地、水位、流入量和流出量等信息。关键代码如下:defflood_spider_main():sqlManager=SQLManager()count=0url='长江水文网'defflood_spider_main():sqlManager=SQLManager()count=0url='长江水文网'response=requests.get(url)response.encoding='utf-8'web_data=response.textweb_data=web_data[web_data.find('varsssq=')+11:]web_data=web_data[:web_data.find(';')]data=json.loads(web_data)sql_template="INSERTINTO`waterLevel`(`site`,`waterSource`,`datetime`,`waterLevel`,`flow`)\VALUES('%s','%s','%s','%s','%s')"forrecordindata:waterLevel=record['z']if'z'inrecordelse0#水位in_flow=record['q']if'q'inrecordelse0#流入量out_flow=record['oq']if'oq'inrecordelse0#留出量site=record['stnm']#站点名waterSource=record['rvnm']#水源地datetime=time.localtime(int(record['tm'])//1000)#时间戳datetime=format("%d-%02d-%02d%02d:%02d:%02d"%(datetime.tm_year,datetime.tm_mon,datetime.tm_mday,datetime.tm_hour,datetime.tm_min,datetime.tm_sec))在对水文数据的采集过程中,我对数据的清洗主要涉及了缺失值、重复值、异常值的处理。缺失值通过删除少量缺失行和利用均值、中位数填充;重复值则通过判断时间戳是否一致来进行处理,如果时间戳相同说明是同一个时间的重复数据选择直接删除;实际操作中,由于部分区域的水文数据确实没有多少变化可能会导致重复值过多,全部删除会导致数据量不足的问题,最后爬取到的一万多条数据清洗完后剩余九千条。数据清洗关键代码如下:data=pd.read_csv('swsj.csv')data=pd.read_csv('swsj.csv')#查看缺失值情况missing_values=data.isnull().sum()print("缺失值情况:")print(missing_values)#使用均值填充缺失值forcolumnindata.columns:ifdata[column].isnull().any():mean_value=data[column].mean()data[column]=data[column].fillna(mean_value)duplicate_rows=data.duplicated()print("重复行数量:",duplicate_rows.sum())data=data.drop_duplicates()#删除重复行data.to_csv('sj.csv',index=False)#保存清洗后的数据当数据清洗好之后程序会连接本地的MySQL数据库,为存储数据做好准备。对于每一个站点的数据记录,程序首先会判断这个站点是否有流入量或者流出量,如果有,那么就会查询这个站点最近一条数据记录的时间,然后将当前数据的时间戳和已经存在的数据记录中最新的一条数据的时间戳进行对比,如果当前数据的时间戳比已有的最新时间戳要大,说明这就是最新的数据,那么就将其插入到 MySQL数据库中,如果没有流入量或者流出量,那么就不做任何处理。在进行数据的插入时,程序使用了MySQL的事务,在插入数据的时候,如果出现异常情况,则会执行回滚操作,从而保证数据的完整,而且在程序运行的过程中,还会输出插入数据的站点名称以及插入的时间,这样就可以对程序的运行过程进行追踪,这样就可以达到对数据进行实时更新的目的XE"[1]"\t"请参阅"XE"[1]"\t"请参阅"。5.2预测模型建立5.2.1预测问题及目标水位预测与流量预测主要是利用河流或水库过去一段时间的水位、流量等多源信息来精准预测未来某一时刻或者某段时间内的水位涨落情况以及流量的大小和变化过程,为防洪调度、水资源调度、水利工程调度等提供重要的决策支持。5.2.2模型的选择在进行模型选择时主要考虑了三种模型,既线性回归模型、决策树回归模型、LSTM模型。通过对比均方误差MSE和平均绝对误差MAE来判断哪个模型的预测效果好,并在最终的预测模型选择上确定使用哪个模型。线性回归模型模型原理:线性回归模型假定自变量与因变量间存在着线性联系,用最小化误差的平方和的方式找出最佳拟合线(针对一元线性回归而言)或者超平面(针对多元线性回归而言)的系数。应用场合:被普遍运用到各类领域当中,比如经济预测、趋势分析以及物理实验数据拟合等方面,在水文范畴内可以创建起水位、流量等同降水、气温等事物之间的关联,进而执行一些简单的趋势预估操作。优点和缺点:其长处就是原理比较单纯,易于被人们所领会与达成,并且所需消耗的运算量并不大,能够给出很强的可诠释性,使得使用者一眼就可以看清楚各个自变量各自给因变量带来怎样的影响,不过它的缺点也是显而易见的,因为只能够处理线性的关系,所以对于非线性的数据来说就很难达到较好的拟合度,而且很容易被那些异常值所左右,整体而言其预测能力也较为有限。。决策树回归模型模型原理:决策树是基于树结构进行决策,每个内部节点是一个属性上的测试,分支是测试输出,叶节点是类别或值。通过对训练数据的学习,构建出一棵能够对未知数据进行分类或预测的树。在构建过程中,通常使用信息增益、信息增益比、基尼指数等指标来选择最优的划分属性,以使得划分后的子节点尽可能纯净。应用场景:适用于回归问题,在水文领域可用于根据不同的气象、地形等条件对水文事件(如流量、水位、洪水、干旱等)进行预测,或者对水文变量进行区间估计。优缺点:优点是模型结构直观,易于理解和解释,不需要对数据进行归一化等预处理,能够处理非线性数据和多分类问题,对缺失值不敏感。缺点是容易过拟合,特别是在数据量较小或特征较多的情况下,模型的稳定性较差,对训练数据的微小变化可能导致决策树结构的较大改变,泛化能力可能较弱。LSTM模型模型原理:LSTM是特殊的循环神经网络,通过引入记忆单元和门控机制解决了传统RNN中的长期依赖问题。记忆单元可以有选择地记住和忘记信息,通过输入门、遗忘门和输出门控制信息流动。输入门决定当前输入信息有多少要加入到记忆单元中,遗忘门决定要从记忆单元中忘记多少过去的输入,输出门决定记忆单元中的信息有多少要输出作为当前的预测结果。应用场景:自然语言处理、语音识别、时间序列预测等。水文学领域,利用它对于时间序列数据的强大处理能力来对水位,水流量等随时间变动的水文数据实行较为精准的预测,它能够捕捉到数据中的长时间趋势以及繁杂的季节波动。 优缺点:其一便是它能够很好的完成对长期依赖性的问题,对时间序列型的数据具备很好的建模实力,可自行识别出存在于数据当中的特征信息,毋须通过人工方式来实施特征提取工作,然而却也存在着一些负面之处,模型结构较为繁杂,其训练过程中所需要使用的数据数量庞大,所花费时日亦较长,并且计算成本同样很高,对于硬件有着一定需求,而且对于该模型本身的解读性并不佳,往往难以通过直观的方式来把握到模型的具体决策过程。5.2.3模型训练与对比水文数据流量和水位预测时,线性回归、决策树回归以及LSTM模型训练过程各有特色,LSTM常因处理非线性动态数据而表现良好,决策树擅长发现复杂联系,线性回归给予基本参照。在进行模型对比时先统一做数据准备与预处理工作,加载数据、分开特征和划分数据集,线性回归通过最小二乘法来学线性关系,决策树回归递归划分特征空间创建预测树,LSTM模型要归一化数据和重塑序列,依靠门控机制捕捉时间序列的长时依赖,训练完毕之后,均用均方误差评判性能,最后得到表5.1结果。表5.1不同模型评估表模型类型均方误差(MSE)平均绝对误差(MAE)线性回归102.453701350371097.783490774069204决策回归树71.374806743774476.902509344600202LSTM67.2854474450196856.401235458702315通过均方误差和平均绝对误差评估,LSTM模型误差最小,预测效果最佳,能有效捕捉水文数据动态特征;决策回归树次之,可处理复杂数据,捕捉非线性关系;线性回归误差最大,对非线性水文数据拟合不佳。并且因为线性回归对数据量要求不高,训练时间短,但模型准确性在本题中不如决策回归树和LSTM。决策回归树能适应各种数据量,通过调整树结构拟合数据,虽训练计算量比线性回归大,但相对LSTM较短。LSTM需大量数据训练,处理大规模数据计算量大,训练时间长。所以综合来看,从数据量和训练时间角度考虑,决策回归树模型优势明显,是较为合适的选择。5.2.4关键代码##线性回归模型linear_model=LinearRegression()
linear_model.fit(train_features,train_target)
linear_prediction=linear_model.predict(test_features)
linear_mse=mean_squared_error(test_target,linear_prediction)
linear_mae=mean_absolute_error(test_target,linear_prediction)#决策树回归模型tree_model=DecisionTreeRegressor()
tree_model.fit(train_features,train_target)
tree_prediction=tree_model.predict(test_features)
tree_mse=mean_squared_error(test_target,tree_prediction)
tree_mae=mean_absolute_error(test_target,tree_prediction)#LSTM模型fromsklearn.preprocessingimportMinMaxScaler
scaler_x=MinMaxScaler()
scaler_y=MinMaxScaler()
train_features_scaled=scaler_x.fit_transform(train_features)
train_target_scaled=scaler_y.fit_transform(train_target.reshape(-1,1))
test_features_scaled=scaler_x.transform(test_features)
test_target_scaled=scaler_y.transform(test_target.reshape(-1,1))5.3用户功能模块设计用户模块围绕普通用户与管理员用户两类群体展开设计。系统为用户提供登录、注册功能,用户可通过注册流程自主开通账号使用系统。在登录环节,系统会依据用户权限进行划分,验证通过后,将普通用户与管理员分别跳转至对应功能页面,实现差异化的使用体验与功能访问。在初次登录系统时需要注册用户账号,这里以管理员角度查看系统登录界面。图5.3登录界面用户功能模块包括用户登录、注册、用户管理功能,用户管理是管理员创建的可视化交互界面,便于管理用户信息,在用户登录环节,前端使用Layui来创建交互页面,可以轻松实现输入框、按钮、表单验证等,用户输入用户名和密码,点击提交,后端由Flask提供数据操作接口,接收前端提交的用户名和密码,并与数据库中的数据进行比对,如果匹配,则表示用户身份验证通过,返回登录成功提示,否则返回登录失败提示。用户注册方面,前端同样是用Layui来设计页面,方便用户输入注册信息,而后端的Flask接口负责接收这些信息,并把它们存进数据库里,从而完成用户的注册,整个用户功能模块靠前后端的合作,既给用户带来方便的登录和注册服务,又给管理员赋予了有效的用户管理手段,实现页面如下图5.4所示。图5.4管理员管理界面图5.5用户模块核心代码图5.4可视化模块5.4.1页面展示实时站点数据分析这张图涵盖了长江干流、乌江、洞庭湖湖口、鄱阳湖等多个水源地的站点信息,将各站点的流量分布以饼图的形式展示出来。对图片进行分析得知:不同站点水位差异显著,如寸滩水位达162.50m,而大通仅6.33m。这受地形地貌、河道形态、汇流情况等多种因素影响,上游站点水位普遍较高,下游站点相对较低。并且流量数值波动大,大通流量达19400m³/s,武隆仅606m³/s。反映出各站点的来水情况、集水面积以及河道容纳能力等存在差别,长江干流站点总体流量大于支流站点。如下图5.6所示。图5.6实时站点数据图站点实时流量、水位排行图分析对流量进行分析得知不同站点流量差异极大。大通站点流量最高,远超其他站点,处于领先地位,造成这一情况的主要原因可能是因其处于关键流域位置,集水区域大或有重要支流汇入。而九江、汉口等站点流量处于第二梯队,流量相对可观,反映这些站点所在流域段也有一定径流汇聚能力。而排名靠后的如鄱阳湖、王港、东庄等站点流量极小,可能是因其位于小流域分支、或是受上游水利工程调节影响,来水有限。对水位进行分析得知三峡水库、葛洲坝、丹江口水库等站点水位明显较高,这与它们作为大型水利枢纽的功能定位相符,承担着蓄水、防洪、发电等任务,需维持较高水位。而大通、湖口等站点水位较低,可能是因其处于河流下游平原地区,地势平坦,水流分散,水位自然相对不高;也可能受潮汐等海洋因素影响,水位波动和高度与上游水库等不同。如下图5.7所示。图5.7实时站点流量、水位排行图历史流量变化分析历史流量整体呈现出波动变化态势。在大部分时间里,流量相对稳定,维持在一定区间内,但在特定时间点出现了明显的峰值和谷值,说明流量并非恒定,受多种因素影响而动态变化。在“Wed,12Mar202515:00:00GMT”左右出现了一个极高的流量峰值,远超其他时段流量。这可能是由于强降雨、融雪等导致大量水源汇入,或者是上游水库集中泄洪等因素引起。在峰值之后出现了流量谷值,流量大幅下降。可能是强降雨等产流因素结束,上游来水减少,或者是河道下渗、蒸发等作用使流量降低。除峰值和谷值时段外,其他时间流量相对平稳,围绕一定数值小幅波动。表明在这些时段内,流域内的产流、汇流等因素相对稳定,没有出现大的干扰因素。如下图5.8所示。图5.8历史流量变化分析图历史水位变化分析水位整体呈现相对稳定的状态,大部分时间维持在相近水平,波动幅度较小,说明在观测时段内,该水域受外界因素干扰相对较少,水位变化的驱动力较弱。在“Wed,12Mar202515:00:00GMT”左右出现水位峰值。可能原因包括强降雨致使流域内大量来水、上游水库泄洪等。除峰值时段外,其余时间水位平稳。这为航运、港口作业等提供了稳定的基础条件,船只可依据此相对稳定的水位安排航行计划,港口可正常开展装卸等业务。如下图5.9所示。图5.9历史水位变化分析图流量与水位关系图随着流量值从左到右逐渐增大,水位值大体上呈现上升态势。这表明流量与水位之间存在正相关关系,意味着在一般情况下,流量增加时,水位也倾向于升高。并且途中不存在明显远离整体分布的异常点,所有散点都在合理波动范围内,说明数据的随机性虽使散点离散,但未产生极端偏离值,数据相对稳定。如图5.10所示。5.10流量与水位关系图5.4.2实现原理水文数据可视化功能模块实现主要依赖于Flask框架、PyMySQL库、Echarts库以及Ajax技术。首先,使用Flask框架构建一个Web服务器端应用程序,用来接收用户的请求并返回相应的水文数据以及可视化页面。在后端,使用PyMySQL库连接到数据库,并提取所需的水文数据。并且为了实现数据的动态更新和交互性,会先通过Flask框架构建页面跳转请求以及水文数据接口,然后通过Ajax技术进行数据交互,实现前端与后端的异步通信,获取相应的数据,并通过Echarts技术来渲染更新图表展示REF_Ref17942\r\h[9]。在数据分析中,流量和水位数据是核心分析对象。而在本系统设计中对历史水文数据进行分析时先创建了`SQLManager`实例连接数据库,接着构建SQL语句从`waterlevel`表中选取指定站点近30条按时间降序排列的数据,执行查询获取结果后提取对应列数据,关闭数据库连接,最后反转数据顺序并以字典形式返回处理好的时间序列和对应数据值。而对实时的水文数据进行分析时执行一系列SQL查询:按水源统计记录数量;取最新时间的全量数据;获取最新时间流量、水位排名数据;统计最新时间各水源总流量并排名。将查询结果处理成字典列表,最后关闭数据库连接,返回包含各类数据的字典。5.4.3关键代码#水位分析#水位分析deflevel_data(site):sqlManager=SQLManager()key_sql="SELECTdatetime,waterlevelFROM`waterlevel`WHEREsite='"+site+"'ORDERBYdatetimedesclimit30"key_data=sqlManager.get_list(key_sql)x_data=[k['datetime']forkinkey_data]value_data=[k['waterlevel']forkinkey_data]#流量分析defflow_data(site):sqlManager=SQLManager()key_sql="SELECTdatetime,flowFROM`waterlevel`WHEREsite='"+site+"'ORDERBYdatetimedesclimit30"key_data=sqlManager.get_list(key_sql)x_data=[k['datetime']forkinkey_data]value_data=[k['flow']forkinkey_data]sqlManager.close()return{'x':x_data[::-1],'y':value_data[::-1]}#实时水文数据分析数据deftop_page_data():sqlManager=SQLManager()key_sql="selectwaterSource,count(id)asnfromwaterlevelgroupbywaterSourceorderbycount(id)desc"key_data=sqlManager.get_list(key_sql)num_data=[{k['waterSource']:k['n']}forkinkey_data]table_sql="SELECT*FROMwaterlevelWHEREdatetime=(SELECTMAX(datetime)FROMwaterlevel)"table_data=sqlManager.get_list(table_sql)flow_top_sql="SELECTsite,flowFROMwaterlevelWHEREdatetime=(SELECTMAX(datetime)FROMwaterlevel)ORDERBYflowDESC;"flow_list=sqlManager.get_list(flow_top_sql)flow_data=[{'site':i['site'],'流量':i['flow'],}foriinflow_list]level_top_sql="SELECTsite,waterlevelFROMwaterlevelWHEREdatetime=(SELECTMAX(datetime)FROMwaterlevel)ORDERBYwaterlevelDESC;"level_list=sqlManager.get_list(level_top_sql)level_data=[{'site':i['site'],'水位':float(i['waterlevel']),}foriinlevel_list]source_top_sql="SELECTwaterSource,sum(flow)asnFROMwaterlevelWHEREdatetime=(SELECTMAX(datetime)FROMwaterlevel)GROUPBYwaterSourceORDERBYsum(flow)DESC;"source_list=sqlManager.get_list(source_top_sql)source_data=[{'name':i['waterSource'],'value':i['n'],}foriinsource_list]sqlManager.close()return{'num_data':num_data,'table_data':table_data,'source_data':source_data,'level_data':level_data,'flow_data':flow_data}5.5水文数据预测5.5.1页面展示未来24小时水位变化对未来24小时水位进行分析得知在23:00到03:00之间水位会急剧下降,可能是由于上游水利设施如大坝开闸放水,大量泄洪导致水位快速降低;也可能是短时间内降水大幅减少,且排水系统正常运行,使得水位迅速回落。03:00之后水位处于缓慢波动状态且维持在较低水平,说明此时水位变化趋于稳定,可能是外界因素(如降水、排水等)对水位的影响较小。如图5.10所示。图5.10未来24小时水位变化图未来24小时流量变化对未来24小时流量进行分析得知未来24小时流量变化呈先平稳、再急剧上升,随后快速下降并趋于稳定的态势。在2025年4月24日19:00-23:00期间,流量处于较低且相对平稳状态。23:00左右开始急剧上升,至次日03:00左右达到峰值,之后快速下降,03:00之后流量在相对较低水平保持稳定波动。效果如图5.11所示。图5.11未来24小时流量变化图5.5.2实现原理水文预测模块功能的设计:首先从MySQL水文数据表中导出水文数据,将导出的数据保存成CSV文件,从而获得原始水文数据,再对导出的CSV文件进行读取及预处理工作,在特征选取上,选择前两小时的流量、水位数据作为输入特征,选择当前的流量、水位数据作为输出特征,最后构建水文数据的预测模型,该模型的预测算法选择决策回归树,水文数据模型训练主要使用导出的历史水文数据。先从数据库中读取csv文件,将将近两小时的水位和流量数据作为输入特征,当前的水位和流量数据作为输出目标。将数据集按照7:3的比例分割,生成训练需要的输入特征集合X和输出目标集合Y。再将X、Y集合数据作为输入决策回归树模型进行训练,训练完成后使用该决策树模型对X集合进行预测,得到预测结果集合Pred_Y。最后,利用Joblib库将训练好的决策树模型保存,以便在后续进行水文数据预测时能够加载模型,为预测工作提供支持。而在水文数据预测页面的实现上,则通过Ajax技术构建交互请求,使用Flask框架构建对应的请求接口。利用Scikit-learn库和Joblib库重新加载已保存的模型并进行预测,最后将预测数据返回给前端页面。前端页面运用Echarts技术对返回的数据进行可视化渲染,让用户能够直观地查看预测结果。5.5.3关键代码#读取数据#读取数据print("[INFO]预测水文数据数据-训练开始")data=deal_data.transformer_data()#分割数据集合train_data=[]test_data=[]#计算每隔多少条数据取一条作为测试数据interval=int(10/3)#7:3比例,大约每3.33条取1条,这里取整为3#初始化计数器count=0forindex,iteminenumerate(data):ifcount%interval==0andlen(test_data)<len(data)*0.3:#每interval条数据取一条作为测试集,同时保证测试集不超过30%test_data.append(item)else:train_data.append(item)count+=1train_data=np.array(train_data)test_data=np.array(test_data)XX=np.array(train_data[:,0:4]).astype(float)Y=np.array(train_data[:,4:]).astype(float)test_X=np.array(test_data[:,0:4]).astype(float)test_Y=np.array(test_data[:,4:]).astype(float)#定义算法模型model=DecisionTreeRegressor(max_depth=20,min_samples_leaf=1,random_state=None)#决策回归树5.6水文数据管理模块5.6.1页面展示水文数据管理模块设计主要是为管理员提供水文数据管理与维护功能,实现对水文数据的录入、修改、删除和查询等功能,保证数据的完整性和准确性。如图5.12所示。图5.12数据管理界面图5.6.2实现原理在数据存储方面,采用MySQL数据库作为基础,依据数据库设计方案构建水文数据表结构,用于存储站点名称、水位、流量等关键水文信息。通过定义ID主键,并结合站点和时间等因素,保证数据的一致性和可靠性。在用户界面设计上,打造了一个用户友好的界面,配备了水文数据管理的功能按钮和表单输入框。管理员能够通过该界面轻松进行数据的录入、修改和删除操作,还能灵活地进行数据查询,支持按照站点、水源地等条件搜索数据。前端利用Layui搭建水文数据管理页面,通过Layer组件弹出新增和编辑框,运用Ajax技术发送数据操作请求。后端采用Flask框架构建数据接口,使用PyMySQL对MySQL数据库的数据表进行增删改查操作。5.6.3关键代码#获取分页数据defselect_water_level_list(page,limit,where):page,limit,where=get_page_start(int(page),int(limit),where)params_sql=get_search_params(where)#获取分页数据defselect_water_level_list(page,limit,where):page,limit,where=get_page_start(int(page),int(limit),where)params_sql=get_search_params(where)data_sql="SELECT*FROMwaterlevelWHERE1=1"+params_sql+"ORDERBYidDESCLIMIT%s,%s"count_sql="SELECTCoUNT(id)asiFROMwaterlevelWHERE1=1"+paramS_sq
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江台州市温岭市第一人民医院派遣员工招聘9人笔试备考题库及答案详解
- 2026年南阳市专项计划招聘社区网格事务协理员710人笔试备考试题及答案详解
- 洗浴中心员工劳动合同签订协议2026
- 职业道德与职业操守培训协议书
- 蒙特卡洛模拟在物流配送合同协议
- 线上手机通讯设备售后服务协议
- 线上数据标注举报制度执行合同
- 2026云南德宏州盈江县苏典乡专职联防员招聘1人(第三批)笔试备考试题及答案详解
- 2026浙江宁波市鄞州区福明街道编外人员招聘1人笔试参考题库及答案详解
- 教案嵌入式应用基础(项目6第14周)
- 2026年招标采购从业人员《招标采购专业实务(初级)》考试真题(附答案解析)
- 2026年上海市黄浦区中考数学二模试卷(含解析)
- DB31∕T 1676-2026 地震预警信息发布要求
- 2025年《银行业保险业消费投诉处理管理办法》培训试题及答案
- 眼部刮痧培训
- 桥梁工程安全技术交底
- 下水道科普教学课件
- 涉密测绘成果安全管理细则
- 生猪屠宰兽医卫生检验人员考试题库(含答案)
- 中国当代政治制度
- 林业调查规划设计单位资格申报指南(2023 年版)
评论
0/150
提交评论