測量座標から方位角と水平距離を計算
この方位角・距離計算ツールは、2つの測量点の平面座標から、第1点から第2点への方向と水平距離を求めます。器械点の東距と北距に続いて、目標点の対応する座標を入力してください。計算結果には、グリッド北を基準に時計回りで測った方位角、座標と同じ単位の水平距離、および検算に使用できる東距差と北距差が表示されます。
無料で実行
器械点と目標点を正しく設定します
点1を後視方向が設定されていない出発側の器械点、点2を方向を求める目標点として扱います。両方の座標は、同一の投影座標系またはローカルグリッドで入力してください。東距はグリッドの東軸に沿う変位、北距は北軸に沿う変位を表します。値は正でも負でも構いませんが、4つの値には同じ原点、縮尺、測地基準および長さの単位を使用する必要があります。座標がメートルなら水平距離もメートル、フィートなら水平距離もフィートで返されます。このツールは緯度・経度を変換せず、地図投影も行いません。異なるグリッドゾーン、国際フィート、米国測量フィート、回転の異なる工事座標系を自動調整することもありません。作業に必要な精度を保てる桁数で入力してください。2点を入れ替えると距離は同じですが、逆方位角は正規化後に180度異なります。
方位角と距離の計算方法を確認します
最初に、点2の座標から点1の座標を差し引きます。目標点が器械点より東にあれば東距差は正、北にあれば北距差は正になります。水平距離は、この2つの差を直角辺とする平面上の斜辺です。方位角は測量の慣例に従い、グリッド北を0度として時計回りに増加します。東は90度、南は180度、西は270度です。内部では、東距差を第1方向成分、北距差を第2方向成分としてatan2で方向を求めます。この順序は、一般的な数学の極角が正の水平軸から始まり、反時計回りに増加するため重要です。負の方向は、0度を含み360度を含まない範囲に正規化されます。結果は再現性を保つため小数点以下10桁に丸められます。出力される座標差を使えば、計算の再現、符号の確認、トラバース計算表への成分の転記が行えます。
測量上の適用範囲を守って結果を使用します
これは平面座標による計算であるため、得られる方向はグリッド方位角であり、必ずしも真方位角、磁気方位角、測地方位角ではありません。別の北基準が必要な場合は、子午線収差や適切な方向補正を別途適用してください。また、返される距離は2次元の水平距離です。標高、斜距離、縮尺係数、海面補正、結合係数、曲率、屈折、器械高および目標高は考慮されません。これらの補正は、座標参照系や現場の観測方法に応じて、測量工程全体の中で処理する必要があります。2点が一致する場合は距離が0で方向が定まらないため、入力は拒否されます。品質確認では、座標差の符号と予想象限を比較し、単位を確認したうえで、目標点がおおむね北東、南東、南西、北西のどこにあるべきか検証してください。自動処理では、追跡可能性を確保するため、入力座標と出力成分を方位角および距離と一緒に保存してください。同じ入力には常に同じ結果を返すAPIの料金は、1回につき$0.002です。
活用例
杭打ち作業を準備する
現場作業の前に、器械点と目標点のグリッド座標を時計回りの方位角と水平距離へ変換します。
トラバースの辺を検査する
調整済みの測点座標から辺の方向と長さを再計算し、トラバース計算表と照合します。
座標幾何を監査する
東距差と北距差を結果とともに表示し、符号、象限、距離の確認を追跡できるようにします。
よくある質問
方位角はどの方向を基準に測りますか?
グリッド北を基準として時計回りに測ります。北は0度、東は90度、南は180度、西は270度です。
水平距離の単位は何ですか?
入力した座標と同じ長さの単位です。このツールはメートルとフィートを相互変換しません。
緯度と経度を入力できますか?
できません。同一の投影座標系またはローカル平面座標系の東距と北距を使用してください。地理座標には事前の投影または測地計算が必要です。
計算結果は真北を基準にしていますか?
必ずしもそうではありません。北軸に基づくグリッド方位角です。真北または磁北が必要な場合は、収差などの補正を適用してください。
同じ測点が拒否されるのはなぜですか?
水平距離が0で一意の方向が定まらず、方位角を定義できないためです。
APIリクエストの料金はいくらですか?
APIは1回につき$0.002です。ブラウザー上の計算は無料です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/eng/azimuth-from-coords \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"easting_1":5000,"northing_1":10000,"easting_2":5125.5,"northing_2":10175.25}'const res = await fetch("https://api.kit.forhosting.com/eng/azimuth-from-coords", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"easting_1": 5000,
"northing_1": 10000,
"easting_2": 5125.5,
"northing_2": 10175.25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/azimuth-from-coords",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"easting_1": 5000,
"northing_1": 10000,
"easting_2": 5125.5,
"northing_2": 10175.25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/azimuth-from-coords", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"easting_1":5000,"northing_1":10000,"easting_2":5125.5,"northing_2":10175.25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"easting_1":5000,"northing_1":10000,"easting_2":5125.5,"northing_2":10175.25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/azimuth-from-coords", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"easting_1": 5000,
"northing_1": 10000,
"easting_2": 5125.5,
"northing_2": 10175.25
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.azimuth_from_coords",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |