緯度経度を変換するミラー円筒図法計算ツール
ミラー円筒図法計算ツールは、1 組の緯度経度を球面上の平面座標 x、y に変換します。メルカトル図法の緯度式を変更しているため、北極と南極の高さは無限大へ伸びず、有限値に収まります。出力縮尺を決める半径を指定することも、既定値の単位球を使って正規化座標を得ることもできます。結果は常に決定的で、指定した最終精度でのみ丸められます。ブラウザーのほか、1 項目あたり $0.002 からの API でもご利用いただけます。
無料で実行
ミラー円筒図法の計算方法
ミラー円筒図法は、一般的な正規円筒図法と同じ基本構造を持ちます。経度が横方向の位置を決め、中央子午線では x がゼロ、赤道では y がゼロになります。特徴となる変更点は縦方向の式です。計算ツールは、まず緯度と経度を度からラジアンへ変換します。次に、x を球の半径と経度の積として求めます。y は、半径の 1.25 倍に、pi を 4 で割った値と緯度の 0.4 倍との和について接線を取り、その自然対数を掛けて求めます。メルカトル図法に似た対数処理の前に緯度を縮小することで、極付近の過度な縦方向の伸びを抑えます。地理極では接線に 90 度ではなく 81 度が渡されるため、結果は有限です。ただし、円筒図法であることに変わりはなく、正角図法でも正積図法でもありません。幾何学的性質を全地点で厳密に保つことより、認識しやすい世界地図の形と有限の高さを優先する用途に適しています。
入力値、縮尺、精度の指定
緯度は -90 度から 90 度、経度は -180 度から 180 度の範囲で指定してください。どちらも有限の数値である必要があります。数値に見える文字列は意図的に拒否されるため、上流工程の書式ミスが気付かれないまま計算を変えることはありません。半径は省略でき、既定値は 1 です。この場合、x と y は正規化された球面座標になります。メートル単位の投影値が必要な場合は、地球の平均半径をメートルで指定してください。別の球や独自の描画縮尺には、任意の正の半径を使用できます。本ツールは測地系、楕円体、偽東距、偽北距、中央子午線のオフセットを推定しません。経度 0 が常に中央子午線です。小数桁数の設定は、返される x と y を 0 桁から 12 桁で丸める処理だけを制御します。式は最終丸めの前に JavaScript の浮動小数点精度で計算され、追跡しやすいように元の入力値と選択した半径も出力されます。
結果の読み方と制約
x はグリニッジ子午線からの水平変位、y は赤道からの垂直変位としてお読みください。単位は半径の単位と完全に一致します。半径をキロメートルで指定すれば結果もキロメートル、メートルならメートルとなり、半径 1 では無次元の正規化値になります。正の x は東、負の x は西、正の y は北、負の y は南を表します。したがって原点は緯度 0、経度 0 です。緯度 90 度で y が有限になることは仕様どおりであり、通常の球面メルカトル図法との重要な違いです。座標が切り取られたわけではありません。ただし、有限であっても歪みがないわけではなく、高緯度ほど縮尺と面積の歪みは増えます。精密な土木設計や地籍用途の局所座標参照系を置き換えるものではありません。ミラー世界地図、教材での比較、可視化処理、再現可能な数式検証にご利用ください。逆変換、楕円体パラメーター、日付変更線での折り返し、EPSG 定義の変換が必要な場合は、専用の地理空間ライブラリーと組み合わせてください。
活用例
ミラー世界地図への点配置
独自の SVG、キャンバス、帳票グラフへマーカーを置く前に、地理座標を一貫した平面値へ変換できます。
円筒図法の比較
ミラー座標とメルカトル図法や正積図法の結果を並べ、極へ近づくほど縦間隔がどう変わるかを示せます。
地図実装の検証
データ処理、アプリケーション、授業課題の投影コードを試験する際、決定的で丸め済みの出力を基準値として使えます。
よくある質問
この図法で極が有限になるのはなぜですか?
ミラー図法はメルカトル図法に似た式の中で緯度を 0.8 倍します。そのため極の接線は特異点の 90 度ではなく 81 度で評価されます。
x と y はどの単位で返されますか?
半径と同じ単位です。既定の半径 1 では正規化座標となり、半径をメートルで指定すると x と y もメートルになります。
ミラー円筒図法は正積図法または正角図法ですか?
いいえ。メルカトル図法の外観と無限の極高を緩和しますが、面積も局所角度も厳密には保存しません。
この計算ツールは地球楕円体モデルを使いますか?
いいえ。指定された正の半径に球面ミラー式を適用し、測地系や楕円体の変換は行いません。
API による投影の料金はいくらですか?
基本料金は 1 項目あたり $0.002 です。ブラウザー計算ツールでも同じ決定的な式を直接実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/miller-project \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude":40.7128,"longitude":-74.006}'const res = await fetch("https://api.kit.forhosting.com/geo/miller-project", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"latitude": 40.7128,
"longitude": -74.006
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/miller-project",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"latitude": 40.7128,
"longitude": -74.006
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/miller-project", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"latitude":40.7128,"longitude":-74.006}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"latitude":40.7128,"longitude":-74.006}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/miller-project", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"latitude": 40.7128,
"longitude": -74.006
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.miller_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |