名称:全国各城市天气查询系统
简称:Weather_capturer_v3
版本:1.3
开发环境:MATLAB 2020b内置Appdesigner
基本功能:通过访问天气网站API获取天气数据,显示当日天气信息,并绘制七日内天气预测曲线图;借助邮箱的SMTP协议通过第三方平台向用户邮箱发送天气信息。
项目背景:天气状况对人们的日常工作生活有着广泛而直接的影响。恶劣的天气条件(如暴雨、雪暴、大雾等)可能导致交通堵塞、交通事故和交通工具延误。同时某些行业和工作可能对天气更为敏感,建筑、农业、户外施工等行业可能会因为天气条件不佳而不得不暂停工作。准确的天气预报不仅对个人的日常生活和出行安排至关重要,也对农业、交通、能源、旅游等社会经济活动产生深远的影响。综上所述,准确的天气预报查询服务是必要的且有意义的,这也是Weather_capturer_v3的开发初衷。
适用范围:Weather_capturer_v3旨在向广大群众提供全国各城市天气查询服务,并且可以分析预测未来七日天气变化趋势,包含基本天气信息、今日降雨量、气象预警、湿度、能见度、气压、日出日落、紫外线等,适用于一切需要天气查询服务的人群。
Weather_capturer_v3运行界面如图:
城市编号可以在中国天气网等网站查询获得,这里我们以广州为例,经查询广州的城市编号为101280101,输入广州城市编号如图:
点击 按钮,等待数据处理约1~2秒,Weather_capturer_v3运行结果如图:
在App界面左侧的table直观地显示了所查询城市的最新天气基本信息,包括国家地区、城市编号、城市名、当前气温、今日最高气温、今日最低气温、更新时间、空气质量指数、空气质量等级、空气质量建议、口罩建议、外出建议、PM 2.5含量、PM 10含量、PM 2.5等级、PM 10等级、CO含量等;在App右侧的四个坐标区分别显示了未来七日气温变化曲线、未来七日空气质量变化曲线、未来七日空气湿度变化曲线以及当天24h气温变化柱状图。
我们在 处输入用户邮箱,该用户邮箱将接受Weather_capturer_v3提供的所查询城市的天气基本信息,这里以我自己的QQ邮箱演示,如图:
点击 按钮,用户邮箱会接收到天气信息邮件,如图:
至此,Weather_capturer_v3功能展示部分便告一段落。
App设计视图介绍
Weather_capturer_v3的设计视图比较简洁,布局十分干净清晰:设计视图左侧为一Table表格组件,用于显示所查询城市基本天气数据;右侧为四个坐标区组件分别用于显示未来七日气温变化曲线、未来七日空气质量变化曲线、未来七日空气湿度变化曲线以及当天24h气温变化柱状图;下方为两个用户文本编辑组件用于接收用户输入,以及两个Button组件用于调用回调函数;上方的label标签组件用于App名称。
App重点代码介绍:
MATLAB获取天气数据有两种方法:第一种就是爬虫的方法,解析HTML页面的内容,并用正则表达式去匹配我们想要爬取的天气数据;第二种是通过天气预报网站提供的API,直接获取结构化数据,省去解析HTML页面内容这一块,Weather_capturer_v3采用的便是该种方法。
中国天气网提供的API接口:
url = 'http://www.weather.com.cn/data/sk/101110101.html'
不过实测这个接口已经不再提供免费服务。
专业七日天气接口:
url='http://v1.yiketianqi.com/api?unescape=1&version=v9&appid=xxxxxxxx&appsecret=xxxxxxxx&cityid='
(免费七日天气接口API 未来一周天气预报api (tianqiapi.com)可以直接去该网站注册账号,获取API请求连接)
该接口提供7日天气数据,半小时左右更新一次,实况天气最快5分钟更新,包含基本天气信息、湿度、每日小时预报、6大生活指数、pm2.5、pm10、o3、no2、so2、是否需要带口罩、外出适宜、开窗适宜、是否需要打开净化器等,可按地名、城市编号、IP查询。
回调函数:(1)
调用天气网站API接口获取天气数据代码:
要绘制7日天气数据曲线图,首先要对天气数据进行整理,因为从天气网站API接口获取的天气数据为Struct结构体,数据值为字符串类型,是没有办法直接使用的,必须对数据进行删选转换:
将整理后的数据进行绘图处理,这里要注意绘图效果美观和逻辑严谨:
回调函数(2)
要实现向用户邮箱发送邮件的功能,我们首先要准备一个开通SMTP服务的邮箱作为本地服务器的发件邮箱。SMTP (Simple Mail Transfer Protocol)协议用于支持使用电子邮件客户端发送电子邮件:
编写MATLAB 邮件发送函数,需要一个开启SMTP服务的邮箱作为服务器代理邮箱,这一步很容易,网上有大量开启SMTP协议的教程(注意获取授权码):
开发心得:
Weather_capturer_v3的开发工作大概花费了一周的时间,整个App的功能和结构都很简单,代码也没有什么复杂的地方,但是由于我对MATLAB的Appdesigner并不熟悉,而且还要兼顾平时其余课程和科研任务,这对我这个初学者来说还是有一定难度的。
在程序设计阶段,我从网上查询了大量资料以及一些博主写的blog,这些对Weather_capturer_v3的开发工作起到了非常重要的帮助作用,在App功能实现的过程中我学到了很多,收获颇丰,内容包括不限于不少MATLAB函数的使用、如何调用网站的API接口或者或页面源代码写个简单的爬虫、Appdesigner的基本功能与基本结构等。
MATLAB(Matrix Laboratory)是一种强大的数学计算软件,广泛应用于工程、科学和数学领域,它提供了丰富的工具箱,用于解决各种问题,包括线性代数、信号处理、图像处理、控制系统等。通过学习MATLAB,我们能够提升数学建模的能力,可以用它来解决实际问题,进行数据分析和可视化,从而更好地理解和解释数学概念。同时,学习MATLAB可以帮助我们提升编程技能,学到如何编写脚本和函数,处理数据结构,进行条件判断和循环等。在工程领域,MATLAB被广泛用于解决各种问题,如信号处理、图像处理、控制系统设计等,通过学习MATLAB,我们可以更有效地解决和分析工程问题,提高工程实践的能力。
(完整代码会附上下载链接)
【免费】MATLABAppdesigner设计天气预报小程序:全国各城市天气查询系统Weather-capturer-v3资源-CSDN文库
欢迎大家交流分享!