コンテンツにスキップ
コンソール

台風

このエンドポイント群は、中央気象署が発表する 4 種の台風データをまとめたものです。進路(track)、予報円(potential)、暴風域に入る確率(probability)、台風警報(warning)です。別に、活動中の熱帯低気圧の一覧と、重ね合わせ用の GeoJSON があります。サーバーは 1 分ごとに出典を確認し、過去のスナップショットは 7 日保持します。台風の状況ページ、進路の地図、警報の表示に向きます。共通形式は気象 API の概要を参照してください。

上流の条件
  • 中央気象署:中央気象署のデータ利用規約(政府データオープンライセンスなど)も適用されます。気象・地震情報は中央気象署の発表を正とします。

表記の場所、例、商用利用の申請はデータの利用条件と出典表記をご覧ください。

現在は API Token は不要です。

  • すべてのエンドポイントは { updated, cyclones: [...] } を返します(GeoJSON のエンドポイントを除く)。熱帯低気圧が同時に複数あるときは、cyclones も複数件です。
  • tdNo は熱帯低気圧の一意な識別子です(中央気象署の熱帯低気圧番号)。同じスナップショットの中では重複しません。4 種のデータは tdNo で互いに対応します。まだ命名されていない熱帯低気圧にも tdNo があり、そのとき name、cwaName、tyNo は "" です。
  • 時刻は Unix 秒です。データがないとき updated は 0 です。
  • 欠測は null です。
  • 座標:一覧、進路、警報は lat と lon の 2 フィールドです。予報円、暴風域に入る確率、GeoJSON は [経度, 緯度] の配列です。小数第 4 位です。
  • 単位:風速と最大瞬間風速は m/s、気圧は hPa、進行速度は km/h、半径は km です。進行方向は 16 方位の英語略号です。例:NNW。
  • 活動中の熱帯低気圧がないとき、一覧、track、potential、probability の cyclones は [] です。warning は通常、直近の 1 件の「解除」警報を残します(msgType が Cancel)。
kind 内容 用途
track 台風の進路。過去と現在の位置、現在の移動、象限ごとの暴風半径、今後の各予報時間の予報位置 数値が最もそろっています。暴風の範囲を判断するときは、この 4 象限の半径を使ってください
potential 進路の予報円。過去の進路、予測進路、予報円(不確実な範囲)、風力7の強風域、各予報時刻 予報円の図を描く
probability 暴風域に入る確率。20%、40%、60%、80%、100% の入れ子の等値線 確率の図を描く、またはある座標がどの確率の区域にあるかを判断する
warning 台風警報。発表、更新、または解除。警報本文、台風の情報、影響する県・市 現在の海上・陸上の台風警報を表示する

熱帯低気圧ごとに、最新の位置と強度を 1 件返します。track から取ります。

GEThttps://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon
サーバーTNN-1
リクエスト例
curl "https://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon"
レスポンス

成功

{
"updated": 1794614400,
"cyclones": [
{
"tdNo": "27",
"name": "DOLPHIN",
"cwaName": "白海豚",
"year": 2026,
"tyNo": "26",
"t": 1794614400,
"lat": 18.3,
"lon": 128.9,
"wind": 33,
"gust": 43,
"pres": 970,
"speed": 22,
"dir": "WNW"
}
]
}

データは変わっていません(If-None-Match が一致)。body なしレスポンスボディなし

試してみる

トークンはこのブラウザから API へ直接送信されます。

フィールド型説明
updatednumber最新の位置決定の時刻。Unix 秒。データがないときは 0
cyclones[].tdNostring熱帯低気圧番号。一意な識別子
cyclones[].namestring国際英語名。未命名のときは空文字列
cyclones[].cwaNamestring中国語名。未命名のときは空文字列
cyclones[].yearnumber年
cyclones[].tyNostring台風番号。まだ熱帯低気圧のときは空文字列
cyclones[].tnumberこの位置決定の時刻。Unix 秒
cyclones[].latnumber中心の緯度
cyclones[].lonnumber中心の経度
cyclones[].windnumber | null中心付近の最大風速(m/s)
cyclones[].gustnumber | null最大瞬間風速(m/s)
cyclones[].presnumber | null中心気圧(hPa)
cyclones[].speednumber | null進行速度(km/h)
cyclones[].dirstring | null進行方向。16 方位の英語略号

kind に応じて、4 種のデータの最新の 1 つを取得します。それぞれの構造は下の小節を参照してください。

GEThttps://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/{kind}
サーバーTNN-1
パスパラメーター
  • kindstring必須

    パスパラメータ。track、potential、probability、warning のいずれか

リクエスト例
curl "https://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/<kind>"
レスポンス

成功(track の例)

{
"updated": 1794614400,
"cyclones": [
{
"tdNo": "27",
"name": "DOLPHIN",
"cwaName": "白海豚",
"year": 2026,
"tyNo": "26",
"analysis": [
{
"t": 1794528000,
"lat": 16.9,
"lon": 131.2,
"wind": 28,
"gust": 38,
"pres": 980
},
{
"t": 1794614400,
"lat": 18.3,
"lon": 128.9,
"wind": 33,
"gust": 43,
"pres": 970
}
],
"now": {
"speed": 22,
"dir": "WNW",
"move": [
"以每小時22公里速度,向西北西進行",
"WNW 22 KM/HR"
],
"c15": {
"avg": 180,
"ne": 200,
"se": 180,
"sw": 160,
"nw": 180
},
"c25": null
},
"forecast": [
{
"tau": 6,
"t": 1794636000,
"lat": 18.8,
"lon": 127.9,
"wind": 35,
"gust": 45,
"pres": 965,
"speed": 20,
"dir": "WNW",
"r15": 180,
"r70": 80,
"state": null
}
]
}
]
}

データは変わっていません(If-None-Match が一致)。body なしレスポンスボディなし

試してみる
パスパラメーター

トークンはこのブラウザから API へ直接送信されます。

フィールド型説明
updatednumber最新の位置決定の時刻。Unix 秒。データがないときは 0
cyclones[].tdNo、name、cwaName、year、tyNostring / number「活動中の熱帯低気圧」と同じ
cyclones[].analysis[]object[]過去と現在の位置決定。古い順
tnumber位置決定の時刻。Unix 秒
lat、lonnumber中心の座標
wind、gust、presnumber | null中心付近の最大風速、最大瞬間風速(m/s)、中心気圧(hPa)
cyclones[].now.speednumber | null現在の進行速度(km/h)
cyclones[].now.dirstring | null現在の進行方向
cyclones[].now.movestring[] | null移動の説明 [中国語, 英語]
cyclones[].now.c15object | null風力7の強風半径(km)。avg は平均、ne、se、sw、nw は 4 象限。弱すぎるときは null
cyclones[].now.c25object | null風力10の暴風半径(km)。構造は c15 と同じ
cyclones[].forecast[].taunumber予報時間(時間)
cyclones[].forecast[].tnumber予報時刻。Unix 秒
cyclones[].forecast[].lat、lonnumber予報した中心の座標
cyclones[].forecast[].wind、gust、presnumber | null予報した強度
cyclones[].forecast[].speed、dirnumber | null / string | null予報した進行速度(km/h)と進行方向
cyclones[].forecast[].r15number | null風力7の強風半径(km)
cyclones[].forecast[].r70number | null70% 確率半径(km)
cyclones[].forecast[].statestring[] | null衰弱または温帯低気圧化の説明 [中国語, 英語]

ある地点が暴風の範囲内かを判断するときは、now.c15 / now.c25 の 4 象限の半径を使ってください。potential の暴風域は対称な円で、模式図に向きます。

{
"updated": 1794614400,
"cyclones": [
{
"tdNo": "27",
"name": "白海豚",
"past": [[131.2, 16.9], [128.9, 18.3]],
"forecast": [[128.9, 18.3], [127.9, 18.8], [125.6, 19.9]],
"cone": [[128.4, 18.0], [127.3, 18.4], [124.8, 19.3], [126.1, 20.6], [128.9, 18.3], [128.4, 18.0]],
"circle": [[130.6, 18.3], [128.9, 20.0], [127.2, 18.3], [128.9, 16.6], [130.6, 18.3]],
"current": [128.9, 18.3],
"points": [
{ "label": "11月14日14時", "lng": 127.9, "lat": 18.8 },
{ "label": "11月15日08時", "lng": 125.6, "lat": 19.9 }
]
}
]
}
フィールド型説明
updatednumberデータの時刻。Unix 秒。データがないときは 0
cyclones[].tdNostring熱帯低気圧番号。対応できないときは空文字列
cyclones[].namestring出典データの名称。例:中国語名、または TD27
cyclones[].pastnumber[][]過去の進路 [[経度, 緯度], ...]
cyclones[].forecastnumber[][]予測進路
cyclones[].conenumber[][]予報円(不確実な範囲)の外枠
cyclones[].circlenumber[][] | null風力7の強風域(対称な円、模式用)。弱いときは null
cyclones[].currentnumber[] | null現在の中心 [経度, 緯度]
cyclones[].points[]object[]各予報時刻。label は時刻の文字列、lng、lat
{
"updated": 1794614400,
"cyclones": [
{
"tdNo": "27",
"levels": [
{ "p": 100, "coords": [[128.6, 18.0], [129.2, 18.4], [128.9, 18.9], [128.6, 18.0]] },
{ "p": 20, "coords": [[126.0, 17.2], [130.4, 17.6], [129.8, 21.0], [125.1, 20.5], [126.0, 17.2]] }
]
}
]
}
フィールド型説明
updatednumberデータの時刻。Unix 秒。データがないときは 0
cyclones[].tdNostring熱帯低気圧番号
cyclones[].levels[].pnumber入る確率(%)。20、40、60、80、100
cyclones[].levels[].coordsnumber[][]その確率の閉じた等値線 [[経度, 緯度], ...]

levels は確率の高い順です(100 が最も内側)。座標がどの確率にあるかを判断するときは、p が最も高い等値線から、点が多角形の内側にあるかを調べます。

中央気象署は通常、同時に台風警報を 1 つだけ出します。cyclones の長さは 0 または 1 です。

{
"updated": 1794615000,
"cyclones": [
{
"tdNo": "27",
"active": true,
"id": "CWA-Weather_typhoon-warning_202611140830000000",
"sent": 1794615000,
"status": "Actual",
"msgType": "Cancel",
"scope": "Public",
"event": "颱風",
"urgency": "Past",
"severity": "Minor",
"certainty": "Observed",
"effective": 1794615000,
"onset": 1794615000,
"expires": 1794618600,
"headline": "解除颱風警報",
"senderName": "中央氣象署",
"typhoon": {
"no": "26",
"name": "DOLPHIN",
"cwaName": "白海豚",
"reportNo": "12",
"category": "END",
"analysis": { "t": 1794614400, "lat": 18.3, "lon": 128.9, "wind": 33, "gust": 43, "pres": 970, "r15": 180, "scale": ["中度颱風", "TYPHOON"] },
"prediction": { "t": 1794700800, "lat": 20.1, "lon": 125.0, "wind": 30, "gust": 40, "pres": 975, "r15": 160, "scale": null }
},
"sections": [
{ "title": "命名與位置", "text": "中度颱風白海豚(國際命名 DOLPHIN)……" }
],
"areas": [
{ "name": "臺北市", "code": "63000000" }
]
}
]
}
フィールド型説明
updatednumber最新の警報の発表時刻。Unix 秒。データがないときは 0
cyclones[].tdNostring熱帯低気圧番号。現在の熱帯低気圧に対応できないときは空文字列(古い解除警報でよくあります)
cyclones[].activeboolean警報の内容を解析できたか
cyclones[].idstring警報の識別子
cyclones[].sentnumber | null発表時刻。Unix 秒
cyclones[].statusstring例:Actual
cyclones[].msgTypestringAlert は発表、Update は更新、Cancel は解除
cyclones[].scope、event、urgency、severity、certaintystring警報の範囲、イベント、緊急度、重大度、確度。出典の原文のまま
cyclones[].effective、onset、expiresnumber | null有効、開始、失効の時刻。Unix 秒
cyclones[].headlinestring見出し。例:「海上颱風警報」「解除颱風警報」
cyclones[].senderNamestring発表機関
cyclones[].typhoon.nostring台風番号(tyNo と同じ。tdNo ではない)
cyclones[].typhoon.name、cwaNamestring英語名、中国語名
cyclones[].typhoon.reportNostring警報の報数
cyclones[].typhoon.categorystring警報の種別。出典の原文のまま。解除のときは例として END
cyclones[].typhoon.analysisobject | null現在の位置。t、lat、lon、wind、gust、pres、r15(風力7の強風半径 km)、scale(強度 [中国語, 英語])
cyclones[].typhoon.predictionobject | null予測位置。構造は analysis と同じ
cyclones[].sections[]object[]警報本文の各節。title、text
cyclones[].areas[]object[]影響する県・市。name は名称、code は県・市コード

あるデータの過去のスナップショット時刻です。差分符号化の Unix 秒で、古い順です。復元方法は差分の時刻リストを参照してください。

GEThttps://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/{kind}/list
サーバーTNN-1
パスパラメーター
  • kindstring必須

    パスパラメータ。track、potential、probability、warning のいずれか

リクエスト例
curl "https://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/<kind>/list"
レスポンス

成功

[
1794528000,
21600,
21600,
21600,
21600
]

データは変わっていません(If-None-Match が一致)。body なしレスポンスボディなし

試してみる
パスパラメーター

トークンはこのブラウザから API へ直接送信されます。

フィールド型説明
[0]number最も古いスナップショットの時刻。Unix 秒
[i](i ≥ 1)number直前の 1 件との時間差(秒)

スナップショットの時刻は、データ自身の時刻です。track は最新の位置決定の時刻、potential と probability は出典データの時刻、warning は警報の発表時刻(sent)です。スナップショットがないときは [] を返します。

あるデータの、指定時刻のスナップショットです。構造は対応する最新のデータと同じです。static.core だけで提供し、api.core はこのパスに 404 を返します。

GEThttps://static.core-tnn1.exptech.dev/api/v5/meteor/typhoon/{kind}/{time}
サーバーTNN-1
パスパラメーター
  • kindstring必須

    パスパラメータ。track、potential、probability、warning のいずれか

  • timeinteger必須

    パスパラメータ。10 桁の Unix 秒。/{kind}/list に出た値でなければなりません

リクエスト例
curl "https://static.core-tnn1.exptech.dev/api/v5/meteor/typhoon/<kind>/<time>"
レスポンス

成功(probability の例)

{
"updated": 1794614400,
"cyclones": [
{
"tdNo": "27",
"levels": [
{
"p": 100,
"coords": [
[
128.6,
18
],
[
129.2,
18.4
],
[
128.9,
18.9
],
[
128.6,
18
]
]
}
]
}
]
}

データは変わっていません(If-None-Match が一致)。body なしレスポンスボディなし

time が整数ではない、またはその時刻にスナップショットがない(保持期限を過ぎたときも同じ)。body なしレスポンスボディなし

試してみる
パスパラメーター

トークンはこのブラウザから API へ直接送信されます。

台風データを取得のうち、対応する kind のフィールドと同じです。

最新の potential と probability から作った GeoJSON の FeatureCollection です。MapLibre や Leaflet などの地図に、そのまま追加できます。

GEThttps://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/geojson
サーバーTNN-1
リクエスト例
curl "https://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/geojson"
レスポンス

成功

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
128.9,
18.3
],
[
127.9,
18.8
],
[
125.6,
19.9
]
]
},
"properties": {
"kind": "forecast",
"tdNo": "27"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
127.9,
18.8
]
},
"properties": {
"kind": "forecastPoint",
"label": "11月14日14時",
"tdNo": "27"
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
128.6,
18
],
[
129.2,
18.4
],
[
128.9,
18.9
],
[
128.6,
18
]
]
]
},
"properties": {
"kind": "probability",
"p": 100,
"tdNo": "27"
}
}
]
}

データは変わっていません(If-None-Match が一致)。body なしレスポンスボディなし

試してみる

トークンはこのブラウザから API へ直接送信されます。

各 Feature の properties.kind が種類を決め、いずれも properties.tdNo を持ちます。

properties.kind 幾何 内容
past LineString 過去の進路
forecast LineString 予測進路
cone Polygon 予報円の範囲
circle15 Polygon 風力7の強風域(対称な円)
current Point 現在の中心
forecastPoint Point 予報時刻。properties.label は時刻の文字列
probability Polygon 入る確率の等値線。properties.p は確率(%)

台風がないとき features は [] です。

重ね合わせ用 GeoJSONを、そのまま MapLibre GL JS の source にし、kind で描く図形を絞ります。例として予報円の範囲は次のとおりです。

map.addSource("typhoon", {
type: "geojson",
data: "https://api.core-tnn1.exptech.dev/api/v5/meteor/typhoon/geojson",
});
map.addLayer({
id: "typhoon-cone",
type: "fill",
source: "typhoon",
filter: ["==", ["get", "kind"], "cone"],
paint: { "fill-color": "#f97316", "fill-opacity": 0.2 },
});
  • 時刻はすべて Unix 秒で、欠測は null です。
  • 過去のスナップショットは 7 日保持します。ただし各種のデータは少なくとも最新の 1 件を残すため、台風シーズンが終わったあとも最後の 1 つを照会できます(通常は解除警報です)。
  • potential、probability、warning の tdNo は、サーバーが名称、番号、または位置で track に対応させたものです。対応できないときは空文字列です。
  • データ出典:中央気象署のオープンデータの台風データです。
  • サーバーの選び方は気象 API の概要を参照してください。タイムスタンプ付きスナップショットは static.core、それ以外は api.core です。TNN-1 の URL を直接使うことを推奨します。