暑さ指数計算ツール
気温90 °F、湿度70%のとき、体感温度は105.9 °Fです。気温と相対湿度を入力すると公式の暑さ指数が分かり、暑いときは完全な回帰式、涼しいときは簡易推定を使います。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 気温(°F)
- 90
- 相対湿度(%)
- 70
- 暑さ指数(°F)
- 105.9
- 計算モード
- rothfusz
NWS 無料オンライン
暑さ指数が表すもの
暑さ指数は見かけの気温で、湿度を考えたときに空気がどれほど暑く感じられるかを示します。このツールは、まず気温と相対湿度から簡易な推定値を出します。その値が80 °F未満なら、涼しい条件では完全な式が当てにならないため、そのまま使います。それ以外は、米国気象局の公式表のもとになっている9項の回帰式に切り替えるので、90 °Fで湿度70%なら105.9 °Fになります。
境目の近くで結果が大きく変わる理由
2つの補正は、決められた範囲の中でだけ働きます。湿度13%未満で気温80〜112 °Fの乾いた暑さでは指数が下がり、湿度85%超で気温80〜87 °Fの蒸し暑さでは少し上がります。範囲の外では基本の式だけが使われるため、境目の近くでは数度しか違わない2つの値が、丸めると目立って違う結果になることがあります。結果は初期設定で小数点以下1桁で、0桁か2桁も選べます。
2 つの補正
RH が 13% 未満で T が 80°F 以上 112°F 以下のとき、((13-RH)/4) * sqrt((17-|T-95|)/17) を減算し、非常に乾燥した暑さで指数を下げます。
RH が 85% 超で T が 80°F 以上 87°F 以下のとき、((RH-85)/10) * ((87-T)/5) を加算し、蒸し暑いが中程度の暑さの空気で指数をわずかに上げます。どちらの分岐も、それぞれの正確な気温と湿度の範囲の内側でのみ動作します。その外側では基本の多項式が単独で成り立ちます。
だからこそ、それらの境界付近では数度違うだけの 2 つの読み取り値が、丸めると明らかに異なる体感温度になり得ます。
活用例
気象と安全のダッシュボード
観測所の生の気温と湿度を NWS の体感温度に変え、高温注意のバナーや作業者の安全警告に使います。
フィットネスと屋外向けアプリ
公式の NWS チャートに一致する決定的な rothfusz の値を用いて、ランニングの前にアスリートへ暑さ指数を表示します。
よくある質問
どの公式を使いますか?
80°F を超えると乾燥空気と多湿空気の補正を伴う NWS の Rothfusz 9 項回帰式を使い、80°F 未満では Steadman の簡易推定を返します。
とても乾燥した暑さで指数が下がるのはなぜですか?
湿度が13%未満で気温が80〜112 °Fのとき、結果から補正値を差し引くためです。公式の式どおり、非常に乾いた暑さでは指数が低めになります。
蒸し暑いがそれほど高温でないとき、少し上がるのはなぜですか?
湿度が85%を超え、気温が80〜87 °Fのときは、結果に小さな値を足すためです。蒸し暑くても気温がほどほどの空気で、指数がわずかに上がります。
気温を摂氏で入力できますか?
このツールは華氏で計算し、入力する気温も返される暑さ指数も華氏です。公式の表と同じ単位です。湿度は0から100までのパーセントで入力します。
暑さ指数はどんな場面で役立ちますか?
気象や安全の画面で暑さへの注意を表示したり、屋外作業の安全警告に使ったりできます。走る前に体感温度を確かめる運動用アプリにも向いています。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/heat-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"temp_f":90,"humidity":70}'const res = await fetch("https://api.kit.forhosting.com/dev/heat-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"temp_f": 90,
"humidity": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/heat-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"temp_f": 90,
"humidity": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/heat-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"temp_f":90,"humidity":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"temp_f":90,"humidity":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/heat-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"temp_f": 90,
"humidity": 70
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heat_index",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
気温 temp_f と相対湿度のパーセントから、華氏で NWS の暑さ指数(体感温度)を計算し、その値と使用したモード(simple または rothfusz)を返します。
Rothfusz 回帰式と低温時のフォールバック
その推定が 80°F 未満の場合、完全な回帰式は涼しい条件で信頼できないため、結果は mode を 'simple' に設定した simple の値になります。まず Steadman の簡易推定 simple = 0.5 * (T + 61 + (T-68)*1.2 + RH*0.094) を評価します。ここで T は temp_f、RH は humidity です。そうでなければ mode を 'rothfusz' に切り替え、9 項の多項式 HI = -42.379 + 2.04901523*T + 10.14333127*RH - 0.22475541*T*RH - 0.00683783*T² - 0.05481717*RH² + 0.00122874*T²*RH + 0.00085282*T*RH² - 0.00000199*T²*RH² を適用します。
入力・検証・丸め
任意の decimals パラメータは既定 1 で、0 から 2 までの整数でなければなりません。範囲外の値は拒否されます。temp_f は有限な数でなければならず、実数の全範囲で受け付けられます。humidity は 0 以上 100 以下の有限な数でなければならず、その帯の外側のものは問題のフィールド名を示す型付きの invalid_input エラーを送出します。非有限の中間結果も invalid_input を送出します。応答は temp_f と humidity を返し、どのモードがその数値を生んだかを報告しますので、呼び出し側は簡易推定と完全な回帰式の値を区別できます。
連携の活用例
IoT と空調のテレメトリ
数千のセンサー読み取り値を API に一括で通し、快適さの分析のために測定温度と並べて体感温度を記録します。
技術的な質問
どの単位が期待されますか?
temp_f は華氏、humidity は 0 から 100 までの相対湿度のパーセントです。結果 heat_index_f も華氏です。
なぜ応答に mode フィールドが含まれるのですか?
mode は推定が 80°F 未満のとき 'simple'、完全な多項式が実行されるとき 'rothfusz' です。どの計算が値を生んだかが分かるようにするためです。
結果はどのように丸められますか?
toFixed の文字列ではなく正確な計算値に対して、渡した decimals(0 から 2、既定 1)まで half-up 規則で丸めます。
無料ですか、また API はいくらですか?
ページ上の widget は無料で(tier A)、同じ決定的なコアを実行します。API は成功した呼び出しごとに $0.002 から課金されます。