Python气象实例——浅要绘制台风生成环境场
A3.浅要绘制台风生成环境场
● 绘制海表面温度情况
● 绘制中层湿度
● 绘制流场和相对涡度
● 绘制垂直风切变
实例三
● 本次使用个例为2023年第5号台风“杜苏芮”,利用2023年7月20日08时的气象场(包含海表面温度,中层湿度,垂直风切变,绝对涡度)浅要分析台风生成大环境背景的情形
# 引入处理数据需要的库 import xarray as xr import numpy as np # 打开对应的数据集,本例所用的数据是EAR5的数据 dt1 = xr.open_dataset('/home/chenzixuan0811/pycode/tc_code/天缘气遇投稿/投稿2/23072008_sst.nc') # 打开海温数据集 dt2 = xr.open_dataset('/home/chenzixuan0811/pycode/tc_code/天缘气遇投稿/投稿2/23072008_wind.nc') # 打开风速数据集 dt3 = xr.open_dataset('/home/chenzixuan0811/pycode/tc_code/天缘气遇投稿/投稿2/23072008_vo.nc') # 打开相对涡度数据集 dt4 = xr.open_dataset('/home/chenzixuan0811/pycode/tc_code/天缘气遇投稿/投稿2/23072008_rh600.nc') # 打开600hPa相对湿度数据集 # 进行生成条件分析中,使用变量 sst = dt1.sst[0,:,:].values - 275.15 # 获取海表温度数据,并将单位转换为℃ rh = dt4.r[0,:,:].values / 100 # 获取600hPa相对湿度数据,并将单位转换为百分比 vo = dt3.vo[0,:,:].values * 10**5 # 获取相对涡度数据,并将单位转换为10^5 1/s U850 = dt2.u[0,1,:,:].values # 获取850hPa风速数据 V850 = dt2.v[0,1,:,:].values # 获取850hPa风速数据 U200 = dt2.u[0,0,:,:].values # 获取200hPa风速数据 V200 = dt2.v[0,0,:,:].values # 获取200hPa风速数据 # 计算风切变 WINDshear = np.sqrt((U200 - U850)**2 + (V850 - V200)**2) lons = dt1.longitude.values # 获取经度数据 lats = dt1.latitude.values # 获取纬度数据 X1, Y1 = np.meshgrid(lons, lats) # 生成经纬度网格,为后面画流场做准备 # 关闭数据集 dt1.close() dt2.close() dt3.close() dt4.close()
#完成数据处理部分以后,开启画图部分,引入我们所用到的库 import matplotlib.pyplot as plt import matplotlib as mpl import cartopy.crs as ccrs import cartopy.feature as cfeature from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter import cartopy.feature as cfeat import cartopy.mpl.ticker as cticker
# 用来正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示负号 plt.rcParams['axes.unicode_minus'] = False # 创建一个函数用于绘制对应图片 #对应传入参数是绘图数据(data),色标数值(levels),色标颜色(cmap),图片名称(title),图片存储的名字(filename),是否为超出范围的值设置尖端 def plot_map_data(data, levels, cmap, title, filename, extend='neither'): # 创建一个图形对象和坐标轴对象 fig = plt.figure(figsize=(8, 8), dpi=300) #使用fig.add_axes,要记住rect四个参数的含义,四个值分别是左边界、下边界、宽度和高度,取值范围为 0 到 1 #如例子里面[0.1, 0.1, 0.8, 0.8] 表示左下角位置为 (0.1, 0.1),宽度和高度为整个图形宽度和高度的80% ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], projection=ccrs.PlateCarree()) # 设置对应的显示范围 leftlon, rightlon, lowerlat, upperlat = (100, 160, 0, 40) ax.set_extent([leftlon, rightlon, lowerlat, upperlat], crs=ccrs.PlateCarree()) # x, y坐标轴设置 lon_formatter = cticker.LongitudeFormatter() lat_formatter = cticker.LatitudeFormatter() ax.set_xticks(np.arange(100, 160 + 10, 10), crs=ccrs.PlateCarree()) ax.set_yticks(np.arange(0, 40 + 10, 10), crs=ccrs.PlateCarree()) ax.xaxis.set_major_formatter(lon_formatter) ax.yaxis.set_major_formatter(lat_formatter) # 显示海岸线、海洋、陆地 ax.add_feature(cfeature.COASTLINE) # 绘制等值填充图 c = ax.contourf(lons, lats, data, levels=levels, transform=ccrs.PlateCarree(), cmap=cmap, extend=extend) # 添加颜色条 position = fig.add_axes([0.1, 0.12, 0.8, 0.02]) cbar = fig.colorbar(c, cax=position, orientation='horizontal', drawedges=True) # 设置标题 ax.set_title(title, fontsize=20, loc='center', pad=20) # 保存图形,bbox_inches用于指定要保存的图形的边界框,一般我们使用bbox_inches='tight'自动调整边界框,删除多余的空白区域,使得保存的图形更紧凑 plt.savefig(filename, dpi=300, bbox_inches='tight') # 绘制海表温度图,并保存为文件 plot_map_data(sst, np.arange(25, 30, 1), 'OrRd', '23072008_sst', 'output_sst.png',extend='max') # 绘制相对湿度图,并保存为文件 plot_map_data(rh, np.arange(0.4, 1.2, 0.2), 'Blues', '23072008_rh600', 'output_rh.png') # 绘制涡度和流场图,并保存为文件 fig = plt.figure(figsize=(8, 8), dpi=300) ax = fig.add_axes([0.1, 0.1, 0.8, 0.8], projection=ccrs.PlateCarree()) ax.add_feature(cfeature.COASTLINE, color='gray') c = ax.contourf(lons, lats, vo, levels=np.arange(0, 12, 2), transform=ccrs.PlateCarree(), cmap='OrRd', extend='max') #绘制流线(在低纬度常看流场) #关于streamplot函数,这里的X1,Y1表示网格的x和y坐标,通常是使用numpy.meshgrid函数生成的网格坐标 #U850, V850表示在每个网格点上的x和y方向上的速度分量,density,linewidth,arrowsize,color为可选参数 #在python中输入help(plt.streamplot),就可以查看streamplot这一函数的用法,其中包括可选函数等的详细说明,在遇到不太明白的函数时,选择使用help()来来查看函数的帮助文档 plt.streamplot(X1, Y1, U850, V850, density=3, linewidth=0.4, arrowsize=0.5, color='k') position = fig.add_axes([0.1, 0.12, 0.8, 0.02]) cbar = fig.colorbar(c, cax=position, orientation='horizontal', drawedges=True) ax.set_title('23072008_vo', fontsize=20, loc='center', pad=20) plt.savefig('output_vo.png', dpi=300, bbox_inches='tight') # 绘制风切变图,并保存为文件 plot_map_data(WINDshear, np.arange(0, 12, 2), 'OrRd_r', '23072008_windshear', 'output_windshear.png')
海表面温度
海表面温度控制着海洋向台风输入的热通量,一般认为台风生成时海温需要大于 26.5ºC。本次台风生成源地位于西太平洋暖池,海温高于26.5℃。
600hPa中层湿度
中层湿度能够为台风是发生发展提供充足的水汽条件,水汽在上升过程中释放凝结潜热,有助于台风眼墙的建立。
所示为805hPa流场,填色部分为850hPa相对涡度
初始扰动是台风生成的重要条件,在台风生成之际,西太平洋暖池位置已经存在台风胚胎。
环境风垂直切变
环境风垂直切变是影响热带气旋强度变化的重要环境条件之一,垂直风切变较弱情况下,有利于波动稳定、能量的积累以及台风暖心结构的形成。研究表明,使台风增强或减弱的风切变阈值约为 10 m / s,当环境风垂直切变小于10 m / s 时,有利于台风强度的增强,反之则会使台风强度减弱。在此次“杜苏芮”台风生成源地,存在着较弱的垂直风切变。
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费】