基于Python的天气数据可视化平台
摘要:随着社会多元化的不断发展,天气数据问题不可被简单的理解为是科学问题,更多的是环境问题,可以直接影响到人民的日常生活,甚至对一个国家的政治经济带来影响,由此可见,天气预测是一项非常重要的行业。基于此,我们就需要开发一个可视化的、综合的、方便人们查看的项目。基于Python的天气数据可视化设计与实现,通过使用基于Python的网络爬虫技术,能在短时内提取有价值的信息数据。然后根据数据的形式进行整理,运用 HTML、CSS、JavaScript、Flask 框架、Echarts、WordCloud 等技术对数据进行可视化展现,有利于更好地利用数据解决实际问题。
关键字:天气数据可视化平台;Flask ;Python
Weather data visualization platform based on Python
Abstract:With the continuous development of social diversification, weather data can not be simply understood as a scientific problem, but more of an environmental problem, which can directly affect People’s Daily life and even the political economy of a country. Therefore, weather forecasting is a very important industry. Based on this, we need to develop a visual, comprehensive, easy to see the project. Python based weather data visualization design and implementation, through the use of Python based web crawler technology, can extract valuable information data in a short time. Then, according to the form of the data, the data is sorted out and visualized by using HTML, CSS, JavaScript, Flask framework, Echarts, WordCloud and other technologies, which is conducive to better use of the data to solve practical problems.
Key words: weather data visualization platform; Flask; Python
目 录
摘 要 I
目 录 III
第一章 概述 1
1.1引言 1
1.2课题研究目的 1
1.3开发现状分析 2
1.4课题开发意义 2
2 开发工具及关键技术介绍 3
2.1 相关技术 3
2.2 Python介绍 3
2.3 MySQL介绍 4
2.4 Flask 框架介绍 4
2.5 B/S架构 5
3 系统分析 6
3.1 可行性分析 6
3.1.1 经济可行性 6
3.1.2 技术可行性 6
3.1.3 运行可行性 6
3.2 功能需求分析 6
3.3 非功能性需求 8
3.4 系统特色 9
3.5系统顺序图设计 10
3.5.1登录模块顺序图 10
3.4.2添加信息模块顺序图 10
第四章 系统设计 11
4.1功能结构 11
4.2 数据库设计 12
4.2.1 数据库E/R图 12
4.3 数据库设计 14
4.3.1实体关系图 15
4.3.2数据库表结构 15
第五章 系统功能实现 20
5.1管理员功能模块 20
5.2用户功能模块 22
5.3用户功能模块 24
6 系统的测试 26
6.1 功能测试 26
7 总结 29
致谢 29
参考文献 31
第一章 绪论
1.1研究背景
天气变幻无常,影响着我们生活的方方面面,应用天气预报信息可以及时了解天气的趋势,给人们的工作、生活等带来便利,也可以为我们为未来的事情做安排和打算,所以一个精准的、易读的、直观的天气信息对我们个人、国家来说都很重要。气象网站中有大量的多维度气象数据信息,供社会各行业作为参考研判的依据,Python作为当前数据分析领域最为流行的语言,具有丰富和强大的库.为数据分析提供大量函数,通过利用Python程序对气象网站大量的气象信息进行分析,可以挖掘出关于气象气候演变的规律信息,为气象预报提供更丰富的参考依据。国内外都专注于各种物理技术对于天气的预报与分析,并没有过多地关于数据的可视化以及收集的研究,大多数产品的功能相差不大,这样获得信息可能比较分散并且不太利于普通人的阅读。但是不管是国内还是国外的这一些已有的方案,都为本课题提供了大量的经验。
基于此,我们就需要开发一个可视化的、综合的、方便人们查看的项目。基于Python的天气数据可视化设计与实现,通过使用基于Python的网络爬虫技术,能在短时内提取有价值的信息数据。然后根据数据的形式进行整理,运用 HTML、CSS、JavaScript、Flask 框架、Echarts、WordCloud 等技术对数据进行可视化展现,有利于更好地利用数据解决实际问题。
1.2研究内容
(一)研究内容
基于Python的天气数据可视化设计与实现,通过使用基于Python的网络爬虫技术,在网络中提取有价值的信息数据,数据整理后运用 HTML、CSS、JavaScript、Flask 框架、Echarts、WordCloud 等技术对数据进行可视化展现。
计划实现以下模块:
1.预报模块:可以查看近几日的天气状况;
2.空气质量数据模块:PM2.5、AQI数据分析;
3.天气数据模块:温度、湿度、风速、风向、云量、降雨量等数据;
4.生活指数数据模块:洗车、感冒、穿衣、紫外线、出行建议等提示
5.数据分析模块:结合最近的天气状况,空气质量状况,对保护环境提出建议;
(二)研究思路
设计基于Python的网络爬虫,通过使用网络爬虫技术,在气象网站提取有价值的信息数据,得到有价值的数据后,根据数据的形式进行整理,运用 HTML、CSS、JavaScript、Flask 框架、Echarts、WordCloud 等技术对数据进行可视化展现。
(三)研究方法
1.结合现有天气预报软件的实际问题和软件工程设计的一般方法,得到系统需求分析;
2、确定使用的编码语言和开发平台后,学习和练习编码技术;
3、熟悉开发环境后,根据需求分析和功能设计实现系统模块功能。 ·
4、功能测试时,及时发现系统BUG并修复。 时间充裕时可以进行代码重构和功能升级。
(四)拟解决的主要问题及措施
- 数据获取,从多个气象网站收集数据,比如福建省内多个城市温度的具体数据,并以excel形式存储这些气象数据。
- 数据处理,对于天气数据的整理和分析很重要,可以通过XLRD模块或其他工具将表格导入再读取数据,对数据进行清洗,收集数据到mysql然后通过Python分析。
- 数据可视化的实现, 利用Python子库或其他工具绘制图表,展示天气数据,进行数据分析。
1.3研究意义
基于Python的天气数据可视化设计与实现,通过使用基于Python的网络爬虫技术,能在短时内提取有价值的信息数据。数据整理后运用 HTML、CSS、JavaScript、Flask 框架等技术对数据进行可视化展现,有利于更好地利用数据解决实际问题,而且项目易上手、易操作。
大多的天气预报只有天气情况的报道,没有对于天气有关的分析操作,而本项目有以下优势。
1.首先项目基于网页查询,人们可能是随手点开来查询天气,若要下载app等方式来查看,就可能因麻烦直接放弃查询。
2.其次天气的分析较为重要,本项目可以根据各种不同的天气情况给人们提供各种出行,着装,饮水量等方面的建议,让人们的生活更加的便利。
3.各种工业排放的温室气体包裹着地球,捕获太阳的热量,导致了全球变暖和气候变化。 现在全球变暖的速度比有记录以来的任何时候都要快。本项目可以根据分析来做出图表在人们观看天气状况时,也让人们感受到了保护环境,抵制全球变暖的重要性。
1.4章节安排
全文主要包括以下几个部分:
第一章绪论主要介绍了项目背景以及研究目的、研究意义、章节安排等。
第二章开发工具及关键技术介绍了系统设计与实现涉及到的技术知识和相关开发工具,主要包括Python技术,B/S架构和MySQL 数据库管理系统。
第三章系统分析在系统设计目标,系统功能需求,系统非功能需求,可行性分析等方面对系统进行了详细的论述分析。
第四章系统设计对系统功能结构,数据库设计等几个方面进行了详细的论述。
第五章系统功能实现主要对系统的主要功能模块的实现细节进行了详细的阐述。
第六章对系统的功能测试以及测试结果进行了描述。
第七章总结
最后得出了结论,说明了系统的功能完整性和实用性以及系统的不足之处和对系统的进一步展望。
2 开发工具及关键技术介绍
天气数据可视化平台选取的开发语言是当今最热门的Python语言,语言完善成熟,不会有重大问题。框架选择Flask 框架。在数据设计阶段,我们需要进行系统需求的分析,分析业务总体功能,现在我们从以上几个技术进行深入的研究。
2.1 Python编程语言
随着人工智能、大数据时代的来临,Python语言收到更多系统员的欢迎。作为现在热门的系统语言,Python可以说是IT界的新一代网红,尤其是Python和目前红的发紫的人工智能之间密切的关系,让大家对他投入了特别的关注,大大数据现在是很多公司的重点项目,很多高校也在侧重用户对大数据知识的学习,现在很多人都喜欢刷抖音,因为抖音能够精准的给我们推送自己喜欢的视频,以前我们通过百度后者其他搜索网站搜索自己需要的知识,现在随着大数据的应用,很多网站能够根据我们的上网记录,精准的给我们进行推送,包括我们需要的视频,想要获取的知识等等,而这些都离不开Python。Python的语言是目前最简单的计算机语言之一,语言很简洁,用更短的代码干更多的事,可以轻松调用主流的C、C++、JAVA类库。提到爬虫,很多人会想到Python,当今互联网数据,成为任何一家公司的核心资产,怎么获取公开的有用的信息,爬虫就派上了用场。人工智能是很多大公司都在进行的项目,智能驾驶,百度研发的无人驾驶,京东的机器狗智能送货上门,都是运用了人工智能技术,人工智能的核心算法和模型,需要快速的聚焦问题本身,而且,需要能够进行交互式的进行模型训练,能够满足这些需求的只有Python。另外,Python不仅适用于系统员使用,很多白领也可以使用Python,简化工作流程,提高工作效率,批量操作Excel、word、pdf等。所以本系统使用了Python语言进行完成。在大学阶段的学习中,我们已经掌握了Python的基本知识,这次设计的天气数据可视化平台,运用Python语言,学以致用,在实践中学习。
2.2 MySQL数据库
MySQL是一种数据库,数据库定义了存储信息的结构,以表的方式存储信息,设置有索引,可以快速定位到需要的内容,避免查找数据时要遍历整个库,耗费资源,速度太慢,MySQL流行的原因首先是简单,任何有计算机背景的技术人员,都可以无师自通地参照文档,安装运行和使用MySQL,几乎没有门槛,其次是开源,开源意味着安全和免费,无数的技术爱好者,可以一起来审核程序,一起修补问题。最后是引擎,MySQL不同于其他数据库之处,是他对插件式存储引擎的支持。这是一个开放的设计,能够兼容并包,海纳百川。
本次毕业设计的数据库选择实用性强的Mysql数据库,没有选择sqlserver数据库,相比于sqlserver,mysql更轻巧方便。Mysql主要特点存储和查询很快。另外系统采用的是JavaWeb开发技术。在上学之时,学习了mysql数据库,这是一款非常实用和小巧的数据库系统[13]。
2.3 Flask 框架介绍
Flask是一个使用 Python 编写的轻量级 Web 应用框架。轻巧页就意味着他比较简洁,不过见到的MTV框架还是有的,(MVC)但是最重要的还是他的可扩展性很强,对比与Django框架呢,他的灵活度就很高了,可以自己一些设计代码框架。他比较适合一些,分层比较少,逻辑不怎么复杂的web项目。如果开发成本低的话,那就更适合了。现在搭建个flask框架很简单了。用pycharm创建项目的时候,选择flask,都直接给你把框架都生成好了的。
2.4 B/S架构
B/S的系统是通过能上网的电脑就可以使用,它最大的优点是不需要安装专门的软件,不需要再次对数据进行存取与计算数据,只要负责显示数据来降低要求,如果说客户端像个“瘦子”,而服务器会越来越“胖”。B/S体系结构与C/S体系结构相比,最大的不同是:B/S体系的应用软件使用网络浏览器作为与学员交互的平台,而C/S则需要开发专用的应用程序。
本章小结:本章主要对开发工具及关键技术进行详细介绍。
3 系统分析
3.1 可行性分析
一个完整的系统,可行性分析是必须要有的,因为他关系到系统生存问题,对开发的意义进行分析,去解决其中的不足等,通过对本系统,不仅能使工作量不断地减少,还能使工作和管理的效率更加高。所以开发该系统能实现更大的意义和价值,系统完成后,能否达到预期效果就要通过可行性分析,分析之后,决定此系统是否开发。在进行产品设计的功能需求进行列举时需要考虑是否能够在实施时保证系统页面的可行性,即该系统给用户使用时,能否保证操作的顺利完成。另一个就是从研究开发者的角度出发,即在进行这项系统研究开发时,是否存在经济成本一些方面的不可阻挡的因素。这项分析对于开发能否能够对相关项目研发的开始具有决定性作用,以及后续能否在设计软件过程中避免不必要的影响因素也是至关重要的,所以必须严谨客观的对待。该天气数据可视化平台的开发设计中,对技术、经济、运行方面进行了可行性分析。
3.1.1 经济可行性
本设计可以在一般 PC上正常运转,无需购置其它的硬件设备。此设计开发所需的软件Tomcat、Mysql都是开放的,不需要付费就能在网上下载。从财务角度来看,我们并不一定要去买什么软件或者服务器来发展这个体系。因此,从财务上来说,这是可行的。
3.1.2 技术可行性
对于本设计的天气数据可视化平台来说,大学四年学习的专业知识,结合技术的现在已经非常成熟,可不考虑新技术的融合,综合各种技术的优缺点,我们选择Python技术和Flask 框架、MYSQL数据库。我们选择的技术已经在很多项目中应用了,且非常成熟,由此可见技术上是可行的。
3.2功能需求
根据现实需要,此系统我们设计出一下功能,主要有以下功能模板。
(1)注册登录模块:管理员、用户两端登录对应实现相应功能,每个角色都有自己的账号 密码可以进行登录。
(2)用户端功能:首页、个人中心、天气新闻管理、空气质量指数管理、7天天气管理、生活指数管理、景点推荐管理、系统管理。
(3)管理员功能:首页、个人中心、用户管理、天气新闻管理、空气质量指数管理、7天天气管理、生活指数管理、景点推荐管理、系统管理。
3.2.1系统用例
本系统主要有登录,用户、用户和管理员等部分组成。
登录模块用例中用户和管理员和两种角色,分别可以进行其对应的身份登录或取消登录,关闭系统。登录用例图如图3-1所示。
(2)用户模块主要包括首页、个人中心、天气新闻管理、空气质量指数管理、7天天气管理、生活指数管理、景点推荐管理、系统管理等功能,用户用例图如图3-2所示。
(3)管理员模块主要包括首页、个人中心、用户管理、天气新闻管理、空气质量指数管理、7天天气管理、生活指数管理、景点推荐管理、系统管理等功能,用户用例图如图3-3所示。
第四章 系统设计
4.1功能结构
为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该天气数据可视化平台的功能结构图如下所示:
第五章系统功能实现
5.1注册与登录模块
5.1.1登录模块
管理员、用户共用有个登录界面,通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如图5-1所示。








第六章 系统的测试
6.1功能测试
本系统对用户、管理员、两个核心模块进行了功能测试,测试设计如下所示:
(1)登陆模块功能测试
登录功能中由于管理用户和用户共同使用同一个登录入口。因此测试用例设计如表6-1所示。
表6-1 登陆模块功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
D001 以用户身份登录 按照系统要求填写用户登录名和密码信息点击“确定” 系统跳转至前台首页 通过
D002 以管理用户身份登录 按照系统要求填写管理用户登录名和密码信息点击“确定” 系统跳转至管理用户可使用的后台首页 通过
D003 以未注册身份登录 按照系统要求填写并未注册登录名和密码信息点击“确定” 系统提示用户名或密码错误 通过
D004 密码长度小于6位 输入的密码与确认密码长度小于6位,其余选项正常填写 系统提示用户密码长度不能小于6位 通过
D005 用户名为空 用户没有填写用户名 系统提示用户名未填写 通过
(2)管理员管理功能测试
管理员功能测试包括管理员登录、用户管理。测试用例设计如表6-2所示。
表6-2管理员功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
D011 填写用户名 登录页面中,未填写用户名 系统提示添加用户名 通过
D012 填写密码 登录页面,未填写密码 系统提示填写密码 通过
D013 添加用户 添加用户,输入用户的基本信息 添加成功 通过
D014 修改用户信息 修改用户信息,点击修改按钮,完成操作 修改成功 通过
(3)更改密码功能测试
更改密码功能中有管理用户的密码更改和用户的密码更改的功能。测试用例设计如表6-3所示。
表6-3更改密码功能测试用例
用例编号 测试用例描述 操作过程及数据 预期结果 测试结果
D016 以管理员身份更改密码 以管理员身份到用户密码更改页,填写旧密码、新密码、确认新密码后点击确认 系统提示更改成功 通过
D017 确认新密码和新密码不一致 到密码更改页后,确认新密码和新密码不一致,其余保持正常 系统提示密码不一致 通过
D018 旧密码和当前登录密码不一致 到密码更改页后,旧密码和当前登录密码不一致,其余保持正常 系统提示旧密码错误。并返回登录页 通过
D019 旧密码和新密码一致 到密码更改页后,旧密码、新密码和确认新密码填写一致 系统提示旧密码和新密码一致 通过
(4)性能测试用例如表6-4所示。
表6-4 兼容性测试用例
场景 并发数量 测试点
添加用户记录 400 添加用户记录的负载情况
60
50
50
修改用户记录 50 用户记录负载情况
40
40 用户记录负载情况
40
删除测试记录 20 20人集合删除测试记录的负载情况
40 40人集合删除测试记录的负载情况
6.2性能测试
性能测试用例如表6-5所示。
表6-5 兼容性测试用例
场景 并发数量 测试点
添加用户 50 添加用户的负载情况
10
23
24
天气指数测试 50 天气指数测试负载
180
56
33
查询天气 50 500人集合查询的负载情况
10 1000人集合查询的负载情况
6.3测试总结
天气数据可视化平台在开发之时,由于时间比较匆忙,系统遗留很多bug问题,没有及时测试发现,所以此章节系统测试,及时发现bug 进行记录和总结。具体测试结果如下,通过详细的测试,总结出一共有30个bug。其中注册和登陆界面产生5个bug,管理个人资料信息界面有6个bug,管理用户信息界面产生4个bug,管理系统界面产生3个bug。通过10天的功能测试,总结出的bug,并根据这些bug的问题,撰写解决文档,开发人员进行bug的修改和代码的维护。另外根据这些bug,并做回归测试,测试结果就是系统很稳定,没有出现任何bug问题。在最后测试结束,我们分析bug的类型,出现原因,大小等角度,进行客观的统计和归类,根据这些的归类数据,进行版本的统计,绘制统计图,如下。
如图6-6所示。
图6-6 按版本统计bug数
按等级统计bug的结果,如图6-7所示。
图6-7 按问题等级统计bug数
按类型统计bug的结果,如图6-8所示。
图6-8按类型统计bug数
第七章 总结
针对当下越来越多用户对此系统的需求量增大,为用户提供便捷而设计的此系统,在我们开发系统之初时,设计了系统管理模式,主要为管理员和用户登陆的,管理整个系统的功能和数据。有两大角色,构成一套完整的天气数据可视化平台。在系统初期设计阶段,我们需要参考其他类似网站,进行整体的功能需求和性能需求的梳理和设计。首先,根据设计,用户功能包括注册、登陆、个人信息的查询,修改和删除等功能。最后这个系统在完成之后经测试有不少的bug和设计的缺陷,导致系统运行时有很多的不足,我们需要根据这些问题,认真研究,好好解决问题,不断的弥补缺陷,改进系统,优化体验。
在优点方面上,为用户提供一个平台,此系统操作方便,没有经验的用户,简单培训就会使用系统,系统的界面简洁,看起来非常美观,操作性十分强,个性也独特。另外此系统是个非常实用的网站,从系统的设计之初,我们便考虑到系统如何吸引用户,为了获得的更多的用户资源,我们便参考网上众多的类似网站,取其精要,去其缺点,便设计了界面简洁,操作简单,功能完善的系统。在缺点方面上,系统是单一独立运行,没有能力抵抗网络病毒恶意的攻击,网络访问负载能力有限,不能抵抗同一时间段众多用户的浏览,所以我们要加大服务器的缓存和配置。另外吸取其他类似的网站缺点,杜绝类似的问题在生产运用中提现。但是系统有很大不足,例如功能不够完美,有时候会出现bug,导致系统不能正常的访问,还有界面不够高大上,不够美观,总感觉给人的视觉体验不够好。其次没有运用很好地缓存技术,当同一时间段,在线客户众多,系统会出现卡顿,甚至会严重到宕机。所以需要通过优化系统代码来提高客户的体验,杜绝客户体验不流畅,导致客户流失。在客户访问量问题上,我们利用最新技术,比如缓存机制等,来解决超载的客户。另外,在前端技术方面,我们采用前后端分离技术,实现前端运行和后端运行的分离,除此之外,系统还有其他体验不佳之处,我们需要针对之类的问题,重新构建网站的架构,选择适合系统功能需求的设计架构方案,让系统运行更加的完美。
致谢
时光匆匆,如白驹过隙,不知不觉,四年大用户活就要落幕。从刚进大学的懵懵懂懂,到现在已走过四年时光,中间有过迷茫,有过冲动。忆往事,一幕幕在脑海里好似电影般。大学伊始,在学姐学长老师们的耐心帮助下,我很快适应了大用户活,参加自己喜欢的社团,积极活跃在校园里的各个角落,生怕一不小心被人忽视了,每天学习,去食堂人挤人排着队打饭,去操场和同学约球一起流汗。每天和同学老师一起探讨未来,规划自己的人生,畅享未来。
首先,我要感谢学校,感谢学校四年的培养,在学校的四年时间里,是我人生中最重要的一个阶段,在这里,我学习里知识,学会了学习,为什么说学会了学习呢,在大学之前,我是被各种考试,老师的督促下学习的,被动的学习。来到大学之后,学习的时间更自由了,学习的途径更丰富了,学习的方式更多了,图书馆可以找到想学习的各种书籍,很多老师也是学富五车,才高八斗,知识渊博,可以随时随地的发微信,打电话,或者面对面的请教学习。所以,在这里,我首先要感谢我的学校,是母校培养了我,让我学会如何做一个大写的人,为以后的生活打下夯实的基础。
其次,我要感谢我的导师,在完成毕业设计的时候,刚开始,我一头雾水,不知从何下手,从哪里开始做,没有任何思绪,幸好,我有一个好老师,是老师及时的帮助我,为我的毕业设计理清头绪,找到思路,中间我很多次,我不知道怎么写,怎么做了,又是老师,在我最困难的时候为我答疑解惑,在这里,我想说,谢谢您,老师,您辛苦了,谢谢您不厌其烦的为我答疑解惑。
最后,我要感谢我的家人,感谢我的父母,是我的父母辛苦的劳作,为我的大用户活创造了丰富的物质生活,父母永远是我避风的港湾,现在我想对爸爸妈妈说,我现在长大了,毕业了,以后我可以独立,不会再让您为我担心,毕业之后,我会努力工作,争取早日让您二老过上好生活,成为你们的避风港。
本次毕业设计的完成预示着大学时代的句号,在这个设计过程中,我收获到的绝不仅仅是做项目过程中学到的知识,更多的是同窗情谊和师生情谊,最重要的是做任何事情都要具备的认真态度,以及真正职业的思考方式方法。
最后真心祝愿师生们前程似锦!工作顺利,祝母校越办越好!
更多推荐
所有评论(0)