Python绘制台风路径图-学习笔记

绘制2023年十一号台风海葵路径图

import matplotlib.pyplot as plt
import mpl_toolkits.basemap as bm
from mpl_toolkits.basemap import Basemap
plt.rcParams['font.sans-serif'] = ['SimHei']
import pandas as pd

# 读取 Excel 文件
file_path = '2023-11号台风海葵.xlsx'  # 替换为你的文件路径
df = pd.read_excel(file_path)

# 提取经度(lon)列中的数字
lon_column = 'lon'  # 替换为你的经度列名称
df['lon'] = pd.to_numeric(df['lon'], errors='coerce')

# 提取纬度(lat)列中的数字
lat_column = 'lat'  # 替换为你的纬度列名称
df['lat'] = pd.to_numeric(df['lat'], errors='coerce')

# 提取中心风力(wind_speed)列中的数字
wind_speed_column = 'wind_speed'  # 替换为你的中心风力列名称
df['wind_speed'] = pd.to_numeric(df['wind_speed'], errors='coerce')
# 显示处理后的数据
# print(df[['lon', 'lat', 'wind_speed']])
# 过滤非数值(空缺数)的行
df = df.dropna(subset=['lon', 'lat', 'wind_speed'])
# 提取所有风速范围的数据
all_data = df.copy()
'''
中心风力分级
热带低压6~7	热带风暴8~9	
强热带风暴10~11	台风12~13	
强台风14~15	超强台风16~
'''
# 提取不同风速范围的数据
wind_6_7 = df[(df['wind_speed'] >= 6) & (df['wind_speed'] <= 7)]
wind_8_9 = df[(df['wind_speed'] >= 8) & (df['wind_speed'] <= 9)]
wind_10_11 = df[(df['wind_speed'] >= 10) & (df['wind_speed'] <= 11)]
wind_12_13 = df[(df['wind_speed'] >= 12) & (df['wind_speed'] <= 13)]
wind_14_15 = df[(df['wind_speed'] >= 14) & (df['wind_speed'] <= 15)]
wind_16_above = df[df['wind_speed'] >= 16]
#绘制basemap
cm = bm.Basemap(llcrnrlon=104,llcrnrlat=12,urcrnrlon=150,urcrnrlat=30)
fig =plt.figure(figsize=[12,8],dpi=500)
lon_all, lat_all = cm(all_data['lon'].values, all_data['lat'].values)
# 将经纬度转换为地图坐标
lon_6_7, lat_6_7 = cm(wind_6_7['lon'].values, wind_6_7['lat'].values)
lon_8_9, lat_8_9 = cm(wind_8_9['lon'].values, wind_8_9['lat'].values)
lon_10_11, lat_10_11 = cm(wind_10_11['lon'].values, wind_10_11['lat'].values)
lon_12_13, lat_12_13 = cm(wind_12_13['lon'].values, wind_12_13['lat'].values)
lon_14_15, lat_14_15 = cm(wind_14_15['lon'].values, wind_14_15['lat'].values)
lon_16_above, lat_16_above = cm(wind_16_above['lon'].values, wind_16_above['lat'].values)
# 绘制散点图和连线
plt.plot(lon_all, lat_all,c='red', linewidth=0.5,zorder=1)
#---------------------------------
plt.scatter(lon_6_7, lat_6_7, s=19, c='green', marker='o', edgecolors='white', linewidth=0.5, label='6-7级',zorder=2)
plt.scatter(lon_8_9, lat_8_9, s=19, c='blue', marker='o', edgecolors='white', linewidth=0.5, label='8-9级',zorder=2)
plt.scatter(lon_10_11, lat_10_11, s=19, c='yellow', marker='o', edgecolors='white', linewidth=0.5, label='10-11级',zorder=2)
plt.scatter(lon_12_13, lat_12_13, s=19, c='orange', marker='o', edgecolors='white', linewidth=0.5, label='12-13级',zorder=2)
plt.scatter(lon_14_15, lat_14_15, s=19, c='purple', marker='o', edgecolors='white', linewidth=0.5, label='14-15级',zorder=2)
plt.scatter(lon_16_above, lat_16_above, s=19, c='red', marker='o', edgecolors='white', linewidth=0.5, label='>=16级',zorder=2)
cm.bluemarble()
plt.title("台风海葵路径图\nblue:风强>=8级 yellow:风强>=10级\norange:风强>=12级  purple:风强>=14级\nred:风强>=16级",fontsize=15)
#保存绘图
outputfilename=r'海葵路径显示.png'
fig.savefig(outputfilename)

结果如下

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium是一款先进的地理信息系统(GIS)软件开发工具,通过其强大的3D地球可视化功能,可以实现台风路径的显示和分析。 首先,要实现台风路径的显示,我们需要获取台风的数据。可以从气象机构或气象数据平台获取到最新的台风路径数据,这些数据通常包括台风的经纬度坐标点和相应的时间戳。我们可以将这些数据存储在数据库中,或转化为特定格式的文件,以便在Cesium中使用。 然后,使用Cesium的API和功能,我们可以将获取的台风路径数据加载到Cesium的3D地球模型上。通过在地球上绘制台风路径的线条,我们可以清晰地展示从起点到终点的路径。此外,可以根据时间戳为路径上的每个点添加动画效果,使得台风路径的展示更加生动。 此外,Cesium还提供多种视觉效果和交互功能,可以让用户更好地理解台风路径。例如,可以使用不同的颜色或线型表示不同的台风等级,使用不同的标表示台风的不同状态(如发展中、逐渐减弱等),以及添加信息窗口显示每个点的详细信息。 另外,Cesium还支持与其他GIS数据集的集成,例如地理信息、地形数据等,这样我们可以在台风路径上叠加更多的地理信息,以增强台风路径分析的功能。 总结来说,Cesium通过其强大的3D地球可视化功能和丰富的API,可以实现台风路径的显示和分析。通过加载台风路径数据,在地球上绘制路径线条,并配以动画效果和视觉效果,可以使用户更直观地了解台风路径,并能进行更详细的分析和研究。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值