Skip to content

天机台风数据使用说明

天机台风数据(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

1. NetCDF4 文件格式使用

python
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--- 读取完成 ---")

2. CSV 文件格式使用

python
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)} 行数据。")