台風の最大風速のkt → m/s は「式」ではなく「換算表」があるかもしれない話

2026-09-17

kinoatsuというサイトで、年ごとの台風の一覧ページを作っています。台風ごとに最大風速を出しているのですが、データの出自によって持っている単位が違っていて、表示がktとm/sで混在してしまいました。

どちらかに寄せる必要があるのですが、どちら向きに寄せられるのかを調べてみたら、最初に考えていたのと逆の結果になったので纏めておきます。

前提

使ったのは、気象庁が公開している次の3つのデータです。

  • 台風位置表: 台風ごとに位置、中心気圧、最大風速などが時刻順に並んだ表(PDF)。速報値で、最大風速の単位はm/s
  • 防災情報XML: 台風の位置や強さの速報がXMLで配信されるもの。速報値で、最大風速はktとm/sの両方を持っている
  • ベストトラック: 台風が消滅した後に再解析して確定させたデータ。確定値で、最大風速の単位はkt

kt(ノット)は1kt = 0.514444m/sです。なので、素朴に考えると、ktにこの係数を掛けて四捨五入すればm/sになりそうに見えます。この記事では、この「係数を掛けて四捨五入する」換算のことを線形換算と呼ぶことにします。

ちなみに、台風位置表は2001年以降の分しか存在しません。2000年以前の年を指定すると404が返ります。つまり、1951〜2000年の台風についてはm/sを出典から取り直す道がなく、ktから換算するしかありません。(これが後で効いてきます。)

単位が混在していた

kinoatsuの台風ページで最大風速を出すのに使っているデータと、それぞれが持っている単位は↓のようになっていました。

対象出自保持している単位
確定値ベストトラックktのみ
速報値台風位置表(PDF)m/sのみ
速報値防災情報XMLktとm/sの両方

確定値はktしかなく、速報値にはm/sしかない行と両方持っている行がある、という状態です。表示をどちらかに寄せる必要があります。では、どちら向きに寄せられるのでしょうか。

3ペアで見当をつけた

最初に手元にあったのは、ktとm/sの両方を持っている防災情報XML由来の台風1つ分、3ペアだけでした。これを線形換算と突き合わせてみました。

気象庁のkt気象庁のm/sround(kt × 0.514444)
351818 ✓
402021 ✗
452323 ✓

40ktのところで線形換算が外れます。逆に20m/sをktに直すと20 × 1.94384 = 38.9で、これを5kt刻みに丸めると40ktになります。ここから僕は「気象庁はm/sを原値として持っていて、ktは5kt刻みに丸めて導出しているのだろう。だからkt→m/sは一意に決まらない」と考えました。

つまり、m/sが原値でktが導出値、寄せるならm/s→ktの向きしかない、という結論です。

先に書いてしまうと、これは逆でした。

2,157点で照合した

3点で決めるのは流石に心もとないので、数を集めて確かめることにしました。

やったことは、台風位置表(速報値・m/s)とベストトラック(確定値・kt)を、同じ台風の同じ時刻で突き合わせる、というものです。対象は2013 / 2016 / 2020 / 2022 / 2024年の5年分。照合できた点は2,157、その中に現れたktの種類は19でした。

まず、2,157点をktの値ごとにまとめて、それぞれのktに対して気象庁のm/sが何だったかを数えました。あわせて、ktを線形換算した値(四捨五入する前のもの)も並べています。結果は↓のようになりました。

{18: 434}は「35ktだった434点は、m/sがすべて18だった」という意味です。対応するm/sが1種類だけなら「一意」としています。

   kt  kt*0.514444  気象庁のm/s    判定
   35         18.0  {18: 434}     一意
   40         20.6  {20: 249}     一意
   45         23.1  {23: 166}     一意
   50         25.7  {25: 199}     一意
   55         28.3  {30: 151}     一意   ← 線形換算なら 28。表は 30
   60         30.9  {30: 138}     一意
   65         33.4  {35: 135}     一意
   70         36.0  {35: 122}     一意
   75         38.6  {40: 112}     一意
   80         41.2  {40:  93}     一意
   85         43.7  {45: 117}     一意
   90         46.3  {45:  71}     一意
   95         48.9  {50:  54}     一意
  100         51.4  {50:  44}     一意
  105         54.0  {55:  40}     一意
  110         56.6  {55:   8}     一意
  115         59.2  {60:  20}     一意
  120         61.7  {60:   2}     一意
  125         64.3  {65:   2}     一意

kt→m/sは、19種類すべてが単一のm/sに対応しました。例外はゼロです。

