Calculadora de mediana geométrica
A mediana geométrica é o local que minimiza a soma das distâncias em linha reta até todos os pontos informados.
Executar grátis
Ao contrário da média aritmética, ela resiste à influência de um valor discrepante distante, o que a torna útil para escolher um centro representativo de instalações, observações ou coordenadas planas. Esta calculadora começa no centroide e aplica um refinamento determinístico de Weiszfeld até que o centro se mova menos que a tolerância indicada ou alcance o limite de iterações. Ela informa o centro estimado, a distância total e os dados de convergência para que você possa avaliar o resultado.
Escolha a mediana geométrica quando a distância for o objetivo
Um centroide equilibra os valores das coordenadas, mas não minimiza diretamente os deslocamentos. Um único ponto remoto pode puxar a média aritmética para longe da região densa do conjunto. A calculadora de mediana geométrica procura o ponto com a menor soma de distâncias euclidianas até todas as observações. Essa diferença importa quando o plano representa armazéns, chamados de serviço, detecções de sensores, paradas de entrega ou qualquer situação em que a distância em linha reta tenha significado. Informe cada observação como um objeto com coordenadas x e y finitas. Pontos repetidos são permitidos e funcionam como observações repetidas. Todas as coordenadas devem usar a mesma unidade cartesiana. Elas não são interpretadas como latitude e longitude sobre a superfície curva da Terra; antes, projete dados geográficos em um sistema plano adequado. O resultado é uma aproximação controlada por tolerância e limite de iterações explícitos, pois em geral não existe uma solução simbólica fechada.
Entenda o refinamento de Weiszfeld e o resultado da parada
O cálculo começa no centroide aritmético e cria repetidamente uma média ponderada pelo inverso da distância de todos os pontos. Em cada etapa, observações próximas recebem peso maior, levando a estimativa para um local de menor distância total. Uma etapa de Weiszfeld modificada trata o caso importante em que a estimativa coincide exatamente com um ponto de entrada: o solucionador verifica a condição geométrica de otimalidade em vez de dividir por zero. A iteração termina quando o movimento entre estimativas consecutivas não supera a tolerância solicitada. A resposta inclui converged, iterations e tolerance, além do centro e de total_distance. converged verdadeiro significa que o teste de movimento ou a condição exata em um ponto foi atendida. false significa que o máximo de iterações acabou; você pode executar novamente com um limite maior. Uma tolerância menor pode exigir mais trabalho. Evite uma tolerância muito inferior à precisão útil das medições, pois a aritmética de ponto flutuante não cria exatidão que os dados de origem não possuem.
Interprete, confira e aplique o centro estimado
Leia center.x e center.y no mesmo sistema de coordenadas e nas mesmas unidades dos pontos enviados. O campo total_distance soma a distância euclidiana do centro final até cada observação, permitindo comparar conjuntos ou conferir o objetivo de forma independente. Em decisões operacionais, teste o resultado contra restrições reais: o centro matemático pode cair em um lago, fora de uma região autorizada ou em um local sem acesso rodoviário. Portanto, a mediana geométrica sem restrições é uma referência valiosa, não um endereço automaticamente viável. Se você precisar selecionar um dos pontos informados, calcule a soma das distâncias dos candidatos permitidos e use esta estimativa para orientar a busca; este serviço não ajusta o resultado a uma observação. Os resultados são determinísticos para a mesma entrada JSON, tolerância e limite, sem inicialização aleatória ou rede. Mantenha as coordenadas em escalas comparáveis. Ao registrar resultados, guarde também os campos de convergência para diferenciar um refinamento concluído de uma estimativa interrompida pelo limite computacional configurado.
Casos de uso
Posicionar um ponto de atendimento compartilhado
Estime um local plano central que minimize a distância total em linha reta até clientes ou instalações.
Resumir observações agrupadas
Encontre um centro representativo robusto, menos distorcido por uma observação remota do que a média das coordenadas.
Iniciar uma busca com restrições
Use o centro mediano sem restrições como referência ao avaliar locais permitidos ou pontos candidatos próximos.
Perguntas frequentes
Quanto custa uma solicitação da API?
Cada solicitação da API custa US$ 0,002; a calculadora do navegador pode executar localmente a mesma lógica determinística.
A mediana geométrica é igual ao centroide?
Não. O centroide calcula a média das coordenadas, enquanto a mediana geométrica minimiza a soma das distâncias euclidianas.
Posso informar latitude e longitude?
O cálculo considera um plano cartesiano. Projete corretamente as coordenadas geográficas antes de tomar decisões com base em distâncias físicas.
O que acontece com pontos repetidos?
Cada item do vetor é uma observação; portanto, coordenadas repetidas recebem influência proporcionalmente maior.
O que significa converged igual a false?
O cálculo atingiu max_iterations antes do critério de parada; aumente o limite ou reduza a exigência de tolerance, se for adequado.
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/median-center \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"points":[{"x":0,"y":0},{"x":4,"y":0},{"x":2,"y":3}]}'const res = await fetch("https://api.kit.forhosting.com/geo/median-center", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 2,
"y": 3
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/median-center",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 2,
"y": 3
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/median-center", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"points":[{"x":0,"y":0},{"x":4,"y":0},{"x":2,"y":3}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"points":[{"x":0,"y":0},{"x":4,"y":0},{"x":2,"y":3}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/median-center", 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
{
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 2,
"y": 3
}
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.median_center",
"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. |