摩羯-2024年11号台风路径初分析初步

背景内容

前几日,发展生成于南海本土的今年我国首个秋台风摩羯(Yagi)先后登陆菲律宾吕宋岛、我国海南省文昌市、广东省徐闻县以及越南广宁省,给海南造成的经济损失远超2014年超强台风“威马逊”,成为自1949年以来登陆我国的最强秋台风。摩羯在超强台风级别维持时间长达64小时,最大风速17级以上(68米/秒),中心最低气压为905百帕,对我国造成重大影响。

对此,我们简单的用再分析资料来研究一下台风摩羯的生成发展与路径走向。本篇只简单的记录分析一下其相关气象要素场的演变和路径变化。

数据下载

ERA5再分析资料的下载地址:ERA5 hourly data on pressure levels from 1940 to present (copernicus.eu)

ERA5 hourly data on single levels from 1940 to present (copernicus.eu)

可视化与计算

对于台风摩羯,我们可以先看看海平面气压场和850hpa的涡度场的演变,代码如下。

以下用海平面气压的动图为例,涡度也是一样的:

import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from matplotlib.animation import FuncAnimation
#库的导入
df=xr.open_dataset(r"D:\Pangu-Weather-ReadyToGo\Test-Data\mslp-10mU-10mV-2mT-2024.09.01-08.24h.nc")
slp = df.msl.loc[:, :, :]#导入海平面气压数据
slp = slp / 100  # hpa#换算单位
lon,lat,time=slp['longitude'][:],slp['latitude'][:],np.array(slp['valid_time'][:])
time_list=[str(i)[:-10] for i in time]#构建时间序列
# 设置绘图范围
extent = [80, 140.1, 0, 45.1]
#创建子图
fig = plt.figure(figsize=[6, 4])
proj = ccrs.SouthPolarStereo()#设置投影
ax = fig.add_subplot(111,projection=ccrs.PlateCarree())
# 初始化colorbar为None
colorbar = None
# 绘图函数
def plot_frame(idx):
    global colorbar
    ax.clear()  # 清空当前图像
    #---开始绘图---
    ax.set_extent(extent, crs=ccrs.PlateCarree())
    ax.coastlines('50m', linewidth=1.2)
    ax.add_feature(cfeature.NaturalEarthFeature('physical', 'land', '50m', edgecolor='k', facecolor='None'), zorder=2,
                   alpha=0.5)
    # 绘制格网线
    gl = ax.gridlines(draw_labels=True, lw=1, color='k', alpha=0.5, ls='--')
    gl.top_labels = False
    gl.right_labels = False
    # 绘制海平面气压等值线
    current_spl = slp.isel(valid_time=idx)
    cair1 = ax.contourf(lon, lat, current_spl, extend='both', levels=np.arange(990, 1021, 1),
                        cmap='jet', transform=ccrs.PlateCarree())
    # 更新colorbar
    if colorbar is None:
        colorbar = fig.colorbar(cair1, ax=ax, orientation='vertical', fraction=0.046, pad=0.04)
    else:
        colorbar.remove()  # 移除旧的colorbar
        colorbar = fig.colorbar(cair1, ax=ax, orientation='vertical', fraction=0.046, pad=0.04)
    # 时间标题
    ax.set_title(f'Mean SLP - {str(time[idx])[:-10]}', fontsize=10, pad=5)
# 创建动画
ani = FuncAnimation(fig, plot_frame, frames=len(time_list), repeat=False)
# 保存动画
ani.save('Mojie_animation-slp.gif', writer='ffmpeg', fps=4)

以下为结果展示: 

台风路径

接下来我们再对台风的路径进行确定,即地面的海平面气压最低值中心对应的经纬度格点。本篇未加其他限制条件,实际上还需要850hpa-200hpa厚度、最大风速、850hpa涡度等限制条件。

import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
#库的导入
df=xr.open_dataset(r"D:\Pangu-Weather-ReadyToGo\Test-Data\mslp-10mU-10mV-2mT-2024.09.01-08.24h.nc")
slp = df.msl.loc[:, :, :]#导入海平面气压数据
slp = slp / 100  # hpa#换算单位
lon_need,lat_need,time=slp['longitude'][:],slp['latitude'][:],np.array(slp['valid_time'][:])
time_list=[str(i)[:-10] for i in time]#构建时间序列
lon_array,lat_array=[],[]
for date_judge in time_list[0:-1:3]:
    slp_need=slp.loc[date_judge, 35:0, 90:160]#气压
    lon_need, lat_need = slp_need.longitude, slp_need.latitude
    if np.min(slp_need) <= 995:
        slp_n = np.array(slp_need)  # array化
         # 找到初始最低气压位置-台风初始位置
        min_index = np.unravel_index(np.argmin(slp_n), slp_n.shape)  # 将扁平索引转换为二维索引,适用于slp的形状
        # 根据索引找到对应的经纬度
        min_lat = np.array(lat_need[min_index[0]])
        min_lon = np.array(lon_need[min_index[1]])
        lon_array.append(min_lon)
        lat_array.append(min_lat)
for i in range(len(lon_array)):
    print(lon_array[i],lat_array[i])
# 设置绘图范围
extent = [98, 130.1, 9, 30.1]
fig = plt.figure(figsize=[6, 4])
proj = ccrs.SouthPolarStereo()
ax = fig.add_subplot(111,projection=ccrs.PlateCarree())
ax.set_extent(extent, crs=ccrs.PlateCarree())
ax.coastlines('50m', linewidth=1.2)
scale = '50m'
ax.add_feature(cfeature.LAND, facecolor='#c14a09',alpha=0.8)  # 棕色陆地
ax.add_feature(cfeature.OCEAN, facecolor='cyan',alpha=0.9)  # 浅蓝色海洋
# 绘制格网线
gl = ax.gridlines(draw_labels=True, lw=1, color='k', alpha=0.5, ls='--')
gl.top_labels = False
gl.right_labels = False
ax.plot(lon_array,lat_array,markerfacecolor='red',c='red',
        marker='o',lw=0.5,ms=3)
plt.title('No.11 Typhoon Yagi track')
plt.show()

 结果如下:这里对逐3小时的路径进行可视化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值