Python暑期课大作业

一、实验任务

描述本题目需要完成的内容和要求。本作业选择了第三道题,空气质量信息聚合平台,要求:

  1. 选择五个以上城市收集空气污染的特征参数(如AQI、SO2、PM10浓度等),并绘制显示AQI具体特征参数的直方图。
  2. 绘制过去五天内的每日平均空气质量图。

二、已完成任务

必做项目都已完成。

完成的选做任务有,使用Django + Vue前后端分离开发web型GUI。获取实时空气质量数据,绘制空气质量图,对不同空气质量进行分级。由于预测未来天气需要进行模型训练,目前没有好的硬件支持所以并未进行训练和预测。

三、总体设计方案

本次作业采用前后端分离的开发方式,后端采用Django + Python的开发,前端采用Vue进行模板的处理。后端使用Postman进行接口正确性验证,前端采用Springboot进行接口正确性验证。前端为localhost:8080,后端为localhost:8888。

对于实时的全国AQI分布图,采用GET请求;对于点击特定城市查询过去五日的信息采用POST请求;对于查询特定日期的全国分布图采用POST请求。

后端使用了包括Django、pyecharts、numpy、requests在内的第三方库,前端主要使用了axios、echarts、element-ui、vue、vue-router等dependencies。

运行方法详见README

后端:

  • 对数据进行爬取

空气质量Hadoop数仓建模 gis空气质量_Vue

  • 对数据进行处理入库

空气质量Hadoop数仓建模 gis空气质量_空气质量Hadoop数仓建模_02


空气质量Hadoop数仓建模 gis空气质量_Python_03

  • 设置和前端的接口函数

空气质量Hadoop数仓建模 gis空气质量_Vue_04

  • 根据初始化GET请求返回JSON格式的当前实时数据

空气质量Hadoop数仓建模 gis空气质量_Vue_05

  • 根据特定城市的POST请求返回过去五日的数据

空气质量Hadoop数仓建模 gis空气质量_Python_06

  • 根据特定日期的POST请求重定向至pyecharts所绘制地图的html

空气质量Hadoop数仓建模 gis空气质量_第三方库_07


空气质量Hadoop数仓建模 gis空气质量_空气质量Hadoop数仓建模_08

前端:

  • 构建布局

空气质量Hadoop数仓建模 gis空气质量_空气质量Hadoop数仓建模_09

  • 发送请求

空气质量Hadoop数仓建模 gis空气质量_Vue_10


空气质量Hadoop数仓建模 gis空气质量_Python_11


空气质量Hadoop数仓建模 gis空气质量_Vue_12

  • 解析数据

空气质量Hadoop数仓建模 gis空气质量_Vue_13

  • 利用echarts画图

空气质量Hadoop数仓建模 gis空气质量_空气质量Hadoop数仓建模_14

四、创新之处

采用的web型GUI,通过前后端分离Django + Vue的开发方式,使得程序后续扩展性很高并且基于Django和Vue的实用性以及广泛性,利于移植。利用分离开发的方式使得GUI更加的好看。同时采用的Django自带的数据库splite3,不需要格外进行MySQL的安装和配置,简单方便。

通过pyechartsecharts的画图,可以使得人机交互更加方便和快捷,极大的提升了数据的可视化程度和用户的使用性和舒适性。

五、实验总结

  • 在本实验中你遇到了哪些问题?是如何解决的?

本次作业问题比较大的有在于Django的使用。第一次使用django需要不断地上网查询相关用法以及项目中每个py文件每个组件的使用方法和意义。最大的问题就是前后端合并的时候的处理,特别是解决前后端不同端口的跨域问题,尝试了包括第三方库django-cors-headers进行跨域,以及前端的跨域解决办法都没有成功,最后使用自定义Django中间件才解决跨域问题,了解了web开发遇到的最常见问题之一,以及网络请求和回复的工作原理。

  • 有何收获和体会?你认为大作业题目还可以从哪些角度出题?并说明理由。

收获就是学会了Python的更多强大的第三方库并使用它们完成本次大作业,更加深入理解了Python语言的强大和解决问题的能力。同时学习并巩固了Vue的使用,以及首次遇到和解决前后端分离开发中遇到的问题。

大作业还可以从图像处理的角度出题,因为图像处理方面的研究和应用在大部分领域已经成熟,适合去探索和尝试。或者从经典的神经网络CNN、RNN等深度学习框架出题,通过利用Tensorflow、Pytorch等已有的工具进行出题,保证不会太难的同时给予同学们更多尝试的机会,因为机器学习、深度学习已经成为当下最热门的研究领域。

六、课程学习总结

课程收获和难点分析

在课程开始之前,我仅有少量的python基础,没有系统的进行过学习和训练。通过这门课程,我认为我的Python能力提高了很多,具体表现在课堂上学到的一些网上没有讲到的坑点,以及使用列表,字典等元素容器的方法和熟练度,以及使用第三方库。我认为本课程最难的地方在大作业的实际操作中,因为我大作采用了许多课堂之外的东西,需要通过不断的自学以及实践,才能完成大作业。

教师授课评价

老师工作态度认真,责任心强,备课充分,讲课水平高,英语教学质量高,时常关心学生课下压力是否过大等。

助教评价

助教工作态度认真,责任心强,在同学们遇到问题时积极回应和帮助解答。

当前课程教授内容评价与课程进一步改进建议

课程内容可以更加的丰富,由于Tkinter的使用可以说在实际当中使用较少,不如偏向一些科学计算,第三方库介绍以及数据挖掘等等方面简单的基础应用。以及题库中的题希望与当次课堂内容契合度高一点,并且丰富题库。