ステレオ投影計算機—緯度経度をX/Y座標へ変換
このステレオ投影計算機は、1地点の緯度・経度を、指定した中心の周囲にある平面座標X/Yへ変換します。球面の方位ステレオ投影式を用いるため局所的な角度が保たれ、Xは東向き、Yは北向きになります。球の半径によって出力単位を指定でき、既定の平均地球半径ではメートルになります。計算は決定論的で、ネットワークを利用しません。有限の投影像を持たない唯一の対蹠点はエラーになります。ブラウザーでは無料で利用でき、同じ計算をAPIから実行する場合は、成功した1リクエストにつき$0.002です。
無料で実行
中心付きステレオ投影で計算される内容
ステレオ投影は、局所的な角度を保ちながら球面上の点を平面へ写す方法です。この計算機では斜軸の球面式を使うため、接点を極や赤道に限定せず、任意の緯度・経度に設定できます。緯度と経度は投影する地点を表し、中心緯度と中心経度は平面の原点を定めます。中心そのものは必ずXが0、Yが0になります。中心において正のXは東、正のYは北を向くため、描画や比較に使いやすい局所座標系が得られます。中心からの角距離が増すほど縮尺係数も増えます。近くの図形では角度が保たれますが、球の反対側へ近づくにつれて距離と面積は大きく拡大します。正確な対蹠点は無限遠に写るので受け付けません。結果には全入力座標、半径、精度、投影名、軸方向も含まれ、後続処理で方式を推測する必要がありません。これは球面計算であり、楕円体上の測地系変換やEPSG座標参照系の検索ではありません。偽東距、偽北距、グリッドシフト、公的な縮尺係数も適用しません。これらが必要な場合は、完全に定義されたCRS処理をご利用ください。
中心・半径・精度の選び方
4つの角度はすべて十進度で入力してください。地点と中心の緯度は-90から90、経度は-180から180の範囲で指定します。縮尺のひずみは中心で最小になり、離れるほど連続的に増えるため、表示対象の地域に近い中心を選ぶことが重要です。都市図、測量スケッチ、地域可視化では、観測点群の中央付近を中心にすると扱いやすい座標になります。半径は単位と全体の縮尺を決めます。既定値の6,371,008.8はIUGGの平均地球半径をメートルで表した値なので、XとYもメートルです。半径をキロメートルで指定すれば結果はキロメートルになり、1を指定すれば単位球上の無次元座標になります。同じ平面で扱う全地点には、同じ中心と半径を使用してください。精度は出力の丸めだけを制御し、内部の三角関数計算には影響しません。小数点以下0桁から12桁まで指定でき、既定値は6桁です。処理では度をラジアンへ変換し、標準の方位投影分母から東向きXと北向きYを求めます。誤ったデータや入れ替わった項目を隠さないよう、範囲外の経度を自動折り返ししたり、緯度を黙って切り詰めたりはしません。
結果の読み方と投影の限界
複数のX/Y座標を同じ平面上で使う場合は、すべての元地点で中心と半径を共通にしてください。投影位置どうしの差は局所的な図や近似的な平面解析に便利ですが、その直線距離は一般に地球上の測地線距離とは一致しません。ステレオ投影は正角であり、局所的な角度を保ちますが、全域の長さや面積は保ちません。そのため、方向図、極域図、教材用地図、局所描画、角度の忠実さが重要な変換に向いています。一方、ひずみの検討なしに地域面積を比較したり長距離経路を測ったりする用途には適しません。地点が中心の対蹠点へ近づくと、分母は0へ、縮尺は無限大へ近づき、わずかな地理座標の変化が平面上の巨大な移動になります。計算機は対蹠点の特異点を無効入力として拒否します。その近くの非常に大きな有限座標は数学的には正しくても、表示には不便です。その場合は対象地域に合わせて中心を変更してください。経度差は正弦と余弦で扱うため、入力範囲内で日付変更線をまたいでも特別な分岐は不要です。極では異なる経度が同じ物理地点を示しますが、浮動小数点による微小な向きの差が出る場合があります。ブラウザーでは無料で利用でき、自動処理の成功リクエストは1件あたり$0.002で、座標は保存されません。
活用例
局所的な正角地図
面積の等しさより角度や方向が重要な場合に、地域の中心を指定して地理観測点を投影します。
極座標図と天文図
極域図、天球の演習、幾何学的な実演に使う球面上の点から、中心付き平面座標を作成します。
決定論的なテストデータ
地図、可視化、座標処理ソフトウェアの単体テスト向けに、安定したX/Y値を生成します。
よくある質問
ステレオ投影計算機の料金はいくらですか?
ブラウザーでの計算は無料です。成功したAPIリクエストは$0.002で、無効な入力は結果を返さず拒否されます。
XとYの単位は何ですか?
半径と同じ単位です。既定の半径はメートル単位の平均地球半径なので、既定のXとYもメートルになります。
対蹠点を投影できないのはなぜですか?
ステレオ投影では中心の反対側の点が無限遠へ写ります。そこで式の分母が0になるため、有限のXとYは存在しません。
楕円体の地球モデルを使用しますか?
いいえ。半径を変更できる球面の厳密なステレオ投影を使い、測地系変換やEPSG変換は行いません。
距離や面積は保存されますか?
いいえ。局所的な角度は保たれますが、中心からの角距離が増すほど縮尺と面積のひずみも増えます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/stereographic-project \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude":51.5074,"longitude":-0.1278,"center_latitude":40.7128,"center_longitude":-74.006}'const res = await fetch("https://api.kit.forhosting.com/geo/stereographic-project", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"latitude": 51.5074,
"longitude": -0.1278,
"center_latitude": 40.7128,
"center_longitude": -74.006
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/stereographic-project",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"latitude": 51.5074,
"longitude": -0.1278,
"center_latitude": 40.7128,
"center_longitude": -74.006
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/stereographic-project", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"latitude":51.5074,"longitude":-0.1278,"center_latitude":40.7128,"center_longitude":-74.006}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"latitude":51.5074,"longitude":-0.1278,"center_latitude":40.7128,"center_longitude":-74.006}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/stereographic-project", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"latitude": 51.5074,
"longitude": -0.1278,
"center_latitude": 40.7128,
"center_longitude": -74.006
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.stereographic_project",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |