Metros por pixel no Web Mercator
Saiba quantos metros de terreno um pixel cobre num mapa Web Mercator: com zoom 12 no equador são 38,2185141426 m, metade a cada nível de zoom a mais e menos perto dos polos. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Nível de zoom
- 12
- Latitude em graus decimais
- 0
- Metros por pixel
- 38,2185141426
- Metros por tile
- 9.783,9396205
- Circunferência na latitude em m
- 40.075.016,6856
- Circunferência equatorial em m
- 40.075.016,6856
Servidores de tiles, SDKs móveis e notebooks de GIS precisam desse número para dimensionar buffers, desenhar barras de escala, escolher raios de agrupamento sensatos e converter distâncias na tela em distâncias geográficas sem passar por uma biblioteca completa de projeções. Zoom negativo e latitude fora do intervalo geográfico são rejeitados com um erro de validação claro, em vez de inventar uma resolução falsa.
Como os metros por pixel do Web Mercator são calculados
Começa-se pelo raio equatorial usado pelo Web Mercator e por quase todas as pilhas comerciais de tiles XYZ: R equivale a seis milhões trezentos e setenta e oito mil cento e trinta e sete metros. A circunferência equatorial completa é dois pi R.
Os tiles slippy-map têm duzentos e cinquenta e seis pixels de lado e, no zoom z, o mundo é coberto por dois elevado a z tiles ao longo de cada eixo, de modo que o equador é representado por duzentos e cinquenta e seis vezes dois elevado a z pixels de oeste para leste. A resolução do terreno no equador é, portanto, a circunferência dividida por essa contagem de pixels.
Longe do equador, os meridianos mantêm o mesmo comprimento na matemática da projeção, mas os círculos paralelos encolhem com o cosseno da latitude geodésica, então multiplica-se por cos(phi) medido em radianos. O zoom deve ser um inteiro não negativo dentro de um intervalo slippy prático; zoom negativo não faz sentido em uma pirâmide discreta e é rejeitado.
Os polos são permitidos e levam corretamente o cosseno para perto de zero, de modo que os metros por pixel colapsam, o que corresponde ao fato geométrico de que um pixel leste-oeste cobre uma distância de solo cada vez menor perto dos polos neste modelo.
Onde as calculadoras de metros por pixel aparecem no trabalho real
Equipes de produto com mapas precisam de barras de escala e textos do tipo “cerca de N metros nesta visualização” que continuem honestos quando os usuários navegam para o norte ou para o sul; fixar uma constante equatorial em latitudes altas engana motoristas e trabalhadores de campo. Pipelines de dados geoespaciais convertem tolerâncias em pixels vindas de visão computacional ou análise raster em distâncias do terreno antes de aplicar buffers às feições ou decidir se duas detecções são o mesmo objeto.
Pacotes offline para celular e algoritmos de agrupamento escolhem raios em metros que precisam corresponder a pixels de tile em um zoom alvo, sem importar uma pilha pesada de projeções em cada worker. Problemas de currículo e de entrevistas costumam pedir a fórmula de resolução do OSM; um único oráculo confiável que devolve metros por pixel junto com utilitários de circunferência acelera a correção e a preparação de demos.
Casos de uso
De tolerâncias em pixels a buffers do terreno
Transforme limites em pixels de visão computacional ou de raio de clique em metros para aplicar buffers às feições e remover duplicatas de detecções em um zoom de tile escolhido.
Raios de agrupamento e pacotes de tiles offline
Escolha raios de agrupamento e de busca em metros que correspondam a um zoom slippy alvo, sem enviar uma biblioteca completa de projeções para cada worker de borda.
Perguntas frequentes
O que acontece se o zoom for negativo?
Zoom negativo não é definido para pirâmides slippy-map; o zoom deve ser um inteiro não negativo (na prática, de 0 a 30).
Qual intervalo de latitude é aceito?
A latitude deve estar no intervalo fechado [-90, 90] graus. Valores fora desse intervalo são rejeitados como fora da faixa. Perto dos polos, cos(φ) leva os metros por pixel para perto de zero.
Por que o raio da Terra é 6378137 metros?
É o raio equatorial do WGS84 usado pelo Web Mercator (EPSG:3857). A constante clássica de ~156543.0339 m/px no zoom 0 sobre o equador pressupõe esse raio e tiles de 256 px.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
Quanto o resultado muda a cada nível de zoom?
Cada nível de zoom a mais divide os metros por pixel por dois. No equador, com zoom 0, um pixel cobre cerca de 156 543 metros; com zoom 12, cai para 38,2185141426 metros.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"zoom": 12,
"latitude": 0
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.meters_per_pixel",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A resolução do terreno no Web Mercator responde a uma pergunta prática de mapeamento: neste nível de zoom e nesta latitude, quantos metros do solo um pixel do mapa representa? A fórmula clássica multiplica a circunferência equatorial da esfera WGS84 usada pelo EPSG:3857 pelo cosseno da latitude e divide pelo número de pixels que cobrem o mundo naquele zoom: duzentos e cinquenta e seis vezes dois elevado ao nível de zoom. No equador e com zoom zero você recupera a conhecida constante de cerca de cento e cinquenta e seis mil quinhentos e quarenta e três metros por pixel; cada passo de zoom divide esse valor pela metade, e latitudes maiores o reduzem por cos(latitude). Esta capacidade devolve os metros por pixel junto com utilitários como metros por borda de tile e circunferência na latitude, para que você alimente a interface de escala, os limites de snap e os payloads da API a partir de um único caminho de parse determinístico.
Como os metros por pixel do Web Mercator são calculados
Juntando as peças, obtém-se que meters_per_pixel é igual a cos(phi) vezes dois pi R dividido por tile_size vezes dois elevado a z — ou, de forma equivalente, a constante de resolução inicial publicada vezes cos(phi) sobre dois elevado a z. O resultado é aritmética de ponto flutuante determinística: sem sementes aleatórias, sem carimbos de tempo, sem chamadas de rede e sem desvio de modelo, de modo que zoom e latitude idênticos sempre produzem JSON idêntico. A latitude deve estar no intervalo geográfico fechado de noventa negativo a noventa positivo graus; valores fora desse intervalo não são latitudes terrestres válidas e falham com invalid_input.
O que você envia e o que recebe de volta
Ambos os campos são obrigatórios. Envie dois números: o zoom como nível inteiro não negativo de slippy-map e a latitude como valor finito em graus decimais com o norte positivo. Campos ausentes, cadeias não numéricas, NaN e Infinity falham com invalid_input e não são cobrados. Zoom negativo falha com uma mensagem informando que o zoom deve ser não negativo; latitude fora do intervalo de noventa negativo a noventa positivo falha com uma mensagem out-of-range, para que os clientes corrijam falhas de GPS ou do geocodificador em vez de chutar. Em caso de sucesso, a resposta ecoa o zoom e a latitude limpos, o valor principal meters_per_pixel, meters_per_tile como esse valor vezes duzentos e cinquenta e seis, circumference_at_latitude_m para os cálculos da barra de escala, equatorial_circumference_m como referência, initial_resolution_m_per_px no zoom zero sobre o equador, earth_radius_m, tile_size_px, um rótulo de método e uma cadeia compacta com a fórmula. Verificações clássicas incluem zoom doze no equador para cerca de trinta e oito metros por pixel, zoom zero com latitude zero para a constante de resolução inicial completa e um zoom urbano de latitude média como doze perto de cinquenta e um graus, que resulta em um valor de metros por pixel visivelmente menor que no equador. O preço das chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde as calculadoras de metros por pixel aparecem no trabalho real
Como esta capacidade é um motor de parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação malsucedida não consome saldo. Se mais tarde você precisar de índices de tile X/Y a partir de lat/lon, decodificação de quadkey do Bing, distância de grande círculo ou pontos de destino ao longo de um rumo, trate-os como intenções de busca e páginas de destino separadas, em vez de sobrecarregar esta página de resolução do terreno — a intenção de SEO aqui é especificamente metros por pixel do Web Mercator a partir do zoom e da latitude.
Casos de integração
Barras de escala e rótulos de “metros nesta visualização”
Converta o zoom atual e a latitude do centro do mapa em metros por pixel para que as barras de escala e os selos de distância continuem precisos quando os usuários navegam em direção aos polos.
Perguntas técnicas
Qual fórmula esta calculadora de metros por pixel usa?
A resolução do terreno do Web Mercator: mpp = cos(φ) · 2πR / (tile_size · 2^z) com R = 6378137 m e tile_size = 256, seguindo as convenções de EPSG:3857 / OSM / Mapbox.