台风实时与历史详情查询免费 API 接口完整教程

简介: 该台风API接口覆盖实时与历史数据,提供台风基础信息、逐时路径、四象限风圈半径、120小时预报等精细化字段,支持year查列表、no查详情两种调用模式,适用于路径动画、影响评估等专业场景。(239字)

一、接口能查到什么

接口盒子的这个接口一次性覆盖了实时台风 + 历史台风两类需求,而且数据粒度很细,不只是给你一个「台风名字」:

  • 台风基础信息:中文名、英文名、国内编号、国际编号、代号寓意、当前状态(移动/停止)
  • 逐时段实况路径:时间、经纬度、强度等级、中心气压、风速、移向、移速
  • 风圈半径:7 级、10 级、12 级风圈,且按东北/东南/西南/西北四个象限分别给出
  • 未来预报路径:12h / 24h / 36h / 48h / 72h / 96h / 120h 的预测位置、强度、气压、风速

换句话说,做一个台风路径动画或者影响范围评估,这套数据基本够用。


二、请求地址与参数

请求地址

https://cn.apihz.cn/api/tianqi/taifeng.php

请求方式:GET 或 POST 均可。

参数

名称

必填

说明

id

用户 ID

用户中心的数字 ID,如 id=10000000

key

用户 KEY

用户中心通讯秘钥

year

年份

2000 年到当前年,传此参数返回当年台风列表,与 no 二选一

no

台风编号

传此参数返回该台风详情,与 year 二选一



三、两种调用模式

模式 1:传 year —— 拿某一年台风列表

比如 year=2026,返回的是这一年的台风清单,里面包含 list.no1这个台风唯一编号,再用它去查详情。

返回核心字段:

字段

含义

list.no1

台风唯一编号,用来查详情

list.no2

国内编号

list.no3

国际编号

list.namecn

中文代号

list.nameen

英文代号

list.explanation

代号寓意

list.type

start=移动,stop=停止

模式 2:传 no —— 拿单个台风完整详情

这是最常用的姿势。拿到编号后,返回的数据包非常完整:

台风头部信息

字段

含义

no1 / no2 / no3

各类编号

namecn / nameen

中英文名称

explanation

名字寓意

type

当前状态

datas 路径数据集(每个时间点一条)

字段

含义

time_ymdh

时间点

lat / lon

中心经纬度

position_text

坐标描述

intensity_code / intensity_text

强度代码与中文

pressure_hpa

中心最低气压

wind_speed_ms

中心风速

intensity_desc

强度完整文本

move_dir_code / move_dir_text

移向

move_speed_kmh / move_desc

移速

wind_radius

风圈数据集

forecast_babj

未来预报节点(一般只在最后一个时间段出现)

风圈 wind_radius 子字段

字段

含义

grade / grade_text

风级代码与中文

ne/se/sw/nw_radius_km

四象限半径

avg_radius_km

四向平均半径,适合快速评估影响范围

预报 forecast_babj 子字段

字段

含义

forecast_hour

未来小时数

target_time_ymdh

预报时间

lat / lon

预测位置

pressure_hpa / wind_speed_ms

预测气压风速

intensity_code / intensity_text

预测强度

forecast_desc

预报描述


四、返回数据示例

失败返回

{"code":400,"msg":"查询失败,请重试。"}

成功返回(节选关键结构)

{
  "code": 200,
  "no1": "3257931",
  "no2": "2609",
  "no3": "2609",
  "namecn": "巴威",
  "nameen": "BAVI",
  "explanation": "位于越南北部的山脉",
  "type": "start",
  "datas": [
    {
      "time_ymdh": "2026-07-02 08:00:00",
      "lat": 11,
      "lon": 160.1,
      "position_text": "11.0°N, 159.4°E",
      "intensity_code": "TS",
      "intensity_text": "热带风暴",
      "pressure_hpa": 998,
      "wind_speed_ms": 18,
      "intensity_desc": "热带风暴,中心气压998hPa,最大风速18m/s",
      "move_dir_code": "WNW",
      "move_dir_text": "西北西",
      "move_speed_kmh": 20,
      "move_desc": "向西北西移动,时速20公里",
      "wind_radius": [
        {
          "grade": "30KTS",
          "grade_text": "七级",
          "grade_desc": "七级风圈(≥17.2m/s,风力7级)",
          "ne_radius_km": 280,
          "se_radius_km": 180,
          "sw_radius_km": 180,
          "nw_radius_km": 220,
          "avg_radius_km": 215
        }
      ]
    }
  ],
  "forecast_babj": [
    {
      "forecast_hour": 24,
      "target_time_ymdh": "202607070600",
      "lat": 17.2,
      "lon": 133.4,
      "pressure_hpa": 930,
      "wind_speed_ms": 55,
      "intensity_code": "SuperTY",
      "intensity_text": "超强台风",
      "forecast_desc": "24小时后:17.2°N, 133.4°E,超强台风,气压930hPa,风速55m/s"
    }
  ]
}

五、PHP 调用示例

示例 1:GET 方式(最简单)

<?php
$apiUrl = 'https://接口盒子/api/tianqi/taifeng.php';
// 替换为自己的 ID 和 KEY
$userId = '10000000';
$userKey = '15he5h15ty854j5sr152hs2';
// 方式一:查 2026 年台风列表
$params = [
    'id'   => $userId,
    'key'  => $userKey,
    'year' => 2026,
    'no'   => ''
];
// 方式二:查指定台风详情(拿到 no1 后使用)
// $params = [
//     'id'  => $userId,
//     'key' => $userKey,
//     'year'=> '',
//     'no'  => '3257931'
// ];
$url = $apiUrl . '?' . http_build_query($params);
$response = file_get_contents($url);
$data = json_decode($response, true);
if ($data['code'] == 200) {
    echo "查询成功\n";
    echo "台风名称:{$data['namecn']} ({$data['nameen']})\n";
    echo "当前状态:{$data['type']}\n";
    foreach ($data['datas'] as $item) {
        echo "时间:{$item['time_ymdh']},位置:{$item['position_text']},强度:{$item['intensity_text']},风速:{$item['wind_speed_ms']}m/s\n";
    }
    // 未来预报
    if (!empty($data['forecast_babj'])) {
        echo "\n未来预报:\n";
        foreach ($data['forecast_babj'] as $f) {
            echo "{$f['forecast_desc']}\n";
        }
    }
} else {
    echo "查询失败:{$data['msg']}\n";
}

示例 2:POST 方式(cURL,更规范)

<?php
$apiUrl = 'https://接口盒子/api/tianqi/taifeng.php';
$userId = '10000000';
$userKey = '15he5h15ty854j5sr152hs2';
$postData = [
    'id'   => $userId,
    'key'  => $userKey,
    'year' => 2026,
    'no'   => ''
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo '请求错误:' . curl_error($ch);
    exit;
}
curl_close($ch);
$data = json_decode($response, true);
header('Content-Type:text/html;charset=utf-8');
if ($data['code'] == 200) {
    echo '<h3>台风:' . $data['namecn'] . ' ' . $data['nameen'] . '</h3>';
    echo '<p>代号寓意:' . $data['explanation'] . '</p>';
    echo '<p>当前状态:' . $data['type'] . '</p>';
    echo '<h4>路径数据:</h4><ul>';
    foreach ($data['datas'] as $v) {
        echo "<li>{$v['time_ymdh']} | {$v['position_text']} | {$v['intensity_text']} | 风速{$v['wind_speed_ms']}m/s | {$v['move_desc']}</li>";
    }
    echo '</ul>';
} else {
    echo '接口返回错误:' . $data['msg'];
}

六、Python 调用示例

示例 1:GET 方式

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
import json
class TyphoonAPI:
    def __init__(self, uid, ukey):
        self.url = "https://接口盒子/api/tianqi/taifeng.php"
        self.uid = uid
        self.ukey = ukey
    def query(self, year=None, no=None):
        params = {
            "id": self.uid,
            "key": self.ukey,
            "year": year,
            "no": no
        }
        try:
            resp = requests.get(self.url, params=params, timeout=10)
            resp.raise_for_status()
            return resp.json()
        except Exception as e:
            return {"code": 400, "msg": f"请求异常: {e}"}
if __name__ == "__main__":
    # 替换为自己的 ID 和 KEY
    api = TyphoonAPI(uid="10000000", ukey="15he5h15ty854j5sr152hs2")
    # 1. 先查年份列表
    data = api.query(year=2026)
    # 2. 再查某个台风详情
    # data = api.query(no="3257931")
    if data.get("code") == 200:
        print(f"台风:{data.get('namecn')}({data.get('nameen')})")
        print(f"寓意:{data.get('explanation')}")
        print(f"状态:{data.get('type')}")
        print("-" * 60)
        for item in data.get("datas", []):
            print(
                f"{item['time_ymdh']} | "
                f"{item['position_text']} | "
                f"{item['intensity_text']} | "
                f"风速{item['wind_speed_ms']}m/s | "
                f"{item['move_desc']}"
            )
        # 风圈信息
        if data["datas"]:
            last = data["datas"][-1]
            for wr in last.get("wind_radius", []):
                print(
                    f"风圈:{wr['grade_text']},"
                    f"四向平均半径{wr['avg_radius_km']}km,"
                    f"NE{wr['ne_radius_km']}/SE{wr['se_radius_km']}/"
                    f"SW{wr['sw_radius_km']}/NW{wr['nw_radius_km']}"
                )
        # 未来预报
        if data.get("forecast_babj"):
            print("\n未来预报:")
            for f in data["forecast_babj"]:
                print(f["forecast_desc"])
    else:
        print(f"查询失败:{data.get('msg')}")

示例 2:POST 方式

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
台风 API - Python POST 示例
"""
import requests
def query_typhoon(uid, ukey, year=None, no=None):
    url = "https://接口盒子/api/tianqi/taifeng.php"
    data = {
        "id": uid,
        "key": ukey,
        "year": year,
        "no": no
    }
    try:
        resp = requests.post(url, data=data, timeout=10)
        resp.raise_for_status()
        return resp.json()
    except Exception as e:
        return {"code": 400, "msg": str(e)}
if __name__ == "__main__":
    UID = "10000000"
    UKEY = "15he5h15ty854j5sr152hs2"
    result = query_typhoon(UID, UKEY, year=2026)
    if result["code"] == 200:
        # 如果是列表模式
        if "list" in result:
            print("2026 年台风列表:")
            for t in result["list"]:
                print(
                    f"编号:{t['no1']},"
                    f"中文名:{t['namecn']},"
                    f"英文名:{t['nameen']},"
                    f"状态:{t['type']}"
                )
        else:
            print(f"台风详情:{result['namecn']}")
    else:
        print(f"错误:{result['msg']}")

七、常见坑位与注意事项

  1. year 和 no 必须传一个:两个都空会直接失败,推荐先用 year 拿列表、再用 no1 查详情。
  2. 历史年份范围:支持 2000 年到当前年份,查不到 1999 年的。
  3. 强度代码含义:TS=热带风暴、STS=强热带风暴、TY=台风、STY=强台风、SuperTY=超强台风,做可视化时可以直接映射颜色。
  4. 风圈 avg_radius_km 很好用:不想画四个象限,直接用平均值就能快速圈出影响范围。
目录
相关文章
|
2天前
|
人工智能 弹性计算 运维
|
23天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
8天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。
|
13天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
501 127
|
17天前
|
存储 人工智能 监控
QoderWork完全指南:从入门到精通,把“AI实习生”变成你的全能工作搭档
阿里云2026年推出的桌面端AI工作助手QoderWork,不止聊天,更可动手干活:本地运行、安全可控,支持文件整理、数据分析、PPT生成、网页开发等;内置专家套件、多Agent协作与自定义Skills,让AI真正成为你身边的“AI实习生”。
|
7天前
|
人工智能 编解码 物联网
2026 最新Stable Diffusion 本地部署教程 下载安装使用详细图解(含官网安装包)
Stable Diffusion(SD)是2022年发布的开源文生图模型,由Stability AI等联合开发。支持文生图、图生图、局部重绘等,依托VAE降低算力需求,可在消费级显卡运行。本文提供秋葉aaaki制作的Windows整合包(含图形界面与插件),开箱即用,零配置启动。
|
9天前
|
人工智能 安全 程序员
终于,Claude Code 封号的原因被曝光了!竟然针对中国用户,植入隐形代码?!
通俗易懂地揭秘 Claude Code 封号的手段,分享一些自己对 AI 编程困境的思考,Codex、Cursor、DeepSeek、智谱 GLM、甚至是豆包,都有所行动了
481 1
|
10天前
|
人工智能 安全 Cloud Native
Higress 新发布:AI Gateway 能力增强,Gateway API 及其推理扩展持续打磨
增强 AI 网关能力,持续打磨 Gateway API 及其推理扩展。
399 125
|
16天前
|
人工智能 弹性计算 API
什么是 AlibabaCloud Agent Toolkit
Alibaba Cloud Agent Toolkit 是面向AI Agent的阿里云智能工具套件,集成OpenAPI、Terraform、CLI与文档能力,提供MCP插件、场景化Skills及执行审计机制,助AI准确查API、生成代码、规划架构、校验部署,实现安全、可靠、可追溯的云上智能运维。
424 2