風向角を32方位に変換する計算ツール
このツールは、北を基準に時計回りで測った角度を、32方位の羅針盤で最も近い方位へ変換します。東西南北や一般的な中間方位だけでなく、北東微東や南微西のような細かな方位も判定します。0から360度までの有限な値を入力すると、方位名、略号、正規化した角度、方位番号、該当区分の中心角を確認できます。境界では常に同じ丸め規則を用いるため、結果は決定的で再現可能です。
無料で実行
32方位の羅針盤を読む方法
32方位の羅針盤は、一周を32個の等しい区分に分けたものです。各区分は11.25度で、東西南北の4方位や一般的な8方位よりも細かく向きを表せます。北から時計回りに、北微東、北北東、北東微北、北東と進み、その後も東へ向かって同じ規則で並びます。この並びは円周全体で繰り返されます。略号にも位置関係が反映され、Nは北、NNEは北北東、NEbNは北東微北を示します。小文字のbは、英語圏の伝統的な表記にある“by”に由来します。本ツールは略号と日本語の完全な方位名を両方返すため、短いログにも、すべての航海記号を知らない方に向けた報告書にも利用できます。さらに、0から始まる方位番号も返します。北は0、東は8、南は16、西は24です。この規則的な番号は、ソフトウェア処理、表の作成、後工程での分類に適しています。
最も近い方位を決める仕組み
風向角は北を基準に時計回りで測ります。0度は北、90度は東、180度は南、270度は西です。32方位では隣り合う中心が11.25度ずつ離れているため、入力値を最も近い11.25の倍数へ丸めます。2つの中心の境界は双方から5.625度の中間点です。角度がこの中間点と完全に一致した場合は、時計回り側の区分を選びます。この規則により、どの入力にも一意で再現可能な結果が得られます。たとえば67.5度は正確に東北東となり、そこから時計回り側の境界をわずかに下回る角度も同じ方位に分類されます。出力される区分中心角を見れば、選ばれた方位の代表角と丸めの内容を確認できます。360度も有効で、物理的には0度と同じ北を示します。そのため正規化後は0になりますが、入力した値自体は別に保持されます。0未満または360を超える値は自動的に循環させず、入力エラーとして扱います。
細かな方位を適切に利用するために
32方位の細かさは、4方位や8方位の名称では方向情報が失われすぎる場合に役立ちます。気象観測では観測所の数値を読みやすい方位へ変換でき、航海では伝統的な表記を解釈できます。また、開発者は境界表を独自に管理せず、地図の矢印やセンサー記録へ一貫したラベルを付けられます。ただし、結果は分類であり、元の測定値が11.25度単位の精度を持つことを保証するものではありません。突風を受けるセンサーは区分境界を何度も往復する可能性があり、正確な測定が必要な用途では、丸めた方位名だけで元の角度を置き換えるべきではありません。監査や後日の分析に備え、方位名と一緒に元の度数も保存してください。本機能の正常な応答には両方が含まれます。さらに、気象の風向は通常、風が吹いてくる方向を表しますが、進行方位は物体が向かう方向を示します。数値変換は同じでも意味は異なるため、結果を表示する前にデータ源の規約をご確認ください。
活用例
気象観測値への方位表示
元の度数を残したまま、数値の風向観測を精密で読みやすい方位名へ変換します。
伝統的な航海方位の解釈
航海記録や歴史資料にある細かな方位名と略号を、角度による針路へ対応付けます。
方向表示インターフェースの構築
地図、ダッシュボード、センサー表示、出力データへ、32区分の安定した名称と番号を付与します。
よくある質問
変換料金はいくらですか?
ブラウザーでは無料で実行できます。APIによる変換は1回につき$0.002です。
方位の間隔が11.25度なのはなぜですか?
360度の円を32個の等しい方位に分割すると、1方位あたり11.25度になるためです。
2つの方位の境界と完全に一致するとどうなりますか?
隣接する中心のちょうど中間にある場合は、常に時計回り側の方位を選択します。
0度と360度はどちらも北ですか?
はい。どちらも北を表します。360の入力は0へ正規化されますが、送信値は別項目として保持されます。
負の方向や360を超える値を入力できますか?
いいえ。0から360度までの範囲を外れる値は、無効な入力としてエラーになります。
風向は風が吹いてくる方向を示しますか?
気象分野では通常その意味です。本ツールは受け取った角度を分類するため、データ源が採用する規約をご確認ください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/earth/wind-direction-to-compass-32 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"direction_degrees":73.2}'const res = await fetch("https://api.kit.forhosting.com/earth/wind-direction-to-compass-32", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"direction_degrees": 73.2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/wind-direction-to-compass-32",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"direction_degrees": 73.2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/wind-direction-to-compass-32", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"direction_degrees":73.2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"direction_degrees":73.2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/wind-direction-to-compass-32", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"direction_degrees": 73.2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.wind_direction_to_compass_32",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |