Web Mercator のメートル/ピクセル
Web Mercator地図の1ピクセルが地上の何メートル分かが分かります。赤道でズーム12なら38.2185141426 mで、ズームを1段上げるごとに半分になり、極に近いほど小さくなります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- ズームレベル
- 12
- 十進度の緯度
- 0
- メートル/ピクセル
- 38.2185141426
- メートル/タイル
- 9,783.9396205
- その緯度での周長(m)
- 40,075,016.6856
- 赤道周長(m)
- 40,075,016.6856
Web Mercator の地上解像度は、地図作成の実務的な問いに答えます。このズームレベルと緯度において、地図の1ピクセルは地上の何メートルを表すのか、という問いです。本格的な投影ライブラリを介さずに済むからです。古典的な式は、EPSG:3857 が使用する WGS84 球体の赤道周長に緯度の余弦を掛け、そのズームで世界を横断するピクセル数、つまり 256 かける 2 のズームレベル乗で割るものです。赤道上のズーム 0 では、よく知られた約 156543 メートル/ピクセルという定数が得られます。ズームが1段進むごとにこの値は半分になり、高緯度では cos(緯度) の分だけ小さくなります。負のズームや地理的範囲外の緯度は、偽の解像度をでっち上げるのではなく、明確なバリデーションエラーで拒否されます。
Web Mercator のメートル/ピクセルの計算方法
出発点は、Web Mercator とほぼすべての商用 XYZ タイルスタックが使用する赤道半径です。R は 6378137 メートルです。赤道上の全周長は 2πR です。
スリッピーマップのタイルは一辺 256 ピクセルで、ズーム z では各軸に沿って世界が 2 の z 乗枚のタイルで覆われるため、赤道は西から東へ 256 かける 2 の z 乗ピクセルで表現されます。したがって赤道上の地上解像度は、周長をそのピクセル数で割ったものです。
赤道を離れると、投影計算の上で子午線の長さは変わりませんが、緯線の円は測地緯度の余弦とともに縮小するため、ラジアンで測った cos(phi) を掛けます。結果は決定的な浮動小数点演算です。ズームは実用的なスリッピー範囲内の非負の整数でなければならず、負のズームは離散ピラミッドでは意味を持たないため拒否されます。
極は許可されており、余弦を正しくゼロへと近づけるため、メートル/ピクセルは収束します。これは、このモデルでは極の近くで東西のピクセルが覆う地上距離が消えていくという幾何学的事実と一致しています。
送信する内容と返ってくる内容
送信するのは2つの数値です。非負の整数であるスリッピーマップのズームレベルと、北を正とする有限の十進度数の緯度です。負のズームは、ズームは非負でなければならないというメッセージで失敗します。
マイナス 90 からプラス 90 の範囲外の緯度は out-of-range のメッセージで失敗するため、クライアントは推測する代わりに GPS やジオコーダーの不具合を修正できます。
代表的な確認例としては、赤道上のズーム 12 で約 38 メートル/ピクセル、緯度 0 のズーム 0 で完全な初期解像度定数、北緯 51 度付近でのズーム 12 のような中緯度都市のズームで、赤道よりも目に見えて小さいメートル/ピクセル値が得られることが挙げられます。バリデーション失敗ではプリペイド残高は消費されません。
メートル/ピクセル計算機が実務で登場する場面
地図を扱うプロダクトチームには、ユーザーが北や南へパンしても誠実であり続ける縮尺バーや「この表示範囲は約 N メートル」という文言が必要です。高緯度で赤道上の定数をハードコードすると、ドライバーや現場作業者を誤解させます。
地理空間データパイプラインは、コンピュータビジョンやラスター解析からのピクセル許容誤差を、地物にバッファを適用したり、2つの検出が同一オブジェクトかどうかを判断したりする前に、地上距離へ変換します。
モバイル向けオフラインパックやクラスタアルゴリズムは、重い投影スタックをすべてのワーカーに取り込まずに、目標ズームでのタイルピクセルに対応するメートル単位の半径を選択します。カリキュラムや面接の問題では OSM の解像度式がよく問われます。メートル/ピクセルと周長ヘルパーを返す信頼できる単一のオラクルがあれば、採点やデモ準備が速くなります。
後で緯度経度からタイルの X/Y インデックス、Bing の quadkey デコード、大圏距離、方位に沿った目的地ポイントなどが必要になった場合は、この地上解像度ページに過剰に詰め込むのではなく、それぞれ別の検索インテントとランディングページとして扱ってください。
ここでの SEO インテントは、あくまでズームと緯度から求める Web Mercator のメートル/ピクセルです。
活用例
縮尺バーと「表示範囲のメートル数」ラベル
現在のズームと地図中心の緯度をメートル/ピクセルに変換し、ユーザーが極に向かってパンしても縮尺バーと距離チップが正確であり続けるようにします。
ピクセル許容誤差から地上バッファへ
コンピュータビジョンやクリック半径のピクセル閾値をメートルに変換し、選択したタイルズームで地物にバッファを適用し、検出の重複を除去します。
クラスタ半径とオフラインタイルパック
完全な投影ライブラリをすべてのエッジワーカーに配布することなく、目標のスリッピーズームに対応するメートル単位のクラスタ半径と検索半径を選択します。
よくある質問
ズームが負の場合はどうなりますか?
負のズームはスリッピーマップのピラミッドでは定義されていません。ズームは非負の整数(実用上は 0〜30)でなければなりません。
受け付ける緯度の範囲は?
緯度は [-90, 90] 度の閉区間内である必要があります。範囲外の値は out-of-range として拒否されます。極の近くでは cos(φ) によりメートル/ピクセルはゼロに近づきます。
地球半径が 6378137 メートルなのはなぜですか?
これは Web Mercator(EPSG:3857)が使用する WGS84 の赤道半径です。赤道上のズーム 0 における古典的な ~156543.0339 m/px という定数は、この半径と 256 px タイルを前提としています。
料金はいくらですか?
ブラウザツールは無料で、ローカルで動作します。無効な入力は課金されません。
ズームを1段変えると結果はどれだけ変わりますか?
ズームを1段上げるたびに、1ピクセルあたりのメートル数は半分になります。赤道ではズーム0で約156,543メートル、ズーム12では38.2185141426メートルです。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/meters-per-pixel \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"zoom":12,"latitude":0}'const res = await fetch("https://api.kit.forhosting.com/geo/meters-per-pixel", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"zoom": 12,
"latitude": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/meters-per-pixel",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"zoom": 12,
"latitude": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/meters-per-pixel", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"zoom":12,"latitude":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"zoom":12,"latitude":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/meters-per-pixel", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"zoom": 12,
"latitude": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.meters_per_pixel",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
タイルサーバー、モバイル SDK、GIS ノートブックはすべて、バッファのサイズ決定、縮尺バーの描画、適切なクラスタ半径の選択、画面上の距離から地理的距離への変換のために、その数値を必要とします。この機能は、メートル/ピクセルに加えて、タイル辺あたりのメートル数やその緯度での周長といったヘルパーも返すため、縮尺 UI、スナップ閾値、API ペイロードを一つの決定的な parse 経路から組み立てられます。
Web Mercator のメートル/ピクセルの計算方法
これらを組み合わせると、meters_per_pixel は cos(phi) かける 2πR を tile_size かける 2 の z 乗で割ったもの、言い換えれば公開されている初期解像度定数かける cos(phi) を 2 の z 乗で割ったものになります。乱数シードも、時刻タイムスタンプも、ネットワーク呼び出しも、モデルのドリフトもないため、同じズームと緯度からは常に同じ JSON が生成されます。緯度はマイナス 90 度からプラス 90 度の閉じた地理的区間内にある必要があり、その範囲外の値は有効な地球上の緯度ではないため invalid_input で失敗します。
送信する内容と返ってくる内容
両方のフィールドが必須です。フィールドの欠落、非数値の文字列、NaN、Infinity は invalid_input で失敗し、課金されません。成功時のレスポンスには、クリーンアップされたズームと緯度、主値の meters_per_pixel、その値に 256 を掛けた meters_per_tile、縮尺バー計算用の circumference_at_latitude_m、参照用の equatorial_circumference_m、赤道上のズーム 0 における initial_resolution_m_per_px、earth_radius_m、tile_size_px、メソッドのラベル、コンパクトな数式文字列が含まれます。地図 UX の設計時には無料のブラウザフォームで簡単な健全性チェックを行い、その後、フィクスチャを一括生成したり SDK ヘルパーを検証したりする際には、スクリプトから同一のコントラクトを呼び出してください。成功した API 呼び出しの料金は、公開されている基本価格の1件あたり $0.002 です。
メートル/ピクセル計算機が実務で登場する場面
この機能は純粋な parse エンジンであるため、API 料金は公開基本価格の成功1件あたり $0.002 で、バリデーション失敗では残高を消費しません。
技術的な質問
このメートル/ピクセル計算機はどの式を使いますか?
Web Mercator の地上解像度です。mpp = cos(φ) · 2πR / (tile_size · 2^z)、R = 6378137 m、tile_size = 256 で、EPSG:3857 / OSM / Mapbox の慣例に従っています。