等積緯度計算ツール
等積緯度計算ツールは、通常の測地緯度を、面積を保ったまま楕円体を球面へ対応付けるための補助角へ変換します。緯度を入力し、必要に応じて基準楕円体の逆扁平率も指定してください。結果には、度およびラジアンで表した等積緯度、正規化した等積関数、計算に用いた第一離心率の二乗が含まれます。既定値は WGS 84 ですので、世界規模の地理データや正積図法の処理にすぐご利用いただけます。
無料で実行
等積緯度を使用する理由
面積を正しく保つ必要がある場合、楕円体上で測った地理緯度をそのまま球面へ移すことはできません。楕円体の子午線と緯線は、特に高緯度になるほど、球面上の対応物とは異なる形で表面積を配分します。等積緯度は、この差を補う変換です。楕円体上で赤道から任意の測地緯度までの帯が持つ面積と、等積球上で赤道から対応する等積緯度までの帯が持つ面積を等しくします。この性質は、正積地図投影の導出と実装で重要です。変換によって緯度は変わりますが、新しい物理的位置、距離、方位を表すものではありません。投影計算の内部で用いる補助座標です。赤道と両極では測地緯度と等積緯度が一致します。扁平な地球楕円体の中間緯度では、等積緯度の絶対値がわずかに小さくなります。度数では小さな差に見えても、楕円体データへ球面用の式を直接適用すると、系統的な面積誤差が生じることがあります。
変換の計算方法
まず、指定された逆扁平率から扁平率を求め、楕円体の第一離心率の二乗を計算します。次に、指定された測地緯度で標準の等積関数 q を評価し、その値を極における q で割ります。等積緯度は、この正規化した比の逆正弦です。正規化により、南極から北極までの全範囲がマイナス1からプラス1へ対応してから逆正弦が適用されます。実装では自然対数と倍精度演算を使用し、ごく小さな浮動小数点誤差を吸収するために最終比だけを範囲内へ収め、指定された小数桁数で出力を丸めます。返される q_ratio は等積緯度の正弦でもあるため、別実装の検証にも利用できます。長半径は必要ありません。q を極の値で割ると縮尺が相殺されるためです。この角度変換に影響するのは、逆扁平率で表される楕円体の形状だけです。
入力の選択と結果の読み方
lat_deg には、マイナス90から90までの符号付き十進角を指定してください。正の値は赤道より北、負の値は南です。f_inv を省略すると、GPS 座標や多くの世界的データセットに適した WGS 84 の逆扁平率 298.257223563 が使用されます。元の座標が別の基準楕円体に明示的に結び付いている場合は、その逆扁平率を指定してください。ある datum の緯度と別の楕円体の形状値を組み合わせると、変換の整合性が失われます。decimals は表示だけを制御し、内部計算では常に JavaScript の数値精度をすべて使用します。報告書や度単位の投影処理には度の結果を、三角関数コードにはラジアンの結果をご利用ください。この変換は反対称であり、入力の符号だけを変えると、緯度に依存する出力の符号だけが変わります。等積緯度だけでは正積投影は完成しません。等積球半径、中央子午線、標準緯線、偽原点などが別途必要な場合があります。
活用例
楕円体の正積投影を実装する
元の測地緯度を、球面形式の正積投影式が必要とする補助角へ変換します。
地理空間ソフトウェアを検証する
度、ラジアン、正規化 q 値を、独立した投影ライブラリーや数値実装と比較します。
補助緯度の概念を説明する
楕円体の扁平率が中間緯度を変える一方で、赤道と両極は変わらないことを示します。
よくある質問
等積緯度とは何ですか?
楕円体とその等積球で、対応する帯の面積を等しくする補助緯度です。
地心緯度と同じですか?
いいえ。地心緯度は赤道面と中心を通る線との角度ですが、等積緯度は表面積の等しさで定義されます。
既定ではどの楕円体を使いますか?
WGS 84 の逆扁平率 298.257223563 を既定値として使用します。
長半径が不要なのはなぜですか?
等積緯度は2つの面積関数の比で決まり、絶対的な縮尺が相殺されて扁平率だけが残るためです。
等積球の半径も計算しますか?
いいえ。緯度だけを変換します。同面積球の半径は長半径も使う別の計算です。
API リクエストの料金はいくらですか?
API リクエストは1回 $0.002 です。同じ決定論的計算をブラウザーでは無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/authalic-latitude \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat_deg":45}'const res = await fetch("https://api.kit.forhosting.com/geo/authalic-latitude", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat_deg": 45
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/authalic-latitude",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat_deg": 45
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/authalic-latitude", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat_deg":45}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat_deg":45}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/authalic-latitude", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"lat_deg": 45
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.authalic_latitude",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |