ルート総距離
複数のGPS地点を通るルートの総距離を、区間ごとに足し合わせて求めます。例の3つのウェイポイントは直線距離で合計327.98509 km、つまり203.800486マイルです。各区間の距離もキロで表示され、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
配送ツアー、ハイキングの軌跡エクスポート、飛行計画、複数都市のロードトリップ案など、経路がGPS座標の順序付きリストで定義されているとき、プロダクトチームが最初に必要とする数値は、そのポリラインの総直線距離(大圏)であることが多いです。2点間だけの距離ツールでは一度に2点しか扱えず、閉じたリングの周囲長ツールでは起点への戻りが強制されます。このルート総距離計算機は2点以上のウェイポイントを受け取り、固定の球面上で連続する各区間の大圏弧をハバーサイン公式で測り、キロメートル・法定マイル・メートルの合計と、各区間のキロメートルを返します。
複数ウェイポイント大圏ルート距離の計算方法
複数ウェイポイントのルートは地球上の順序付きオープンポリラインです。点1から点2、点2から点3と最後の座標まで進みます。本機能は経路を起点へ閉じません。
区画や配送ゾーンなど閉じた地理リングの長さが必要な場合は、代わりにポリゴン周囲長ツールをご利用ください。各連続ペアについてハンドラはハバーサイン公式を評価します。これは2つの緯度・経度を中心角に変換し、平均地球半径6371キロメートルを掛ける数値的に安定した球面三角法の恒等式です。
この半径は多くのオープンGISスニペットや本カタログの2点ハバーサイン系列と同じ慣例に合わせているため、2ウェイポイントの呼び出しは専用の2点距離ツールと同じ弧長を、共有の丸めまで再現します。キロメートルとマイルは小数6桁、メートルは3桁です。法定マイルは国際換算1609.344メートル/マイルを使います。
モデルは球面であり、WGS84楕円体のVincentyやKarney測地線ではないため、測量級ライブラリとはわずかな割合で差が出ることがあります。物流の前フィルタ、旅程計画、スポーツ要約、分析バケットには通常十分で、地籍測量の代替ではありません。
対蹠点やほぼ同一の点にも対応し、内部クランプで浮動小数点の端点からNaNが出るのを防ぎ、同一の連続ウェイポイントは長さゼロを寄与します。
製品とパイプラインでのルート総距離の位置づけ
道路ルーティング前の複数停留所の配送スケッチ、見出し距離に要約したGPXやGeoJSONのトラック、平面地図とポリライン長を比較する教室GIS、チェックポイント間の直線区間をまとめるスポーツアプリ、申告旅程と直線上界を比較する不正・リスク機能などです。
住所から始めるときだけジオコーダを組み合わせ、latとlonを得たあとは長さ測定のためだけに再ジオコーディングしないでください。曲がり角ごとの運転距離、交通付きETA、標高プロファイルには専用ルーティングエンジンを維持してください。本ツールは大圏ポリライン長であり、道路ネットワーク費用ではありません。
検証失敗は残高を消費しません。対話UXではリストを適度に保ち、テストでは丸め済み合計を固定すれば、KITが既に提供する各チャネル向けの小さく監査可能な部品が得られます。
活用例
GPX・GeoJSONトラックの距離ヘッドライン
ハイキング・サイクリング・飛行のエクスポートトラックを、km・mi・mの合計と区間ごとのセグメントに要約し、ダッシュボードや共有カードに載せます。
教室GISと旅程の一括エンリッチ
GISスタックを立ち上げずに、授業データ・旅行プランナー・CSV行へ複数都市の大圏ルート合計を追加します。
よくある質問
経路は最初のウェイポイントへ閉じますか?
いいえ。 本ツールはオープンポリラインを測ります。閉じた地理リングの周囲長には、代わりにポリゴン周囲長計算機をご利用ください。
運転距離や道路距離と同じですか?
いいえ。 結果は球面上の大圏(直線距離)です。道路距離・交通・標高にはルーティングエンジンが必要で、本機能はポリライン長と前フィルタ向けです。
ウェイポイントはいくつまで入力できますか?
2つ以上、5000個までです。1地点だけ、空のリスト、または5000個を超える場合は計算を始めず、理由が表示されます。
合計距離はどの単位で表示されますか?
初期設定はキロメートルで、マイルやメートルも選べます。3つの単位の合計と各区間のキロが常に表示され、1マイルは1609.344メートルとして計算します。
緯度と経度を入れ違えるとどうなりますか?
両方の数値が有効な範囲内に収まっていると、そのまま計測されて意味のない合計になります。長いリストを測る前に、どちらが緯度でどちらが経度かを確かめてください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/route-total-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"waypoints":[{"lat":40.7128,"lon":-74.006},{"lat":39.9526,"lon":-75.1652},{"lat":38.9072,"lon":-77.0369}]}'const res = await fetch("https://api.kit.forhosting.com/geo/route-total-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"waypoints": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 39.9526,
"lon": -75.1652
},
{
"lat": 38.9072,
"lon": -77.0369
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/route-total-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"waypoints": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 39.9526,
"lon": -75.1652
},
{
"lat": 38.9072,
"lon": -77.0369
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/route-total-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"waypoints":[{"lat":40.7128,"lon":-74.006},{"lat":39.9526,"lon":-75.1652},{"lat":38.9072,"lon":-77.0369}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"waypoints":[{"lat":40.7128,"lon":-74.006},{"lat":39.9526,"lon":-75.1652},{"lat":38.9072,"lon":-77.0369}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/route-total-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"waypoints": [
{
"lat": 40.7128,
"lon": -74.006
},
{
"lat": 39.9526,
"lon": -75.1652
},
{
"lat": 38.9072,
"lon": -77.0369
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.route_total_distance",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
複数ウェイポイント大圏ルート距離の計算方法
各区間長はキロメートルで保持し、完全精度で合算したあと安定したJSON契約のために丸めます。
入力契約・単位・エイリアス・検証エラー
各オブジェクトはWGS84様式の十進度の緯度と経度を持ちます。緯度は−90から90の閉区間、経度は−180から180(両端含む)でなければなりません。ウェイポイント1点、空配列、5000点超は距離計算前に検証で失敗します。latとlonの入れ替えはよくあるクライアント不具合で、両方の数値が両方の範囲に収まると無意味な経路で成功し得るため、一括ジョブ前に必ず南北と東西を確認してください。ブラウザのtier-A経路は、完全なパイプラインを先に組まずに対話的な確認ができるように設計されています。必須のwaypoints配列に少なくとも2つのオブジェクトを含むJSONボディをPOSTしてください。範囲外・非有限・欠落フィールド・空文字・オブジェクトでない配列要素はinvalid_inputで拒否され、課金されません。配列は輸送エイリアスpoints、coordinates、routeを受け付け、各頂点はlatの代わりにlatitude、lonの代わりにlongitudeまたはlngを受け付けるため、GeoJSON風やモバイルのクライアントは形変換なしでフィールドを対応付けられます。任意のunitは主フィールドtotalに入れる値を選びます(kmが既定、mi、m)。unitに関わらず成功応答には常にtotal_km、total_mi、total_mが含まれ、2回目の呼び出しなしで複数単位を表示できます。ペイロードはwaypoint_count、segment_count(有効なオープンルートではウェイポイント数より常に1少ない)、区間長の順序付きリストsegments_km、監査用に6371のearth_radius_kmも報告します。価格はAPIの成功アイテムあたり定額$0.002です。
製品とパイプラインでのルート総距離の位置づけ
すでに順序付き座標を持ち、大圏(直線距離)のツアー長を透明に必要とする場面で本エンドポイントをご利用ください。Worker、バックエンドジョブ、スクリプトから呼び出し、ウェイポイント一覧を渡し、totalと3つの単位フィールドを読み、必要ならUI内訳用に各区間の横にsegments_kmを保存します。モデルは公開半径と固定丸めの純粋算術なので、オフラインで再計算してAPIとバイト単位で一致させられます。閉じた境界にはポリゴン周囲長を、単一の発着ペアには2点ハバーサインで十分ですが、複数都市・複数チェックポイント製品は合算ルート形が必要で、1リクエストがn−1回のペア呼び出しを置き換え、順序の一貫性を保証します。
連携の活用例
複数停留所の配送・フィールドサービス下書き
デポと顧客ピンの間の大圏区間を合算し、本格的な道路ルーティングAPIに予算を使う前にツアー長を見積もります。
技術的な質問
ルート総距離はどのように計算されますか?
連続する各ウェイポイント対を半径6371 kmの球面上でハバーサイン大圏公式により測り、区間長を合算してtotal_km、total_mi、total_mを得ます。
ウェイポイントの最小数はいくつですか?
{lat, lon}点が少なくとも2つ必要です。1点または空リストはinvalid_inputを返し、課金されません。
APIの料金はいくらですか?
成功した各リクエストはプリペイドのForHosting KIT残高から$0.002です。検証失敗は課金されません。ブラウザツールは無料です。