Calculadora da projeção cilíndrica de Miller
A calculadora da projeção cilíndrica de Miller converte uma coordenada de latitude e longitude em valores planos x e y sobre uma esfera.
Executar grátis
Ela modifica a fórmula de latitude de Mercator para que os polos norte e sul permaneçam em uma altura finita, em vez de se estenderem ao infinito. Você pode escolher um raio para controlar a escala da saída ou manter a esfera unitária padrão para obter coordenadas normalizadas. Os resultados são determinísticos, arredondados apenas na precisão final solicitada e disponíveis no navegador ou pela API a partir de US$ 0,002 por item.
Como funciona a projeção cilíndrica de Miller
A projeção cilíndrica de Miller parte da geometria conhecida de um mapa cilíndrico normal: a longitude controla a posição horizontal, o meridiano central corresponde a x igual a zero e o equador corresponde a y igual a zero. A alteração que a caracteriza está na fórmula vertical. Primeiro, a calculadora converte latitude e longitude de graus para radianos. Em seguida, calcula x como o raio da esfera multiplicado pela longitude, enquanto y é cinco quartos do raio multiplicados pelo logaritmo natural da tangente de pi sobre quatro mais dois quintos da latitude. Escalar a latitude antes de aplicar o logaritmo semelhante ao de Mercator reduz a expansão vertical extrema. Em um polo geográfico, a tangente recebe um ângulo de oitenta e um graus em vez de noventa, portanto o resultado continua finito. A projeção permanece cilíndrica e não é conforme nem equivalente. Essa escolha é útil em layouts de mapas-múndi nos quais uma forma reconhecível e uma altura limitada importam mais do que preservar exatamente uma propriedade geométrica em todos os lugares.
Escolha entradas, escala e precisão
Informe uma latitude entre menos noventa e noventa graus e uma longitude entre menos cento e oitenta e cento e oitenta graus. Ambos os valores devem ser números finitos; textos que parecem números são rejeitados de propósito para impedir que um erro de formatação anterior altere silenciosamente o cálculo. O raio é opcional e tem valor padrão igual a um. Com esse padrão, x e y são coordenadas esféricas normalizadas. Defina o raio médio da Terra em metros quando precisar de valores projetados em metros, ou use outro raio positivo para trabalhar com uma esfera diferente ou uma escala de desenho personalizada. A calculadora não deduz datum, elipsoide, falso leste, falso norte nem deslocamento do meridiano central. A longitude zero é sempre o meridiano central. A opção de casas decimais controla somente o arredondamento dos valores x e y retornados, de zero a doze casas. As fórmulas usam a precisão de ponto flutuante do JavaScript antes desse arredondamento final, e os valores originais e o raio escolhido são repetidos na saída para permitir rastreabilidade.
Interprete o resultado e conheça os limites
Interprete x como o deslocamento horizontal a partir do meridiano de Greenwich e y como o deslocamento vertical a partir do equador. A unidade é exatamente a do raio: um raio em quilômetros gera quilômetros, um raio em metros gera metros e um raio igual a um produz valores normalizados sem dimensão. Um x positivo fica a leste e um x negativo a oeste; um y positivo fica ao norte e um y negativo ao sul. Assim, a origem representa latitude zero e longitude zero. Um y finito em noventa graus é esperado e constitui uma diferença essencial em relação à projeção esférica comum de Mercator, não um indício de corte da coordenada. Ainda assim, finito não significa sem distorção. As distorções de escala e área continuam aumentando em latitudes elevadas, e a saída não substitui diretamente um sistema de referência local preciso para engenharia ou cadastro. Use-a em mapas-múndi de Miller, comparações educativas, fluxos de visualização e verificações reproduzíveis de fórmulas. Se o processo exigir conversão inversa, parâmetros elipsoidais, ajuste do antimeridiano ou transformação definida por EPSG, combine o resultado com uma biblioteca geoespacial apropriada.
Casos de uso
Posicione um ponto em um mapa-múndi de Miller
Converta uma coordenada geográfica em valores planos consistentes antes de posicionar um marcador em SVG, canvas ou gráfico personalizado de relatório.
Compare projeções cilíndricas
Calcule uma coordenada de Miller ao lado de resultados de Mercator ou de área equivalente para demonstrar como o espaçamento vertical muda perto dos polos.
Valide uma implementação cartográfica
Use a saída determinística e arredondada como referência ao testar código de projeção em um fluxo de dados, aplicativo ou exercício didático.
Perguntas frequentes
Por que os polos são finitos nesta projeção?
Miller multiplica a latitude por 0.8 dentro de uma fórmula semelhante à de Mercator, por isso um polo é avaliado a 81 graus na tangente, e não no ângulo singular de 90 graus.
Em quais unidades x e y são retornados?
Eles usam a mesma unidade do raio. O raio padrão igual a um produz coordenadas normalizadas; um raio em metros produz x e y em metros.
A projeção cilíndrica de Miller é equivalente ou conforme?
Não. Ela modera a aparência e a altura polar ilimitada de Mercator, mas não preserva exatamente áreas nem ângulos locais.
Esta calculadora usa um modelo elipsoidal da Terra?
Não. Ela aplica a fórmula esférica de Miller ao raio positivo informado por você e não realiza transformações de datum ou elipsoide.
Quanto custa uma projeção pela API?
O preço base é US$ 0,002 por item. A calculadora no navegador pode executar diretamente a mesma fórmula determinística.
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/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)Exemplo de requisição
{
"latitude": 40.7128,
"longitude": -74.006
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.miller_project",
"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. |