有義波高計算機
記録の波高を入力すると、上位3分の1の平均である有義波高Hsが分かります。2.4、2.1、1.8が上位に並ぶ9本の波なら、Hsは同じ単位で2.1です。ブイの記録、海岸の設計確認、海洋学の課題に使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
有義波高(Hs)は、海洋予報・海岸工学・船舶航路計画・洋上設計で使われる海況の標準要約量です。個々の波(ゼロクロス)の定義では、Hs は記録中の最大峰でも全波の算術平均でもなく、大きい順に並べた計測波高のうち上位3分の1の平均です。この定義は、訓練された観測者が歴史的に「有義波の高さ」を見積もった方法と一致し、規格や設計基準が有義波高と言うときに指す量でもあります。本計算機は一貫した長さ単位(メートル、フィート、センチメートル)の個々の波高リストを受け取り、Hs とともに標本数、上位3分の1平均に入った波の本数、補助統計(最大・最小・全波平均)を返します。
有義波高の意味と Hs の計算方法
水面標高の時系列から標準的なゼロクロス法で連続する個々の波を同定するか、センサログから既に抽出した峰から谷までの高さを集めます。すると、1つの長さ単位で非負の高さ H1…HN のリスト(本数 N)が得られます。このリストを降順に並べ、最大の高さが先頭になるようにします。
標本の上位3分の1は先頭から n 本の高さであり、n は floor(N を3で割った値)です。ただし N が1または2のときは、空でない記録が常に定義された Hs を返すよう、少なくとも1本を使います。有義波高は、それら n 個の最大値の算術平均です。
9本の記録を 2.4, 2.1, 1.8, 1.6, 1.5, 1.2, 1.1, 0.9, 0.8 と並べた場合、n は3、Hs は 2.4・2.1・1.8 の平均、すなわち同じ単位で 2.1 です。分布の下位3分の2を平均の前に捨てるため、Hs は通常すべての波の平均より大きくなります。
上位3分の1が単一の峰に縮退しない限り、単独の最大高より小さくなるのが普通です。分散スペクトルの0次モーメントから得られる Hs のスペクトル定義は、狭帯域の深海では密接に関連しますが、本機能は時間領域の個々波平均のみを実装します。高さを渡すと上位3分の1の平均が返り、スペクトル推定や外部の水深データは使いません。
活用例
ブイとセンサの後処理
バーストから得たゼロクロス波高のリストを、ログ・警報・沿岸監視ダッシュボード用の単一の Hs にまとめます。
海洋学実験と宿題
短い記録について、有義波高の上位3分の1定義を手計算と突き合わせられるようにします。
海上運用と設計確認
フルのスペクトル波浪モデルなしで再現可能な Hs が必要なスクリプトに、計測した個々の高さを渡します。
よくある質問
記録から有義波高 Hs はどう計算しますか?
空でない個々の波高リストを大きい順に並べ、上位 floor(N/3) 個(少なくとも1個)を取り、その平均を求めます。その平均が入力と同じ単位の Hs です。
スペクトルの Hm0 と同じですか?
いいえ。 本ツールは時間領域の個々波定義(上位3分の1の平均)を実装します。分散スペクトル由来の Hm0 は関連しますが計算法が異なり、ここでは推定しません。
有義波高が平均の波より大きくなるのはなぜですか?
平均を取る前に、記録の下位3分の2を除くからです。9本の例では全波の平均は1.5未満ですが、上位3本の平均であるHsは2.1になります。
波高はメートルに換算してから入力すべきですか?
その必要はありません。メートル、フィート、センチメートルのどれでも使えますが、一覧のすべての波高を同じ単位にそろえてください。結果も同じ単位で表示され、換算は行いません。
波高に負の値を入れるとどうなりますか?
負の波高は受け付けず、入力の誤りとしてお知らせします。空の一覧や数字でない値も同じ扱いで、ありえない値からHsを作ることはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/earth/significant-wave-height \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"wave_heights":[0.8,1.2,1.5,0.9,2.1,1.8,1.1,2.4,1.6]}'const res = await fetch("https://api.kit.forhosting.com/earth/significant-wave-height", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"wave_heights": [
0.8,
1.2,
1.5,
0.9,
2.1,
1.8,
1.1,
2.4,
1.6
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/significant-wave-height",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"wave_heights": [
0.8,
1.2,
1.5,
0.9,
2.1,
1.8,
1.1,
2.4,
1.6
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/significant-wave-height", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"wave_heights":[0.8,1.2,1.5,0.9,2.1,1.8,1.1,2.4,1.6]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"wave_heights":[0.8,1.2,1.5,0.9,2.1,1.8,1.1,2.4,1.6]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/significant-wave-height", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"wave_heights": [
0.8,
1.2,
1.5,
0.9,
2.1,
1.8,
1.1,
2.4,
1.6
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.significant_wave_height",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空の記録は高さを捏造せず invalid_input で失敗します。
入力契約、応答フィールド、エラー動作
暴走した貼り付けがワーカーを独占しないよう、1回あたり10万値の上限があります。単位は換算しません。 メートルを送ればメートル、フィートを送ればフィートが返ります。1つのリストに単位を混ぜないでください。Hm0、ピーク周期、方向スペクトルが必要なら、ご自身の作図やスペクトルツールと組み合わせてください。必須フィールド wave_heights を1つ含む JSON 本体を POST します。内容は有限の非負数の空でない配列です(エイリアス heights, waves, H, values を受理)。各要素は JSON 数値でも数値文字列でもよく、自由テキスト形式ではカンマ区切りや空白区切りのリストも受け付けます。空配列、欠落フィールド、非数値トークン、負の高さは invalid_input で失敗し、課金されません。本エンドポイントは記録からの古典的 Hs 平均のみに答えます。実装は純粋 parse の tier A のため、成功した各呼び出しは公開の基本料金 $0.002 のみで、モデルトークンも外向きネットワークも使いません。
有義波高 API が役立つ場面
海岸技術者やマリーナ運営者は、圧力・音響センサのバーストを個々の高さに後処理し、フルの海洋学スイートを開かずに、ログ・ダッシュボード・設計確認用の再現可能な Hs を必要とします。海洋予報の教材や大学の海洋学実験では、上位3分の1平均が標本平均より上・極端な峰より下にあることを学生が確かめるライブ計算機として使えます。すでにゼロクロス高さを保存している船舶・洋上運用スクリプトは、各言語で並べ替えと切り出しを再実装する代わりに小さな API を呼べます。「検証失敗(特に空記録)は残高を消費しないため、不正ペイロードを突くヘルスチェックも安価です。
技術的な質問
波高サンプルが空の場合はどうなりますか?
タスクは invalid_input で失敗します。空の記録では有義波高は未定義のため、API は高さを捏造せず、その呼び出しは課金されません。
波高は負でもよいですか?
いいえ。各高さは有限の非負数でなければなりません。波高は符号付き標高ではなく峰から谷までの大きさなので、負値は invalid_input になります。
有義波高計算機の料金はいくらですか?
ブラウザツールは無料です。API リクエストは成功1回あたり $0.002 の前払い KIT 残高を使い、無効入力は課金されません。