ベールマン正積図法計算ツール
ベールマン正積図法計算ツールは、地理座標の緯度と経度を、球面上の平面座標 x、y に変換します。この図法を特徴づける北緯・南緯30度の標準緯線を用い、中央経線と球の半径も指定できます。出力座標の単位は半径の単位と同じです。計算は決定的でネットワーク接続を必要とせず、球面モデル上の面積比を保ちます。数式の確認、地図座標の準備、投影によるひずみの学習、再現可能な地理情報処理に適しています。
無料で実行
ベールマン図法による座標変換の仕組み
ベールマン図法は、正積円筒図法の一種です。本ツールでは地球を球として扱い、ベールマン図法を定義する北緯・南緯30度を標準緯線として固定します。水平方向の座標は経度から求めます。入力した経度と中央経線との差をラジアンへ変換し、球の半径を掛け、さらに30度の余弦で縮尺を調整します。垂直方向の座標は、緯度の正弦を同じ余弦で割って求めます。この二つの縮尺係数を組み合わせることで、球面モデル上の面積比が保たれます。結果は、選択した中央経線と赤道を基準とする x、y の組です。中央経線上の点では x がゼロになり、赤道上の点では y がゼロになります。また、固定された標準緯線、中央経線、半径も結果に含まれるため、計算条件をご確認のうえ同じ結果を再現できます。
入力値、単位、精度の選び方
緯度と経度は10進度で入力してください。緯度は -90 から 90、経度は -180 から 180 の範囲です。省略可能な中央経線は、投影図の中央に置く経度を指定します。既定値はグリニッジ子午線に相当するゼロ度です。中央経線を変えると x 座標は移動しますが、y 座標と正積性は変わりません。半径の既定値は、一般的な地球平均半径である 6,371,008.8 メートルです。別の球を扱う場合は任意の正の半径を指定できます。半径を一にすると、球半径を単位とする無次元座標になります。半径に指定した単位が、そのまま x と y の単位です。小数桁数はゼロから十二まで指定でき、既定値は六です。丸めは投影計算の完了後に一度だけ行います。値の欠落、無限値、範囲外の値、正でない半径には、誤解を招く座標を返さず入力エラーを通知します。
適切な用途と制約
球面ベールマン図法を明示的に使用する場合、正積円筒図法の各方式を比較する場合、または地図処理で計算過程が明確な座標変換が必要な場合にご利用ください。正積とは、球面上の地域どうしの面積比が正しく保たれることを意味します。そのため、人口、生息地、土地被覆、排出量などを示す主題図に適しています。一方で、形状、距離、方向、局所的な角度があらゆる場所で正しく保たれるわけではありません。ひずみは緯度によって変化し、極域は正積円筒図法に共通する形で水平方向に引き伸ばされます。本計算は楕円体の測地系変換ではなく、EPSG 座標参照系、東西・南北の原点加算値、測地系メタデータも付与しません。測量、航法、地籍、または特定の CRS を必要とする GIS との交換には、正式な座標操作を備えた地理空間ライブラリをご使用ください。数式検証、教育、再現可能な可視化、球面モデルでの軽量な前処理には、明確で検証しやすい結果を提供します。
活用例
主題図の座標を準備
面積に関する世界地図を描く前に、地理上の点を球面正積座標へ変換します。
投影実装を検証
GIS、可視化、教材ソフトでベールマンの数式を試す際に、既知の入力と決定的な出力を比較します。
地図のひずみを説明
30度に固定された標準緯線が、各緯度の x、y 座標へ与える影響を示します。
よくある質問
なぜベールマン図法と呼ばれるのですか?
標準緯線を北緯・南緯30度に固定した、球面正積円筒図法の数式を使用するためです。
x と y はどの単位で返されますか?
半径と同じ単位です。既定の半径ではメートル、半径を一にすると球半径単位で表されます。
距離や形状も保たれますか?
いいえ。球面モデル上の面積比は保たれますが、距離、形状、方向、角度はひずむ場合があります。
標準緯線を変更できますか?
いいえ。30度の標準緯線がベールマン図法を定義するため、この値は固定されています。
API リクエストの料金はいくらですか?
API は1リクエスト $0.002 からです。同じ決定的な計算をブラウザーで無料でも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/behrmann-projection \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":40.7128,"lon":-74.006}'const res = await fetch("https://api.kit.forhosting.com/geo/behrmann-projection", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 40.7128,
"lon": -74.006
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/behrmann-projection",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 40.7128,
"lon": -74.006
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/behrmann-projection", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":40.7128,"lon":-74.006}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":40.7128,"lon":-74.006}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/behrmann-projection", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"lat": 40.7128,
"lon": -74.006
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.behrmann_projection",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |