数据使用说明
>
天机台风数据使用说明
Appearance
Appearance
天机台风数据(TJ-TC)对已命名热带气旋启动台风模拟数据服务,持续至该热带气旋停止编报。数据文件包含台风中心纬度、台风中心经度、台风中心海平面气压、台风最大十米风速、台风移动方向、台风移动速度、最大风速风圈半径等要素模拟(具体请查看数据清单)。数据更新频率为每日 2 次,最长模拟时效可达 240 小时,模拟时间步长为 6 小时。具体参数如下:
- 空间覆盖范围:105°E~180°E 经度范围、0°N~55°N 纬度范围(西太平洋关键台风活动区域);
- 时间分辨率:逐 6 小时(模拟时段内连续输出);
- 起报时间:每日世界时(UTC)00:00和12:00;
- 模拟时效:不固定(最长可达240 小时);
- 数据格式:NetCDF/CSV.
NetCDF 格式数据文件命名为:tc_WNP_{TC_NAME}track.nc
CSV 格式数据文件命名为:tc_WNP_track.csv
其中,”WNP”表示西太平洋台风活动区域,{TC_NAME} 表示当前台风名称(采用标准英文命名),台风名称可参考 TCVitals 热带气旋数据库: https://www.nhc.noaa.gov/aboutnames.shtml
数据按照起始时间建立文件夹进行存储,目录格式为:./{yyyymmddhh}/
例如,2026 年 4 月 12 日 12 时起始的台风 SINLAKU,其对应文件路径为:
NetCDF:./2026041212/tc_WNP_SINLAKU_track.nc CSV:./2026041212/tc_WNP_SINLAKU_track.csv
import netCDF4 as nc
# 1. 以只读方式打开文件
dataset = nc.Dataset('tc_WNP_SINLAKU_track.nc', 'r')
# 2. 按照要素清单全文提取 (1-10)
# [:] 用于直接获取数值数组
lat = dataset.variables['lat'][:] # 1. 中心纬度
lon = dataset.variables['lon'][:] # 2. 中心经度
mslp = dataset.variables['mslp'][:] # 3. 中心海平面气压
vmax = dataset.variables['vmax'][:] # 4. 最大十米风速
direc = dataset.variables['dir'][:] # 5. 移动方向
speed = dataset.variables['speed'][:] # 6. 移动速度
rmax = dataset.variables['rmax'][:] # 7. 最大风速半径
r34 = dataset.variables['r34'][:] # 8. 34节风圈半径
r50 = dataset.variables['r50'][:] # 9. 50节风圈半径
r64 = dataset.variables['r64'][:] # 10. 64节风圈半径
# 3. 打印第一个时刻的数据作为验证 (补全部分)
print(f"--- SINLAKU 初始观测数据 (netCDF4 版) ---")
print(f"位置: ({lat[0]:.2f}N, {lon[0]:.2f}E)")
print(f"中心气压: {mslp[0]} hPa")
print(f"最大风速: {vmax[0]} m/s")
print(f"移动方向/速度: {direc[0]}° / {speed[0]} m/s")
# 4. 关闭文件
dataset.close()
print("\n--- 读取完成 ---")import pandas as pd
# 1. 加载 CSV 文件 (已验证编码为 gbk)
file_path = 'tc_WNP_SINLAKU_track.csv'
df = pd.read_csv(file_path, encoding='gbk')
# 2. 这是一个已经过实地测试的列映射 (完全匹配您的文件表头)
# 我们将其映射为简洁的英文 key,方便后续程序调用
column_mapping = {
'time': 'time',
'经度': 'lon',
'纬度': 'lat',
'最大十米风速(米/秒)': 'vmax',
'最小海平面气压(百帕)': 'mslp',
'移向': 'dir',
'移速(米/秒)': 'speed',
'最大十米风速半径(千米)': 'rmax'
}
df.rename(columns=column_mapping, inplace=True)
# 提取各级风圈 (分别对应清单中的 r34, r50, r64)
r34_0 = [first_row['八级风圈半径_东北(千米)'], first_row['八级风圈半径_东南(千米)'],
first_row['八级风圈半径_西南(千米)'], first_row['八级风圈半径_西北(千米)']]
r50_0 = [first_row['十级风圈半径_东北(千米)'], first_row['十级风圈半径_东南(千米)'],
first_row['十级风圈半径_西南(千米)'], first_row['十级风圈半径_西北(千米)']]
# 4. 打印验证结果
print(f"--- SINLAKU 初始观测数据 (CSV) ---")
print(f"位置: ({first_row['lat']:.2f}N, {first_row['lon']:.2f}E)")
print(f"中心气压: {first_row['mslp']:.1f} hPa")
print(f"最大风速: {first_row['vmax']:.1f} m/s")
print(f"八级风圈(r34) NE,SE,SW,NW: {r34_0}")
# 5. [统计]
print(f"\n验证成功!文件包含 {len(df)} 行数据。")