同時に、線形換算とは合わない点があることもわかります。例えば55ktは線形なら28ですが、気象庁のm/sは30です。3ペアで見たときは40ktの1点だけが外れているように見えましたが、全体で見ると外れている方が多い、というのが本当のところでした。

次に、同じ2,157点を今度はm/sの値ごとにまとめて、それぞれのm/sを持つ点のktが何だったかを集めました。結果は↓のようになりました。

18 m/s -> [35]は「m/sが18だった点は、ktがすべて35だった」という意味です。30 m/s -> [55, 60]は「m/sが30だった点には、ktが55のものと60のものが混ざっていた」という意味になります。

   18 m/s -> [35]
   20 m/s -> [40]
   23 m/s -> [45]
   25 m/s -> [50]
   30 m/s -> [55, 60]   ← 一意に決まらない
   35 m/s -> [65, 70]   ← 一意に決まらない
   40 m/s -> [75, 80]   ← 一意に決まらない
   45 m/s -> [85, 90]   ← 一意に決まらない
   50 m/s -> [95, 100]  ← 一意に決まらない
   55 m/s -> [105, 110] ← 一意に決まらない
   60 m/s -> [115, 120] ← 一意に決まらない
   65 m/s -> [125]

30m/s以上は、同じm/sに2種類のktが対応しています。つまり、m/sの値を見てもktがどちらだったのかは決められません。

換算表

照合で得られた対応をそのまま並べると↓のようになります。

 35→18   40→20   45→23   50→25   55→30
 60→30   65→35   70→35   75→40   80→40
 85→45   90→45   95→50  100→50  105→55
110→55  115→60  120→60  125→65  140→70

2,157点に現れた19種類に、140→70の1組を足して20組です。140ktは照合の対象年には現れなかったので、別の出典から補っています。125ktも照合では2点しかなかったので、個別に位置表で裏を取りました。

  • 125kt: 2010年第13号MEGIと2013年第30号HAIYANの位置表。いずれも65m/s
  • 140kt: 1979年第20号TIP。位置表が存在しない年なので、気象庁の公表値870hPa / 70m/sから

130ktと135ktは表にありません。気象庁が公開している全76シーズンの実データに1件も存在しないためで、値を推定して埋めることはしていません。表に無いktは「不明」として扱います。

この表を見ると、19種類のktが12種類のm/sに畳まれています。kt→m/sは情報量が落ちる向きの変換なので、逆はできない、ということになります。

何を間違えていたか

3ペアの時点で逆の結論に至ったのは、2つのことが重なっていたためだと思っています。

1つ目は、サンプルが3点しかなかったことです。3点のうち線形換算と合わなかったのは40ktの1点だけで、これは「m/sが原値で、ktは5kt刻みに丸めたもの」と考えても説明がつきます。3点だと、どちらの向きでも辻褄が合ってしまいます。

2つ目は、換算が「式」であると暗黙に仮定していたことです。合わない点を見たときに、式が間違っているとは考えず、式は正しいまま「向きが逆なのだ」と解釈してしまいました。実際には、線形換算の式は気象庁の値の再現には使えず、固定の対応表があった、というのが2,157点を見た後の結論です。

少ないサンプルに、それらしいモデルを当てはめると、結論が反転する。振り返るとそういう話でした。

kinoatsuでの扱い

以上から、kinoatsuでは最大風速をm/sに寄せて表示することにしました。

  • ktしか持っていない確定値は、上の換算表でm/sにする
  • m/sを持っている速報値はそのまま
  • 表に無いktは、計算でそれらしい値を作らず、不明として扱う

kt→m/sの換算は、気象庁自身が位置表で公表している値の再現なので、元のデータに無い精度を作り出しているわけではありません。逆向きは一意に決まらないので、ktに寄せる選択肢はそもそもありませんでした。

実際の表示は「2026年の台風」のページで見られます。

ちなみに「原値はkt」というのは、あくまで2,157点の照合からの推論です。気象庁がそう公表しているわけではないので、内部でどう保持しているのかまではわかりません。

おわりに

台風の最大風速のktとm/sの対応について纏めてみました。3点で決めてしまわなくて良かったです...

実際のところをご存知の方がいらっしゃいましたら、教えて頂けると嬉しいです。

参考

  • 台風位置表: https://www.data.jma.go.jp/typhoon/position_table/table{年}.html (2001年以降)
  • ベストトラック: https://www.jma.go.jp/jma/jma-eng/jma-center/rsmc-hp-pub-eg/Besttracks/bst_all.zip
  • 1979年第20号TIP: 防災科研 台風データベース TY7920