关注我获取更多学习资料,第一时间收到我的Python学习资料,也可获取我的联系方式沟通合作
由于可视化代码过长隐藏,可点击运行Fork查看 若没有成功加载可视化图,点击运行可以查看 ps:隐藏代码在【代码已被隐藏】所在行,点击所在行,可以看到该行的最右角,会出现个三角形,点击查看即可
Tropycal 是一个 Python 包,旨在简化检索和分析热带气旋数据的过程,既适用于过去的风暴,也适用于实时数据,主要面向研究和业务气象学领域。
Tropycal 可以读取 HURDAT2 和 IBTrACS 再分析数据以及国家飓风中心(NHC)的最佳路径数据,并将它们统一为同一格式,可用于进行气候学、季节性和单个风暴的分析。对于每个单独的风暴,可以检索和绘制操作性的 NHC 预报、模型预报、飞机侦察数据、降雨数据以及任何相关的龙卷风活动。
!pip install tropycal -i https://pypi.mirrors.ustc.edu.cn/simple/
Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/
Collecting tropycal
Downloading https://mirrors.ustc.edu.cn/pypi/packages/70/a6/1bbc3780c7c2eddc309b0717bf89a0c60632733bc9e10d1ffec14b264089/tropycal-1.3.tar.gz (10.1 MB)
[2K [90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[0m [32m10.1/10.1 MB[0m [31m31.6 MB/s[0m eta [36m0:00:00[0m00:01[0m0:01[0m
[?25h Preparing metadata (setup.py) ... [?25ldone
[?25hRequirement already satisfied: matplotlib>=2.2.2 in /opt/conda/lib/python3.9/site-packages (from tropycal) (3.8.3)
Requirement already satisfied: numpy>=1.14.3 in /opt/conda/lib/python3.9/site-packages (from tropycal) (1.26.4)
Requirement already satisfied: scipy>=1.1.0 in /opt/conda/lib/python3.9/site-packages (from tropycal) (1.11.4)
Requirement already satisfied: xarray>=0.10.7 in /opt/conda/lib/python3.9/site-packages (from tropycal) (2024.2.0)
Requirement already satisfied: pandas>=1.3.0 in /opt/conda/lib/python3.9/site-packages (from tropycal) (2.0.3)
Requirement already satisfied: networkx>=2.0.0 in /opt/conda/lib/python3.9/site-packages (from tropycal) (2.8)
Requirement already satisfied: requests>=2.22.0 in /opt/conda/lib/python3.9/site-packages (from tropycal) (2.27.1)
Requirement already satisfied: pyshp>=2.1 in /opt/conda/lib/python3.9/site-packages (from tropycal) (2.3.1)
Requirement already satisfied: pillow>=8 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (9.4.0)
Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (0.11.0)
Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (1.2.0)
Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (23.2)
Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (2.8.2)
Requirement already satisfied: importlib-resources>=3.2.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (5.7.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (4.33.3)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (1.4.2)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/conda/lib/python3.9/site-packages (from matplotlib>=2.2.2->tropycal) (3.0.9)
Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.9/site-packages (from pandas>=1.3.0->tropycal) (2022.1)
Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.9/site-packages (from pandas>=1.3.0->tropycal) (2024.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests>=2.22.0->tropycal) (1.26.9)
Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests>=2.22.0->tropycal) (3.3)
Requirement already satisfied: charset-normalizer~=2.0.0 in /opt/conda/lib/python3.9/site-packages (from requests>=2.22.0->tropycal) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests>=2.22.0->tropycal) (2024.2.2)
Requirement already satisfied: zipp>=3.1.0 in /opt/conda/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib>=2.2.2->tropycal) (3.8.0)
Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib>=2.2.2->tropycal) (1.16.0)
Building wheels for collected packages: tropycal
Building wheel for tropycal (setup.py) ... [?25ldone
[?25h Created wheel for tropycal: filename=tropycal-1.3-py3-none-any.whl size=242639 sha256=8fa0282e25b1de2ed7e73e2c6ad07d6775eb11fb18fb62a843228071802130e2
Stored in directory: /home/mw/.cache/pip/wheels/0f/13/85/10a0ae09d0a43a7a9ab81fae3e9133b1a246d1210c01070413
Successfully built tropycal
Installing collected packages: tropycal
Successfully installed tropycal-1.3
class tropycal.tracks.TrackDataset(
basin='north_atlantic',
source='hurdat',
include_btk=False,
interpolate_data=False,
**kwargs
)[source]
创建一个包含各种气旋数据的 TrackDataset
对象。
str
) – 要加载数据的海洋盆地。可以是以下之一:
名称数据源"north_atlantic"HURDAT2, IBTrACS"east_pacific"HURDAT2, IBTrACS"both"HURDAT2("north_atlantic" 和 "east_pacific" 合并)"west_pacific"IBTrACS"north_indian"IBTrACS"south_indian"IBTrACS"australia"IBTrACS*(特殊情况)"south_pacific"IBTrACS"south_atlantic"IBTrACS"all"IBTrACSstr
) – 要读取的数据源。默认为 HURDAT2。bool
, 可选) – 如果为 True
,则将最近几年 NHC 最佳路径数据添加到数据集中,这些数据在 HURDAT2 中不存在。仅适用于 "north_atlantic" 和 "east_pacific" 盆地。默认为 False
。bool
, 可选) – 如果为 True
,则将所有风暴数据插值为每小时数据。默认为 False
。str
, 可选) – 北大西洋 HURDAT2 数据集的 URL。可以更改为本地 txt 引用文件。默认从在线 URL 获取。str
, 可选) – 太平洋 HURDAT2 数据集的 URL。可以更改为本地 txt 引用文件。默认从在线 URL 获取。str
, 可选) – IBTrACS 数据集的 URL。可以更改为本地 txt 引用文件。可以是区域或全部 IBTrACS 文件。如果为区域文件,盆地应与前面提供的盆地参数匹配。默认从在线 URL 获取。bool
, 可选) – 修改数据集以包含 2004 年 Catarina 气旋的轨迹数据(来自 McTaggart-Cowan 等人的 2006 年研究)。默认为 False
。bool
, 可选) – 将北太平洋和东/中太平洋盆地的 IBTrACS 数据替换为 HURDAT 数据。默认为 False
。str
, 可选) – 读取 IBTrACS 的模式。默认为 "jtwc"。TrackDataset
类的一个实例。import tropycal.tracks as tracks
import tropycal.tornado as tornado
import datetime as dt
ibtracs_url='/home/mw/input/IBTrACS5221/ibtracs.ALL.list.v04r01.csv'
ibtracs = tracks.TrackDataset(basin='all',source='ibtracs',ibtracs_mode='jtwc_neumann',catarina=True,ibtracs_url=ibtracs_url)
ibtracs
--> Starting to read in ibtracs data
--> Completed reading in ibtracs data (17.86 seconds)
<tropycal.tracks.Dataset>
Dataset Summary:
Basin: all
Source: ibtracs, jtwc_neumann
Number of storms: 8378
Maximum wind: 185 knots (Nancy 1961)
Minimum pressure: 2 hPa (Faith 1972)
Year range: 1851 — 2024
ibtracs.plot_storm(('WUKONG',2018))
<GeoAxes: title={'left': 'Typhoon WUKONG', 'right': '22 Jul 2018 – 26 Jul 2018\n65 kt • 990 hPa • 3.9 ACE'}>
#Retrieve an instance of Storm for Hurricane Michael and store it in the variable "storm":
storm = ibtracs.get_storm(('WUKONG',2018))
#Plot the storm track for this Storm instance
storm.plot()
<GeoAxes: title={'left': 'Typhoon WUKONG', 'right': '22 Jul 2018 – 26 Jul 2018\n65 kt • 990 hPa • 3.9 ACE'}>
默认情况下,绘制风暴时设置为 domain='dynamic',这会放大整个路径。那让我们改一下范围
storm.plot(domain={'w':140,'e':175,'s':15,'n':50})
<GeoAxes: title={'left': 'Typhoon WUKONG', 'right': '22 Jul 2018 – 26 Jul 2018\n65 kt • 990 hPa • 3.9 ACE'}>
storm.plot(domain='dynamic_tropical',prop={'ms':10,'fillcolor':'blue','linecolor':'red','linewidth':2.0})
<GeoAxes: title={'left': 'Typhoon WUKONG', 'right': '22 Jul 2018 – 26 Jul 2018\n65 kt • 990 hPa • 3.9 ACE'}>
storm.plot(domain='dynamic_tropical',prop={'dots':False,'linecolor':'category','linewidth':3.0})
<GeoAxes: title={'left': 'Typhoon WUKONG', 'right': '22 Jul 2018 – 26 Jul 2018\n65 kt • 990 hPa • 3.9 ACE'}>
storm.plot(domain='dynamic_tropical',prop={'dots':False,'linecolor':'vmax','linewidth':3.0})
<GeoAxes: title={'left': 'Typhoon WUKONG', 'right': '22 Jul 2018 – 26 Jul 2018\n65 kt • 990 hPa • 3.9 ACE'}>
#Interpolate storm to hourly, and store as a new Storm object
storm_interpolated = storm.interp()
storm_interpolated
<tropycal.tracks.Storm>
Storm Summary:
Maximum Wind: 65 knots
Minimum Pressure: 974 hPa
Start Time: 2200 UTC 21 July 2018
End Time: 2000 UTC 26 July 2018
Variables:
time (datetime) [2018-07-21 06:00:00 .... 2018-07-27 06:00:00]
extra_obs (int64) [0 .... 0]
special (str) [ .... ]
type (str) [EX .... EX]
lat (float64) [20.6 .... 45.9]
lon (float64) [158.8 .... 153.2]
vmax (int64) [20 .... 20]
mslp (int64) [1008 .... 1007]
wmo_type (str) [DS .... ET]
wmo_lat (float64) [20.6 .... 45.8]
wmo_lon (float64) [158.8 .... 153.3]
wmo_vmax (float64) [nan .... nan]
wmo_mslp (float64) [nan .... 1008.0]
wmo_basin (str) [west_pacific .... west_pacific]
dvmax_dt (float64) [nan .... nan]
dmslp_dt (float64) [nan .... nan]
dx_dt (float64) [nan .... nan]
dy_dt (float64) [nan .... nan]
speed (float64) [nan .... nan]
More Information:
id: WP142018
operational_id:
name: WUKONG
year: 2018
season: 2018
basin: all
source: ibtracs
source_info: Joint Typhoon Warning Center (unofficial) & Charles Neumann reanalysis for South Hemisphere storms
ace: 3.9
realtime: False
invest: False
subset: False
dt_window: 24
dt_align: middle
ibtracs.plot_storms([('WUKONG',2000),('WUKONG',2006),('WUKONG',2012),('WUKONG',2018),('WUKONG',2024)],
prop={'linecolor':'category','linewidth':3,'plot_names':True})
<GeoAxes: title={'left': 'TC Track Composite'}>
使用这个库可以方便地进行历史台风绘制进行分析 当然只是进行简单使用,论文绘图还得上matplotlib和cartopy