対地有効速度(SMG)計算
2つのGPS位置の間で実際にどれだけの速さで進んだかが分かります。5.314523 km離れた2地点を30分で結ぶと、対地有効速度は10.629047 km/h、つまり5.739226ノットです。距離はkm、海里、メートルで表示され、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- Lat1
- 40.7128
- Lon1
- -74.006
- Lat2
- 40.758
- Lon2
- -73.9855
- 経過時間
- 0.5
- 距離 (km)
- 5.314523
- 距離 (nmi)
- 2.869613
- 距離 (m)
- 5,314.523
- 実効速度 (km/h)
- 10.629047
対地有効速度(speed made good、SMG)とは、実際にたどった航跡の経路長ではなく、位置フィックス間の直線的な進捗として測るルート上の実効速度です。船長、操縦士、フリート運用者、GPSログ分析者は、2回の位置報告のあとに同じ問いを立てます。その2点のあいだを、経過時間でどのくらいの速さで直線前進したのか。本SMG計算機は、2つの緯度・経度のあいだの決定論的なhaversine大圏距離を、ご指定の経過時間(時間)で割って答えます。結果にはキロメートル・海里・メートルの距離に加え、km/h・ノット・m/sのSMGが含まれ、海上・航空・陸上航法のいずれでも別途の単位換算なしで使えます。
対地有効速度の意味と平均速度との違い
対地有効速度は、2つの地理フィックス間の直線変位を、そのフィックス間の経過時間で割った比です。球面上の直線は大圏弧、すなわちフィックス1とフィックス2を結ぶ最短の地表面経路です。平均速度は、実際に進んだ走行距離計やログ距離(迂回、タック、交通のループを含む)を使うため、航跡が蛇行するとSMGより大きくなり得ます。
SMGは次のウェイポイントへ直線的にどれだけ進捗したかを示し、航海計画者が要求前進速度や、航路から外す海流・風の影響と比較する数値です。2フィックスが一致すれば距離は0、正の経過時間ならSMGも0(直線意味での対地静止)です。元データが時刻付きのlat/lon対ならSMGを、曲がりを含む総航跡距離が既知なら経路長ベースの平均速度を使ってください。
対地有効速度が役立つ場面
沿岸・外洋のセーリングクルーは、連続GPSフィックス間のSMGで、海流・タック・ルート選択が次のマークへの進捗を本当に改善したか(水上速度の上昇だけではないか)を判断します。配送フリートや長距離トラック基盤は、デポのジオフェンス間SMGを予定の前進速度と比較し、都市ループで膨らんだ経路長平均ではなく真の進捗で遅延リスクを発火させます。
航空・UAV運用者は、ADS-Bやテレメトリが時刻付きだが完全統合経路なしで届くとき、報告位置間の対地進捗を推定します。対地有効速度計算機で検索上位を狙う教育・試験対策サイトは、無料経路と有料自動化が同一純モジュールで一致するライブツールを必要とします。検証失敗は残高を消費しません。
弧長だけなら別のhaversine距離ツールと、距離がすでに経路合計なら平均速度ツールと組み合わせてください。
活用例
セーリング・沿岸航法ログ
連続GPSフィックス間のSMGを計算し、海流・風・タック効率に対するウェイポイントへの真の進捗を測ります。
フリート進捗とETAリスク
デポ間・停留所間の位置対と経過時間を直線SMGに変換し、スケジュールリスクのダッシュボードに使います。
よくある質問
対地有効速度と平均速度の違いは何ですか?
SMGは2位置フィックス間の直線大圏距離を使います。平均速度は迂回を含む総経路長を使うため、航跡が直接弧でないと両者は一致しません。
対地有効速度計算機はどの単位を返しますか?
距離はキロメートル・海里・メートル、SMGは時速キロメートル・ノット(nmi/h)・秒速メートルです。経過時間は常に時間単位で指定します。
経過時間を0より大きくする必要があるのはなぜですか?
対地有効速度は距離を時間で割って求めるためです。時間が0だと速度が無限大になるので、0や負の時間は意味のない数値を出さずに受け付けません。
分単位の時間はどう入力しますか?
先に小数の時間に直してください。15分は0.25時間、30分は0.5時間です。記録が分と秒の形なら、計算の前に時間へ換算します。
航海では対地有効速度をどう使いますか?
続けて取ったGPS位置の間で、潮流や風が進み具合を遅らせているかが分かります。航海計画では、必要な進出速度と比べて使います。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/speed-made-good \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat1":40.7128,"lon1":-74.006,"lat2":40.758,"lon2":-73.9855,"elapsed_hours":0.5}'const res = await fetch("https://api.kit.forhosting.com/geo/speed-made-good", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 40.758,
"lon2": -73.9855,
"elapsed_hours": 0.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/speed-made-good",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 40.758,
"lon2": -73.9855,
"elapsed_hours": 0.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/speed-made-good", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat1":40.7128,"lon1":-74.006,"lat2":40.758,"lon2":-73.9855,"elapsed_hours":0.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat1":40.7128,"lon1":-74.006,"lat2":40.758,"lon2":-73.9855,"elapsed_hours":0.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/speed-made-good", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 40.758,
"lon2": -73.9855,
"elapsed_hours": 0.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.speed_made_good",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
対地有効速度の意味と平均速度との違い
本エンドポイントはその弧を、平均地球半径6371キロメートル上のhaversine公式で求め、経過時間(時間)で割ってSMGを得ます。この定義は、経路長に基づく全体平均速度とは意図的に異なります。フィックスが異なり経過時間が0に近づくとSMGは無界に増えるため、本APIは無限速度を返す代わりに非正の経過時間を拒否します。
入力契約・応答フィールド・検証規則
緯度はマイナス90度から90度の閉区間、経度はマイナス180度から180度の閉区間に収まらねばなりません。例:マンハッタン付近の北緯約40.7128・西経約74.006を出発し、北東に数キロの地点へ30分後に到着すると、直線距離は数キロ、SMGは都市交通程度のkm/h・ノットになります。小数時間も可で、15分は0.25時間です。ログがmm:ssの場合は、呼び出し前に時間へ換算してください。POSTするJSON本体には、必須の有限数値5つを含めます。第1フィックスのlat1とlon1、第2フィックスのlat2とlon2、報告間の正の時間(時間)を示すelapsed_hoursです。対地有効速度は距離を時間で割るため、elapsed_hoursは厳密に0より大きくなければなりません。欠落フィールド、空文字列、非有限値、範囲外座標、非正の経過時間はいずれもinvalid_inputで失敗し、課金されません。成功時は5入力をエコーし、haversine弧のdistance_km・distance_nmi・distance_m、およびsmg_kmh・smg_knots・smg_mpsを返します。formula欄はSMGがhaversine距離÷経過時間であることを再述し、method欄はアルゴリズムをspeed_made_good_haversineと識別します。
対地有効速度APIが価値を生む場面
実装は純parseティアAのため、成功呼び出しは公開の基本価格$0.002のみで、モデルトークンも外向きネットワークもありません。
連携の活用例
テレメトリと教育用ウィジェット
航空・UAV・教室向けに、GISサーバーなしでlat/lon対から決定論的なSMGオラクルを提供します。
技術的な質問
2フィックスから対地有効速度をどう計算しますか?
十進度のlat1・lon1・lat2・lon2と、0より大きいelapsed_hoursを送ってください。APIはhaversine距離とkm/h・ノット・m/sのSMGを、SMG = distance / elapsed_hoursで返します。
elapsed_hoursが0または負だと拒否されるのはなぜですか?
対地有効速度は距離を時間で割ります。0または負の時間では比が未定義になるため、タスクはinvalid_inputで失敗し、課金されません。
対地有効速度計算機の料金はいくらですか?
ブラウザ上のツールは無料です。APIリクエストは前払いKIT残高から成功1回あたり$0.002です。無効入力は課金されません。