Python气象应用教学探索与实践
Exploration and Practice of Python Weather Application Teaching
DOI: 10.12677/CES.2023.113097, PDF, HTML, XML, 下载: 224  浏览: 355  科研立项经费支持
作者: 王 伟:成都信息工程大学大气科学学院,四川 成都
关键词: 大气科学应用气象学气象数据Python程序设计教学活动Atmosphere Science Applied Meteorology Meteorological Data Python Programming Teaching Activities
摘要: Python语言优雅简洁、功能强大、免费开源,在数据处理、科学计算、数据可视化等方面具备优异的性能。气象和海洋领域拥有海量的模式和观测数据,Python在气象科研业务领域中已拥有了广泛应用。帮助大气科学与应用气象学专业本科生,系统地学习掌握Python相关实操基础知识和技能,将对其后续的学习和工作起到助力作用。本文首先介绍了《Python程序设计》课程开设的前提及必要性,之后从课程内容、课程设计、课程目标等方面进行了课程介绍,最后从课堂互动、课堂实施、课堂总结等几方面以2个学时的教学活动为例进行了重点展示。教学活动的完整展示充分体现了“多点结合,模块化、层次化深入”的教学原则。在教学活动中将专业知识与Python应用相结合,以气象问题为导向,引导学生分析问题解决问题,培养学生的科学思维和能力,引导学生践行“学思行结合,知行义合一”。
Abstract: Python language is elegant, simple, powerful, free and open. It has excellent performance in data processing, scientific calculation, data visualization, etc. There are massive models and observation data in the weather and ocean domain, and Python has been widely used in the weather scientific research. In this way, to help the students majoring in atmospheric science and applied meteorology systematically learn and master the practical basis of Python will play a critical role in their subsequent study and work. This paper first introduces the premise and necessity of the course “Python Programming”, then introduces the course from the aspects of course content, course design, course objectives, etc. At last, it mainly shows the teaching activities of 2 class hours, including classroom interaction, class implementation, class summary and so on. The complete display of the teaching activities fully reflects the teaching principle of “multiple combination, modularization, and deep level”. In the teaching activities, the professional knowledge is combined with Python application. Guided by the meteorological problem, the students were guided to analyze and solve problems, cultivate their scientific thinking and ability, and guide them to practice the “combination of learning, thinking and practice, and the unity of knowledge, understanding and righteousness”.
文章引用:王伟. Python气象应用教学探索与实践[J]. 创新教育研究, 2023, 11(3): 612-619. https://doi.org/10.12677/CES.2023.113097

1. 引言

大气科学和应用气象学专业,诸多工作都依赖于计算机,如天气、气候、大气化学、空间天气等的模拟都需要超算,且无论是科学研究还是业务工作都需要面对大量观测和模拟的气象数据,分析这些数据同样需要强大算力的支持,分析结果的展示及输出往往需要可视化,这都离不开编程和可视化软件。

Python是一门优雅、简洁、容易使用的语言 [1] 。Python第一个编译解释器诞生于1991年,从其一出生,就具有了类、函数、异常处理、核心数据类型以及模块等基础(https://docs.python.org/3/),有着很好的可拓展性。随后Python获得了高速的发展,至今Python的框架已经确立,标准库的体系已经稳定,其生态系统在第三方库包(Numpy, Pandas, Matplotlib, …)的拓展也取得了长足发展,在各个领域的应用也越发普及。

近些年Python以其无与伦比的优势呈现在大家面前,被众多气象科技业务工作者关注和使用。近些年美国国家地球物理学会也开始在其学术年会中举办Python专场讨论会;2019年2月,美国国家大气研究中心决定停止气象数据分析和绘图工具NCL (NCAR Command Language)的开发,将其功能移植到Python语言中(https://www.ncl.ucar.edu/Document/Pivot_to_Python/september_2019_update.shtml),这一决定更是将Python推向气象相关领域工作者的视野中。国内外大气海洋环境领域的专家们基于Python及其科学计算程序库建立了丰富的研发应用(Metpy, Scipy, Cartopy, netCDF4, Xarray, Geopandas, …)。

鉴于上述发展现状,结合学院对本科生的培养目标,对大气科学和应用气象学专业的本科生,在大学阶段学习Python的相关知识、了解掌握其在气象领域的应用是非常必要的,这将为其后续的工作学习奠定良好的基础。早在2018版人才培养方案的制定之初,学院就已经前瞻性的将Python课程纳入其中,这为后续课程的实施奠定了基础。学院领导的前瞻性和积极倡导,推动了课程的有效落地。目前该课程已成功开课两个学期,拥有了较为体系的课程相关资料(教学大纲、课程内容及设计方案、程序库和数据资源库、考核方案等),随着后续课程建设项目的实施,将不断完善更新课程体系,不断提升课程的魅力和含金量。

2. 课程总体设计

2020年,结合大气科学与应用气象学专业的特点(大数据 + 可视化需求),对《Python程序设计》教学大纲进行了修订,将掌握Python编程语言的基础知识、培养运用Python解决气象专业方面问题的能力(包括数据处理、专业绘图等)作为了课程的重点内容与目标。该课程开设于大一第二学期,作为气象专业技能类的入门课程之一,通过对本门课程的学习,学生将较为系统地掌握Python气象数据处理与可视化的基本技能,该课程注重培养学生分析问题和设计算法、编程实现解决问题的能力和常见的程序设计思维。

该课程内容包含有:程序设计概述、Python的发展历程和前景、Python的安装步骤、变量和数据类型、顺序结构的设计、选择结构的设计、循环结构的设计、函数与数组、文件读写、数据可视化等。线上资源选择推荐了中国大学MOOC(慕课)提供的北京理工大学嵩天等老师开设的国家精品课《Python语言程序设计》 [2] 、阿里云开发者社区提供的讲授与实际操作相结合的《Python学习路线》 [3] 、以及UCAR社区项目提供的python训练课程 [4] ;线下推荐了三本Python相关教材 [1] [5] [6] 供学生学习使用。

课程内容设计和气象科研业务需求结合,将内容、需求、方式、考核有机结合,依据“多点结合,模块化、层次化深入”的原则,进行课程设计和教学改革创新。“多点结合”包括技术内容和专业领域需求的结合,理论知识与实践环节的结合,知识和能力考核点面的结合等,“模块化”是指以模块化的方式进行课程设计,着重培养关键技能在科研业务重要领域的运用能力,“层次化深入”指的是由易到难,循序渐进有序的构建学生的知识体系。以气象问题为导向,知识学习和上机实践相结合,指导学生掌握气象数据处理和分析的基本技术,有效提高学生运用所学知识分析问题解决问题的能力,提升学生学习、表达、交流和协调能力,培养学生的团队合作精神和创新意识。

在近两年《Python程序设计》的行课过程中,教学团队注重不断完善课程体系,线上资源与线下教学有机结合,引导学生养成“课前预习拓展 + 课堂学习实践 + 课后巩固探索”的学习习惯。借鉴当前先进的教学理念和模式,引入研讨式、翻转课堂、科研学术讲座等教学模式,探索教学方式和考核模式的改革创新,围绕“两性一度”的金课标准,以气象相关问题的分析过程为引导,将问题与基础知识相结合,以Python作为实现工具,开展Python气象数据处理与可视化的“金课”建设,不断拓展专业课程的广度、深度和温度。

3. 教学样例展示

在《Python程序设计》的行课过程中,着眼于Python知识技能与气象科研业务前言热点的结合,注重拓展学生的学科知识,将所学内容融入学科应用的过程中,激发学生学习的自主性,提高学生学以致用的能力和认知。接下来以2个学时的课程教学活动为例进行教学过程展示。

3.1. 课程基本情况

表1主要从教学内容、学时、教学目标、教学方式等几方面,介绍了此次教学活动的基本情况。

Table 1. Basic information of teaching activities

表1. 教学活动的基本情况

3.2. 课堂互动-1 (20分钟)

3.2.1. 作业检查(8分钟)

上节课基于专业相关文本文件的读取、Python基本绘图库Matplotlib绘图设置等具体内容,为了引导学生课后巩固所学知识,提升其运用所学知识解决实际问题的能力,布置的课后作业分别为:绘制y = cos(x)函数曲线;绘制某年Niño3.4指数逐月演变时间序列。

课后作业以小组方式提交,小组长初步对所在小组同学遇到的问题(已解决、未解决)进行总结提交。授课教师结合学生作业和反馈信息调整线下课堂的安排与进度,并选择有价值的信息在课堂上进行分享。该环节基于学生对气象专业数据了解的不足,选择NCEP/NCAR (the National Centers for Environmental Prediction/National Center for Atmospheric Research)官方网站进行了数据集的拓展介绍(图1(a)),并选择优秀作业进行展示(图1(b)),以起到以优带全的模范作用。

(a) (b)

Figure 1. NCEP/NCAR website (a) and excellent homework (b)

图1. NCEP/NCAR官网 (a)与优秀作业 (b)

3.2.2. 线上资源学习情况(12分钟)

当前Python在线学习资源众多,本节课需要学生提前预习相关知识和技能,主要推荐的学习资源有阿里云开发者社区提供的讲授与实际操作相结合的《Python学习路线》 [5] 与UCAR社区项目提供的python训练课程 [6] 。本环节分三部分:首先,展示课前搜集的各小组线上学习情景图片;之后,围绕课前学习的线上资源给出针对性的相关问题,以自荐和抽点的方式检查学生线上资源掌握情况;最后,分小组引导学生分享线上资源学习的收获。通过本环节的开展,督促学生养成课前预习、课后复习的学习习惯,培养学生归纳自学知识、协同合作、积极分享学习收获的能力。

3.3. 课堂新内容实施(45分钟)

3.3.1. 导入–气象背景知识(5分钟)

介绍厄尔尼诺–南方涛动(El Niño-Southern Oscillation, ENSO)及其对中国乃至全球天气气候的重要影响,引入问题:气象数据是怎么描述强El Niño事件的呢?其时间演变、空间分布特征如何?旨在让学生了解背景知识的前提下,结合问题进行延伸思考,并和线上资源学习及已有知识技能结合。

3.3.2. 课堂授课-1 (20分钟)

该部分课程环节围绕强El Niño事件的时间演变特征这一问题展开,具体分为以下两部分:

1) 结合学生对问题的思考,带领学生进行气象数据的访问与下载操作(访问NCEP官网,打开Niño3.4指数),之后师生一起分析数据的结构、学习了解相关说明信息。通过这部分的开展,引导学生理解全面了解数据信息的重要性,并通过将数据与二维数组知识点进行联系,培养学生联系已学知识分析问题解决问题的能力。

2) 根据师生对几次超强El Niño事件的回顾,选择2015~2016年超级El Niño事件,开始绘制其时间演变的程序编写。该部分内容拆分为五步来完成,每步的具体操作、功能及目标见表2

Table 2. Steps to map the temporal evolution of strong El Niño events from 2015 to 2016

表2. 2015~2016年强El Niño事件时间演变特征的绘制步骤

图2给出了这一部分数据绘制的结果,展示了2014年1月至2016年12月Niño3.4区海温距平的演变序列。红色为超过0.5℃的海温异常,蓝色为低于0.5℃的海温异常,从2015年4月直至2016年4月海温距平持续超过了0.5℃,在2015年11月海温距平值达到最高值。该部分结合专业知识引入问题,应用Python实现问题的分析解决(表2),最终给出可视化结果(图2)。

3.3.3. 课堂授课-2 (20分钟)

该部分课程环节围绕强El Niño事件的空间分布特征这一问题展开,具体分为以下两部分:

Figure 2. Temporal evolution of strong El Niño events from 2014 to 2016

图2. 2014~2016年强El Niño事件时间演变特征

Table 3. Steps to map the spatial distribution of SSTA over the eastern equatorial Pacific in November 2015

表3. 2015年11月赤道东太平洋海温距平空间分布的绘制步骤

1) 依据El Niño的定义,结合2014~2016年海温距平的演变序列,引出本环节的重点:选取绘制2015年11月海温距平的空间分布。师生通过问题的分析可知:首先需要下载海温距平空间数据,引导学生结合之前NCEP/NCAR气象数据官网的介绍,搜索下载sst.mean.anom.nc数据;之后介绍读取NetCDF数据的常用库包-xarray,引导学生提取课前线上学习的xarray相关知识,并运用所学知识了解该海温数据的基本结构信息。通过本部分的课堂学习,引导学生学生再次理解全面了解数据信息的重要性,并通过将数据与三维数组知识点进行联系,培养学生联系已学知识分析问题解决问题的能力。

2) 根据上述分析,对气象数据(sst.mean.anom.nc)进行处理分析,编写绘制2015年11月赤道东太平洋海温距平空间分布的程序。该部分内容拆分为五步来完成,每步的具体操作、功能及目标见表3

Figure 3. Spatial distribution of SST anomalies (untis: ˚C) in the eastern equatorial Pacific in November 2015

图3. 2015年11月赤道东太平洋海温距平(单位:℃)的空间分布

图3给出了2015年11月赤道东太平洋海温距平的空间分布。赤道附近太平洋的海温距平均在0℃以上,其中赤道中东部地区的海温距平超过了2℃。该部分从气象热点问题出发,将专业知识与Python应用相结合,引导学生分析(表3)并解决问题(图3),期望能将学生从枯燥的技能学习中解放出来,通过技能学习与专业热点的结合,激发学生学习的自主性,引导学生践行“学思行结合,知行义合一”。

3.4. 课堂互动-2 (15分钟)

该环节是本门课程设计的一个必备环节:动一动。该部分以学生自我动手完善为主、教师答疑为辅,引导学生结合线上知识学习,对课堂讲授内容进行理解和吸收,并在自己笔记本电脑上再现,提升学生的动手能力,同时引导学生查漏补缺,及时发现自己的薄弱点。

3.5. 布置作业(5分钟)

结合课堂内容及进度,布置本次教学活动课后拓展作业如下:

1) 线上学习任务(xarray库包):https://unidata.github.io/python-training/gallery/gallery-home/,并留存学习剪影;

2) 绘制2020年7月东亚地区500 hPa风场矢量分布图,提交学习报告。

3.6. 课堂总结(5分钟)

3.2~3.5展示了本次教学活动的具体实施过程,在这个过程中有对课前知识预习的检查、有围绕气象热点问题而开展的专业知识与Python应用相结合的分析问题解决问题的全过程、有对课程的总结、也有对课程内容进行拓展的课后作业。

结合本次教学活动中各学习小组的进展情况,从“问题的由来–问题分析–数据处理及可视化”三方面归纳总结这次课程的重、难点,引导学生培养自己的科学思维和能力,培养学生分析问题、解决问题的能力,引导学生有效践行“学思并重,知行合一”。

总体而言本次教学活动基本完成了教学的既定目标,但还有几点不足有待后续不断改进,如:可以提前分享一篇相关文献,以提升学生对学科发展前沿的学术了解,激发其学习的主动性;课堂讨论由于班级人数较多,师生互动辐射范围不足,需要通过团队研讨看有哪些解决这一现状的途径或办法。

4. 结语

随着气象行业的蓬勃发展,气象行业已累积了海量的数据。对气象数据实现“气象+”影响价值的开发挖掘,需要新应用技术的融合发展。Python是一门面向对象的解释型编程语言,其语法清晰易懂,且拥有强大的第三方库函数。自2008年Python3.0问世以来,其在编程语言中的排名一路攀升,近几年更是高居榜首,在数据分析、科学运算、可视化、云计算、人工智能、信息采集、WEB开发、系统运维、自动化测试等领域有着不可替代的应用和前景。

近些年,Python在气象科研和业务领域中得到了广泛应用,对本科生开设Python气象应用相关课程是非常必要的。2021与2022年,结合大气科学与应用气象学专业的人才培养目标,基于开设的《Python程序设计》课程开展了Python应用与气象知识相结合的教学探索。2022版教学大纲在此基础上,还增设了Python气象应用的进阶课程、人工智能在地球科学领域应用介绍等相关课程,将为本科学生提供更为完整的学习体系。

基金项目

本文由成都信息工程大学本科教育教学研究与改革项目暨本科教学工程项目(JYJG2021034)与省级“课程思政”示范课程–大气流体力学项目(2020KCSZ01)共同资助完成。

参考文献

[1] Clinton W. Brownley. Python数据分析基础[M]. 陈光欣, 译. 北京: 人民邮电出版社, 2017.
[2] 中国大学MOOC(慕课). 北京理工大学: Python语言程序设计[EB/OL]. https://www.icourse163.org/course/BIT-268001?from=searchPage&outVendor=zw_mooc_pcssjg_, 2023-02-15.
[3] 阿里云开发者社区. Python学习路线(学+测) [EB/OL]. https://developer.aliyun.com/learning/roadmap/python, 2023-02-15.
[4] Unidata社区. Python Training [EB/OL]. https://unidata.github.io/python-training/, 2023-02-15.
[5] 王伟, 封彩云, 余莲, 华维. Python气象数据处理及绘图基础教程[M]. 北京: 科学出版社, 2021.
[6] Alle B. Downey. 像计算机科学家一样思考Python [M]. 赵普明, 译. 北京: 人民邮电出版社, 2013.