台风实时与历史详情查询免费 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 很好用:不想画四个象限,直接用平均值就能快速圈出影响范围。
目录
相关文章
|
架构师 Java 数据库连接
Java异常处理的20个最佳实践:告别系统崩溃
你是否在为如何处理异常而困扰? 你是否曾被面试官问道Java异常处理的最佳实践有哪些? 本文汇总了Java异常处理的20个最佳实践:让你告别系统崩溃,面试游刃有余
1841 2
Java异常处理的20个最佳实践:告别系统崩溃
|
编解码 移动开发 视频直播
一文详解 m3u8 视频格式与分析视频秒开优化
秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。
14967 4
一文详解 m3u8 视频格式与分析视频秒开优化
|
8月前
|
JSON API PHP
域名注册状态查询免费API接口详细教程
本文介绍“接口盒子”提供的免费域名注册状态查询API,支持批量检测.com/.cn域名是否被注册。提供PHP和Python调用示例,含完整代码与返回参数说明,助力开发者快速集成域名查询功能,适用于品牌保护、域名投资等场景。(239字)
1876 0
|
1月前
|
人工智能 前端开发 小程序
AI 编程工具排名 2026:7 款主流横评(国产 + 海外实测)
AI 编程工具有哪些?哪个 AI 写代码最强?2026 年 AI 编程工具排名横评:Cursor、Bolt.new、Lovable、v0、秒悟 Meoo、通义灵码。从场景适配度、价格、商用合规、中文支持 6 个维度实测。
3452 0
|
Java 定位技术 API
标准坐标系与火星坐标系(高德)百度坐标系之间互转
这里先给大家介绍几个坐标系: 1.WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。2.GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。
5073 0
|
11月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
7月前
|
安全 网络安全 开发工具
解决 Host key verification failed 报错的三种方法(含 SSH 安全建议)
本文由喵喵侠撰写,详解Git提交时常见报错“Host key verification failed”的成因与解决方案。当SSH密钥变更或服务器重装系统时,本地记录的主机密钥会失效,导致连接被拒。文章提供三种解决方法:使用`ssh-keygen -R`删除旧密钥、手动编辑`known_hosts`文件,或临时禁用严格检查(不推荐生产环境)。同时强调安全建议:确认服务器状态、核对密钥指纹、启用`VerifyHostKeyDNS`防范中间人攻击。帮助开发者快速定位问题,保障代码提交顺畅。
2879 0
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
8963 4
|
人工智能 Cloud Native 数据可视化
微医控股与阿里云达成战略合作,双方将携手基于通义千问大模型联合打造医疗全场景智能体,共同构建医疗垂类大模型
2025年6月17日,微医控股与阿里云达成战略合作,共建医疗AI基座及医疗全场景智能体。双方将基于通义千问大模型打造医疗垂类大模型,升级微医“5+1”智能体,并在诊断、用药、健康管理等环节深化应用。微医将结合阿里云技术优势推进IDC上云,助力AI+医疗基础设施建设,共同制定行业标准并推广城市级AI数字健共体。目前,微医AI服务已连接全国1.2万家医院和30万名医生,健康管理会员超100万。
2656 2
|
Linux vr&ar C语言
Linux怎样更新Centos下Gcc版本支持C++17?
Centos7快速安装gcc8.3.1 可支持C++17(附gcc相关链接整理) centos7直接yum安装的那个gcc版本为4.8.5,对于大多数的需求来说都是低了。系统安装镜像里的那个版本也是4.8.5。 在g++ 7 以上的版本中添加了对c++17 的支持,所以为了工作需要现在需要升级到高版本。
3280 1

热门文章

最新文章