第52回 天気予報アルゴリズム

今回は天気予報のアルゴリズムを検討します。

目次

天気予報のアルゴリズム

天気予報と聞くと、スーパーコンピュータで複雑な計算をイメージしますよね。

今回製作したブレッドボード回路では、取得するデータも限られていますし、そもそもマイコンではそれほど複雑な計算はできません。

そこで、今回はもっとシンプルで、リソースの少ないマイコンでも実装可能なアルゴリズムを使って天気予報のプログラムを作成したいと思います。


前回の記事で、気圧と天気の関係を調べました。

100%の精度というわけではありませんが、次のように気圧が上昇するスピードが速いときは晴れ、下降するスピードが遅いときは雨になる傾向があります。

この気圧の変化に着目した天気予報は昔から研究されていて、その中でも有名な「Zambretti(ザンブレッティ)の天気予測」という道具があります。

最初に、この「道具」とはどのようなものかみていきましょう!

Zambretti Forecaster(ザンブレッティ天気予測)

「天気予測の道具」と聞くと、機械仕掛けのガジェットのようなものに思えてしまいますが、実物は円盤に文字が書かれていて、そこから天気を読み取る、という道具です。

著作権の所在がわからないので画像は載せていませんが、いくつかのサイトに画像がありますので参考にしてみてください。

次のリンクの英語版ウィキペディアには簡単な解説があります。

https://en.wikipedia.org/wiki/Zambretti_Forecaster

また、次のサイトではより詳しい画像や解説があります。(英語ですが…)

IoT Kits
Zambretti Forecaster - IoT Kits The Zambretti Forecaster is a weather forecasting tool in the form of a circular slide rule introduced in 1920.  It claims to accurately predict near-term weath...

Zambretti Forecasterは、1920年ごろに作られたもので、主に「気圧」「気圧の傾向」風向」の3種類のデータから天気を予測する手法です。(「季節」データも使用することがあるようです)

もともとは、航海士などが使う携帯用の気圧計の文字盤に書かれていた予報文が元になっているようで、気圧と風向きのデータから将来の天気を予測するための、「経験則の集大成」のようなものです。


今回製作したブレッドボードでは気圧データが取得できますので、このZambretti Forecasterを参考にすれば十分天気予測が可能なはずです!

そこで、このアルゴリズムはどのようなものか確認していきましょう!

Zambretti Forecasterのアルゴリズム

Zambretti Forecasterでは次のように天気を予測します。

使用するデータ

Zambretti Forecasterの天気予測には次のデータを使用します。(季節データも使用するケースもあるようです)

  • 現在の気圧
  • 気圧の傾向(上昇、安定、下降
  • 風向き (北、南など)

アルゴリズム

アルゴリズムの核となるのは、「現在の気圧」と「気圧の傾向」から「基準となる数値」を算出し、その数値を「風向き」や「季節」で補正して予測結果を導き出す、という流れです。

具体的な予測ステップを確認していきましょう!

STEP
気圧の傾向の判断

気圧がどのように変化しているかを判断します。一定時間(例えば過去3時間)の気圧の変化を観測して、次の3種類に分類します。

  • 上昇:気圧が上がっている状態(一般的に天候の回復を示唆します)
  • 安定:気圧にあまり変化がない状態
  • 下降:気圧が下がっている状態(天候の悪化を示唆します)
STEP
基準となる数値(Z値)の計算

次に、Z値と呼ばれる、予測をするための基準となる数値を計算します。

計算式はいくつかあるようですが、例えば次のような計算方法です。

最初に現在の気圧を元にして、気圧を補正します。

P = (現在の気圧) * pow(
        1 - (0.0065 * elevationM) / (tempC + (0.0065 * elevationM) + 273.15),-5.257 )
    );

次に、気圧の傾向の判断に応じてを上の式で求めたPを元にZ値を計算します。

  • 上昇:185 − 0.16 × P
  • 安定:144 − 0.13 × P
  • 下降:127 − 0.12 × P
STEP
Z値の補正

Z値を計算後、「風向き」と「季節」データにより補正を行います。

細かい計算方法は省略しますが、例えば次のように計算します。

「風向き」は、例えば南風のときはZ値に1を足します。これは、暖かく湿った空気をもたらし、天候が悪化する(雨が降りやすくなる)傾向があることによりZ値を少し補正します。

「季節」は、例えば暖かい期間のときはZ値から1を引きます。これは、暖かい期間は南側の高気圧に覆われることが多く、このため冬に比べて天候は比較的安定する傾向があるためです。

STEP
天気予測

算出したZ値に応じて、天気予測表から今後の天気を予測します。

気圧が下降している場合

Z値予測
安定した晴れ
晴れ
不安定な晴れ
概ね晴れ、のちに雨
不安定な天気
(にわか雨など)
不安定な天気、のちに雨
時々雨、のちに悪化
時々雨

気圧が安定している場合

Z値予測
10安定した晴れ
11晴れ
12晴れ、にわか雨の可能性あり
13概ね晴れ、
にわか雨の可能性あり
14晴れ、時々にわか雨
15天気変わりやすく一時的に雨
16不安定な天気で時々雨
17雨が降ったり止んだり
18
19

気圧が上昇している場合

Z値予測
20安定した晴れ
21晴れ
22概ね晴れ
23天気回復、概ね晴れ
24晴れ、にわか雨の可能性
25天気回復、
にわか雨の可能性
26天気変わりやすいが回復傾向
27不安定な天気、のちに回復
28不安定な天気、回復可能性
29不安定な天気、
時々日が差す
30かなり不安定だが
時々日が差す
31雨、回復可能性
32大雨、嵐

Zambretti Forecasterではこのように予測しますが、今回製作したブレッドボードでは次の課題があります。

  • 「風向き」のデータは取得できない
  • 「季節」データは設定できるが現在の回路では現実的ではない
  • Zambretti Forecasterでは細かい天気予測はできるが、今回製作したブレッドボードの2色LEDで表現できるのは「晴れ」「曇り」「雨」の3種類が限界。

そこで、Zambretti Forecasterのアルゴリズムを大幅に改変?して、プログラムに実装することにしたいと思います。

実装するアルゴリズム

Zambretti Forecasterアルゴリズムの核となる部分は、「現在の気圧」と「気圧の傾向」から天気予測をするという点です。

この考え方と似た、より簡単なアルゴリズムがあります。

そのアルゴリズムで「晴れ」「曇り」「雨」の3種類の天気予測をしてみたいと思います。


天気は、気圧が高いと晴れの確率が高く、低いと雨の確率が高くなります。

また、前回の記事で確認したように、気圧変化が早いと天気が変わりやすい傾向がありました。

簡単なアルゴリズムでは「現在の気圧」と「気圧変化の速さ」から天気予測を行います。

予測は次のステップで行います。

STEP
気圧変化の速さを判断

前回の記事で確認した通り、気圧の変化が速いと天気が変わりやすくなります。

そこで、次のように気圧変化の速さを判断します。

判断結果に応じて天気変化のトレンドを判断することにします。(具体的な数値はプログラム内で変更できるようにします)

過去3時間の気圧変化気圧変化の速さの判断
± 1.6hPa未満ゆるやかな変化
(現在の天気が継続する)
± 1.6hPa以上速い上昇または下降
(近いうちに天気が変化する)
STEP
現在の気圧の程度を判断

次に、現在の気圧から、高気圧帯にいるのか低気圧帯にいるのか判断します。

現在の気圧値現在の気圧帯
1015hPa以上高気圧
1000〜1015hPa普通
1000hPa未満低気圧
STEP
天気傾向の判断

「気圧変化の速さ」と「現在の気圧帯」から、天気傾向を判断します。

現在の気圧帯気圧変化
速い上昇
気圧変化
ゆるやか
気圧変化
速い下降
高気圧
(1015hPa以上)
晴れ
(継続)
晴れ
(継続)
曇り
(悪化傾向)
普通
(1000〜1015hPa)
晴れ
(回復傾向)
曇り
(継続)

(悪化傾向)
低気圧
(1000hPa未満)
曇り
(回復傾向)

(継続)

(継続)
STEP
天気予測表示

ステップ3で判断した天気傾向では、曇りでも悪化傾向と回復傾向があります。それぞれ雨、晴れと予報した方が良さそうですが、このあたりは運用しながらアルゴリズムを調整していくのが良いかな、と思います。

2色LEDで表現できる色は3色ですので、曇りの2つの状態は区別せず、次のように天気予測表示をしたいと思います。

天気傾向LED点灯色
晴れ
曇り(天気回復傾向)
(赤と青を同時点灯)
曇り(天気悪化傾向)

アルゴリズムとしては上のステップになりますが、パラメータはプログラム内で変更できるようにしたいと思います。

更新履歴

日付内容
2018.10.12新規投稿
2025.8.25天気予測アルゴリズムをZambretti Forecasterの簡易版に変更
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
目次