ピタゴラス正距円筒距離
地図を局所的な平面とみなして、近い2地点間の距離をすばやく求めます。マンハッタンの2つの座標なら5 kmを少し超える距離です。南北と東西の成分もメートルで分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 緯度1
- 40.7128
- 経度1
- -74.006
- 緯度2
- 40.758
- 経度2
- -73.9855
- 距離(m)
- 5,314.523521
- 距離(km)
- 5.314523521
- 緯度差(m)
- 5,026.010684
- 経度差(m)
- 1,727.245453
この機能は、地図を局所的な平面とみなすことで、地球上の 2 地点がどれだけ離れているかを推定します。緯度と経度の差を平均緯度の余弦スケールを用いてメートルに換算し、その東西方向と南北方向のずれにピタゴラスの定理を適用します。結果は、おおよその地上距離をメートルとキロメートルで、さらに投影されたデルタも併せて返すので、中間の計算過程を検証できます。アルゴリズムは完全に決定論的で、ネットワーク通信も、乱数抽出も、時計への依存もありません。近い地点の手早く安価な距離、バッチでの順位付け、あるいは完全な大円公式の負担なしに正距円筒図法を教える場面でお使いください。
ピタゴラス正距円筒公式のしくみ
球面上では真の最短経路は大円ですが、多くの製品開発や分析の作業には、局所的な平面近似で十分です。このツールは古典的な正距円筒図法を用います。両方の緯度と経度をラジアンに変換し、緯度の差を固定平均半径の球における南北の弧とし、経度の差を平均緯度の余弦で拡縮することで、東西方向のメートルが極付近で縮むようにします。
この 2 つのメートルのずれが直角三角形の脚となり、その斜辺が報告される地上距離です。地球平均半径には 637 万 1000 メートルを用いており、これはこの手法について多くの教育資料や GIS の入門書が採用しているのと同じ定数です。
入力の範囲、別名、そして呼び出しが失敗する場合
WGS84 の地球上の十進度で送信してください。よく使われる別名も受け付けます。度分秒のテキストやグリッド参照ではなく、安定した十進数の値をお使いください。
それらの形式は呼び出す前に変換してください。params の例では、プローブとドキュメントが現実的であり続けるよう、短いマンハッタンの対を用いています。同一の地点なら距離はゼロです。
生の経度差で対蹠子午線を横切ると結果が過大になることがあります。日付変更線をまたぐ経路では、まず経度を正規化するか、代わりに大円法をお使いください。
この近似を球面公式より優先すべき場合
地点が比較的近い場合、最大の精度よりも最大の速度が必要な場合、あるいは地図投影を教えたり調べたりしていて中間のメートルのデルタが欲しい場合には、ピタゴラス正距円筒距離をお選びください。都市内の配達半径の判定、近くのセンサーのクラスタリング、大まかな所要時間の推定、UI のツールチップなどはいずれもよく適合します。
大陸間の経路、極地の経路、あるいは数パーセントの誤差が問題になる航法には、代わりにハバサインやビンセンティ方式の大円距離をお選びください。これらの手法は地球の曲率をより丁寧に扱います。平面投影が平均緯度のスケール係数を超えた子午線収束を無視するため、誤差は隔たりが大きいほど、また緯度が極端なほど増大します。
結果を保存する際は必ず手法を記録し、後の監査で近似を用いたことが分かるようにしてください。不正な入力は残高を消費しないため、バッチジョブの前に座標を積極的に検証できます。
活用例
都市規模の近接順位付け
重い地理空間ライブラリを読み込まずに、店舗、センサー、受け取り地点をユーザーからのおおよその地上メートルで並べ替えます。
地図投影を教える
緯度・経度のデルタが東西・南北のメートルになり、続いてピタゴラスの斜辺になる過程を、生きた数値とともに学生に示します。
よくある質問
ピタゴラス正距円筒法はどれほど正確ですか?
局所的な平面近似です。 短距離から中距離では精度が良好で、隔たりが大きくなるほど、また極付近ほど劣化します。長い大円経路には代わりに球面公式をお使いください。
費用はいくらですか?
ページ上のツールはブラウザーで無料です。不正な入力には課金されません。
近い2つの座標の距離はどう計算しますか?
2地点の緯度と経度を度単位の小数で入力します。距離がメートルとキロメートルで表示され、直角三角形の2辺に当たる南北と東西のずれも分かります。
極に近いほど東西の距離が縮むのはなぜですか?
経線は赤道から離れるほど互いに近づくためです。経度の差に平均緯度の余弦を掛けるので、同じ度数の差でも高緯度ではメートルが小さくなります。
2地点が180度の経線をまたぐとどうなりますか?
経度の差がそのままでは地球のほぼ一周分になり、距離が大きくずれます。先に経度を正規化するか、日付変更線を越える経路には大円の方法を使ってください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/pythagorean-geo-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat1":40.7128,"lon1":-74.006,"lat2":40.758,"lon2":-73.9855}'const res = await fetch("https://api.kit.forhosting.com/geo/pythagorean-geo-distance", {
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
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/pythagorean-geo-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat1": 40.7128,
"lon1": -74.006,
"lat2": 40.758,
"lon2": -73.9855
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/pythagorean-geo-distance", 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}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat1":40.7128,"lon1":-74.006,"lat2":40.758,"lon2":-73.9855}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/pythagorean-geo-distance", 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
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.pythagorean_geo_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
ピタゴラス正距円筒公式のしくみ
応答には、送信した 4 つの座標、メートルとキロメートルでの距離、符号付きの delta_lat_m と delta_lon_m の各成分、手法名、そして半径定数が含まれるため、下流のコードは公式を逆解析することなく由来を記録できます。
入力の範囲、別名、そして呼び出しが失敗する場合
緯度フィールド lat1 と lat2 はマイナス 90 度から 90 度まで(両端を含む)でなければなりません。経度フィールド lon1 と lon2 はマイナス 180 度から 180 度まで(両端を含む)でなければなりません。latitude1、from_lat、longitude1、from_lon、from_lng、latitude2、to_lat、longitude2、to_lon、to_lng は、いずれも同じ 4 つの必須数値に対応します。値は JSON の数値でも数値文字列でも構いませんが、有限でない値、空文字列、必須フィールドの欠落は invalid_input で失敗し、課金されません。範囲外の緯度や経度も同様に失敗し、問題のあるフィールド名を含むメッセージが返ります。
この近似を球面公式より優先すべき場合
単一の対を調べるには無料のブラウザーツールを、自動処理で同じ決定論的な結果が必要な場合は、成功した 1 リクエストあたり $0.002 で API を呼び出してください。
連携の活用例
バッチパイプラインの距離特徴量
分析や短距離の ML 特徴量向けに、安価で決定論的な distance_m 列を CSV やイベントストリームに追加します。
技術的な質問
この計算機は何を返しますか。
2 地点、メートルとキロメートルでの距離、投影された緯度・経度のデルタ(メートル)、手法ラベル pythagorean_equirectangular、そして使用した地球半径定数を返します。
呼び出しが失敗するのはどんなときですか。
必須座標が欠落または有限でないとき、あるいは緯度が −90…90 の範囲外、経度が −180…180 の範囲外のときに、invalid_input で失敗します。
ブラウザーの結果は API と同じですか。
はい。どちらも lib.js 内の同じ純粋な solve() を実行するため、同一の入力からは同一の距離とデルタが得られます。