摘要
随着科技技术的不断发展,人民物质生活质量不断提高,我们越来越关注身边的气象、空气等地理环境。对于普通居民我们会选择合适的气象进行出游,提高精神层面的生活质量;对于企业会关注气象变换状况,来定制相关的生产计划,来提高企业生产效率并降低生成过程中由气象造成的风险损失。从社会角度我们不难看出,气象时时刻刻影响我们的规划和生活,因此我们开发一套中国气象数据可视化系统,更加直观的呈现气象状况,是有必要的。
中国气象质量大数据展示与分析系统,通过使用python爬虫技术对中国气象数据进行实时获取,然后利用相关数据清洗以及数据库处理技术存入数据库,再通过Python Web框架也就是Flask框架进线系统后台数据接口开发,通过Echarts技术进行数据分析可视化展示以及通过LayUI前端技术开发后台数据管理页面从而来完成我们最终的中国气象数据可视化系统。
本文主要通过研究背景,对项目意义进线分析讨论;通过技术分析对项目技术架构选型进行敲定,根据系统需求分析和可行性分析来确定系统的主要功能结构。最后通过系统概要设计、数据库设计将设计的功能进行初步的建模。通过系统设计与实现以及测试阐述系统开发内容以及测试系统功能的正确性。从而最终完成系统的设计与实现。
关键词:数据可视化;Python;Echart;Flask;爬虫;气象
ABSTRACT
With the continuous development of science and technology and the continuous improvement of people's material quality of life, we pay more and more attention to the weather, air and other geographical environment around us.For ordinary residents, we will choose the right weather to travel, to improve the quality of life at the spiritual level; Enterprises will pay attention to the weather change to customize relevant production plans, improve production efficiency and reduce the risk loss caused by the weather in the production process. From a social perspective, it is not difficult to see that meteorology affects our planning and life all the time. Therefore, it is necessary for us to develop a set of China meteorological data visualization system to present meteorological conditions more directly.
Based on Python crawler and flask framework meteorological data collection visualization system, the meteorological data of China is acquired in real time by using python crawler technology, and then stored in the database by using relevant data cleaning and database processing technology. Then we developed the background data interface of the Flask framework (Python Web framework), visualized data analysis and display by Echarts technology, and developed the background data management page by LayUI front-end technology, so as to complete the final visualization system of China meteorological data.
China Meteorological Quality Big data display and analysis system; Through technical analysis, the selection of project technical architecture was determined, and the main functional structure of the system was determined according to the system requirement analysis and feasibility analysis. Finally, through the system summary design, database design will design the function of the preliminary modeling. Through the system design and implementation and testing, the system development content and the correctness of the test system function are expounded. Thus the final completion of the system design and implementation.
Keywords:Data visualization; Python; Echart; Flask; Crawler; meteorological
目 录
摘要
ABSTRACT
1 引言
1.1 研究背景
1.2 研究意义
1.3 开发技术
1.3.1 Python语言简介
1.3.2 Flask框架
1.4 开发工具
1.4.1 IntelliJ Pycharm
1.4.2 Google Chrome简介
2 系统需求分析
2.1 系统概述
2.2 可行性分析
2.2.1 技术可行性
2.2.2 经济可行性
2.2.3 操作可行性
2.2.4 社会可行性
2.3 功能需求描述
2.4 非功能需求描述
3 系统概要设计
3.1 系统设计原则
3.2 系统框架设计
3.3 需求用例建模
3.3.1 可视化功能模块的用例
3.3.2 管理员功能模块的用例
3.4 系统功能设计
3.3.1可视化功能设计
3.3.2管理员功能设计
4 数据库设计
4.1 设计原则
4.2 概念设计
4.3 详细设计
5 系统的设计与实现
5.1 气象数据爬虫模块实现
5.1.1 气象数据爬虫模块界面实现
5.1.2 气象数据爬虫模块功能实现
5.1.3 气象数据爬虫模块核心代码实现
5.2 可视化模块实现
5.2.1 可视化模块界面实现
5.2.2 可视化模块功能实现
5.2.3 可视化模块核心代码实现
5.3 后台管理模块实现
5.3.1 用户功能模块实现
5.3.2 版本功能模块实现
5.3.3 气象数据管理模块实现
5.3.4 爬虫日志功能模块实现
6 系统测试
6.1 测试目的
6.2 测试方法
6.3 测试用例
6.3.1 用户注册功能测试
6.3.2 气象数据爬虫功能测试
6.3.3 后台管理模块功能测试
6.4 测试总结
7 总结与展望
7.1 工作总结
7.2 工作展望
致谢
参考文献
1 引言
项目研究背景而言,本小结主要从国内开发背景,以及国外开发背景两个方面去阐述信息技术时代下的气象实时采集以及可视化系统。
首先针对Python语言而言,Python更适合处理科学性工作,例如机器学习、深度学习、数据分析、自动化运维等,国内大多数厂商使用Python Web领域相对还偏少,但这不意味着Python Web不成熟,它拥有着Flask、Django等优秀Python Web开源框架和活跃的技术论坛,能够完全满足基本Web开发的全部需求。针对气象领域,目前中国气象局会对全国气象数据进行采集,但是可视化分析相对较少。市面上存在的可视化内容相对而言,技术陈旧,年久失修。所以本系统的主要是通过网络爬虫实时获取气象数据,然后对数据进行分析与可视化。
国外互联网起源较早,技术相对成熟,Python许多开源框架以及技术解决方案都是由国外厂家提供,但是他们主要关注于基础框架、理论建设层面,针对于应用层面研究相对较少。同时,针对于气象可视化系统方面,国外也有一些作者进行相关研究分析,但相对没有那么全面。国外开发的气象可视化系统,从数据源的角度就不适用于国内行情。
自20世纪以来,我国以及全球的信息技术发展日新月异,从各个方面来影响着我们的工作与生活,为我们的工作和生活带来了极大的便利。互联网早已成了我们生活和工作的一部分,是不可或缺的一部分。在生活工作的诸多场景中,都可以发现互联网的痕迹,比如疫情监控、炒股数据分析、新闻网站APP、短视频网站APP、移动支付等等。这些都是互联网技术、信息技术给我们带来的便利。本文则选择探讨利用软件信息技术来监测分析我国气象的实时状况。
中国气象质量大数据展示与分析系统通过对全国气象数据的实时获取,然后通过技术分析。客观的呈现全国各个地区的实时气象状态。通过更加直观、更加智慧、更加高效的展示与分析,有效的辅助相关从业人员根据气象做出相应的生产决策,有利于受气象影响的行业提前战略部署,在一定程度上规避自然原因带来的风险问题。提高相关人员的决策正确率,来切实解决规避日常生产环境造成的一些风险问题,为企业节约生产成本,促进企业积极健康的良性发展。
开发语言简介,主要介绍本课题所用到的核心开发技术,通过对技术的分析进而来确定系统开发的技术选型,确保项目的顺利进展。
Python语言是世界范围内爆火的语言[1]。Python语言久居世界语言排行榜第一。像国内知名的互联网公司百度、腾讯、阿里巴巴都有对应的Python工程师、算法工程师在职,而且他们的前沿项目都是离不开Python这门高级开发语言。Python语言具有语法简单、易上手、功能强大等特点,广泛应用在各个领域以及各个研发方向。其中在人工智能领域、数据分析领域、脚本领域、软件测试等诸多常用领域,有着不可替代的地位。
Flask框架的功能非常强大、简单、易用[2]。它可以很好的用于Python环境下开发Web项目[3]。Flask框架是一种轻量级的设计框架[4]。它可以不用写很多的业务代码,也可以不使用手动设置参数,就可以轻松开发出前端网页接口。Flask可以使程序员在开发时只关注开发业务的本身,而不需要去关注框架怎么设计、结构怎么设计以及框架怎么配置等操作,这样可以大大降低我们开发时所需要付出的精力,增加我们的开发效率。
开发工具简介,主要介绍本课题在开发设计与实现的过程钟使用到的开发工具,便利开发的顺利完成。
IntelliJ Pycharm是为Python语言开发的集成开发环境[5]。IntelliJ系列产品在IT行业可谓是口碑俱佳,且一直再更新维护,让消费者用起来方便、便捷、稳定,能有很好的解决消费者因开发工具、开发环境引起的工作问题以及态度问题。IntrlliJ系列包含信息技术开发众多产品,每一款都可以算上业内顶尖,都具备自动插拔插件、提示并正确补全开发内容等快捷功能。
Google Chrome是一款十分流行的浏览器[6]。每一个信息技术从业研发人员,电脑上必备的浏览器软件之一;它的核心有点就是具备稳定的内核,可以稳定、高效的解析各种浏览器语言;同时它具备debug功能,对开发者调试开发前端项目非常友好;它还具备自动插拔式插件以及相关的插件生态,使用起来非常方便、快捷。
2 系统需求分析
本系统经过相关调研,设计了气象数据后台管理模块以及气象可视化模块。其中气象后台数据管理模块包含功能有基础系统数的据增删改查、气象相关数据的增删改查以及气象数据网络爬虫等,气象数据网络爬虫主要通过登录系统后进行启动操作,然后系统会通过网络加载气象数据,对气象数据进行解析,再进行相应的数据处理操作,例如缺失值处理、文字数据编码等一些列操作,最终存入数据库。数据可视化功能,则主要分为温度、空气、风力等多维度对气象数据进行视化分析处理。
核心算法代码分享如下:
import time
import pymysql
import requests
class dbUtil():
def __init__(self):
conn, cursor = self.get_conn()
self.conn = conn
self.cursor = cursor
def get_time(self):
time_str = time.strftime("%Y{}%m{}%d{} %X")
return time_str.format("年", "月", "日")
def get_conn(self):
# 建立连接
conn = pymysql.connect(host="127.0.0.1", port=3396, user="root", password="123456", db="weathers",
charset="utf8")
# c创建游标A
cursor = conn.cursor()
return conn, cursor
def close_commit(self):
self.conn.commit()
if self.cursor:
self.cursor.close()
if self.conn:
self.conn.close()
def close(self):
self.conn.commit()
if self.cursor:
self.cursor.close()
if self.conn:
self.conn.close()
def query(self, sql, *args):
self.cursor.execute(sql, args)
res = self.cursor.fetchall()
return res
def query_noargs(self, sql):
self.cursor.execute(sql)
res = self.cursor.fetchall()
return res
def get_current_city():
try:
# 发送请求获取 IP 地址信息
response = requests.get('https://ipinfo.io')
data = response.json()
# 提取城市信息
city = data.get('city')
if city:
return city
else:
print("城市信息不可用")
except Exception as e:
print(f"发生错误: {e}")