Calculadora de mediana geométrica
La mediana geométrica es la ubicación que minimiza la suma de las distancias en línea recta a todos los puntos suministrados.
Ejecutar — gratis
A diferencia de la media aritmética, resiste la influencia de un valor atípico distante, por lo que resulta útil para elegir un centro representativo de instalaciones, observaciones o coordenadas planas. Esta calculadora parte del centroide y aplica un refinamiento determinista de Weiszfeld hasta que el centro se desplaza menos que la tolerancia indicada o se alcanza el límite de iteraciones. Devuelve el centro estimado, la distancia total y datos de convergencia para que usted pueda evaluar el resultado.
Elija la mediana geométrica cuando la distancia sea el objetivo
Un centroide equilibra los valores de las coordenadas, pero no minimiza directamente los desplazamientos. Un solo punto remoto puede arrastrar la media aritmética lejos de la zona densa del conjunto. La calculadora de mediana geométrica busca, en cambio, el punto cuya suma de distancias euclidianas a todas las observaciones sea menor. Esta diferencia importa cuando el plano representa almacenes, avisos de servicio, detecciones de sensores, paradas de reparto u otros casos donde la distancia recta tiene sentido. Introduzca cada observación como un objeto con coordenadas x e y finitas. Los puntos repetidos están permitidos y cuentan como observaciones repetidas. Todas las coordenadas deben usar la misma unidad cartesiana. No se interpretan como latitud y longitud sobre la Tierra curva; proyecte antes los datos geográficos a un sistema plano adecuado. El resultado es una aproximación controlada por una tolerancia y un máximo de iteraciones explícitos.
Comprenda el refinamiento de Weiszfeld y el criterio de parada
El cálculo comienza en el centroide aritmético y forma repetidamente una media ponderada por el inverso de la distancia a todos los puntos. En cada paso, las observaciones cercanas reciben más peso y la estimación avanza hacia una ubicación con menor distancia total. Una versión modificada del paso de Weiszfeld trata el caso importante en que la estimación coincide exactamente con un punto de entrada: comprueba allí la condición geométrica de optimalidad en vez de dividir por cero. La iteración termina cuando el desplazamiento entre estimaciones consecutivas no supera la tolerancia solicitada. La respuesta incluye converged, iterations y tolerance junto con el centro y total_distance. Un valor verdadero de converged indica que se cumplió la prueba de movimiento o la condición exacta en un punto. Un valor falso indica que se agotó el máximo de iteraciones; puede repetir el cálculo con un límite superior. No pida una tolerancia mucho menor que la precisión útil de sus mediciones, pues la aritmética de coma flotante no puede crear exactitud ausente en los datos originales.
Interprete, verifique y aplique el centro estimado
Lea center.x y center.y en el mismo sistema de coordenadas y las mismas unidades que los puntos enviados. El campo total_distance suma la distancia euclidiana desde el centro final hasta cada observación, lo que permite comparar conjuntos o verificar el objetivo de forma independiente. Para decisiones operativas, contraste el resultado con restricciones reales: el centro matemático podría caer en un lago, fuera de una zona permitida o en un lugar sin acceso vial. Por tanto, la mediana geométrica sin restricciones es una referencia sólida, no una dirección automáticamente utilizable. Si debe elegir uno de los puntos suministrados, calcule la suma de distancias para los candidatos válidos y use esta estimación para orientar la búsqueda; el servicio no ajusta el resultado a una observación. Los resultados son deterministas para la misma entrada JSON, tolerancia y límite. Mantenga escalas comparables en ambos ejes. Al archivar resultados, conserve también los campos de convergencia para distinguir un refinamiento finalizado de otro detenido por su límite computacional.
Qué puede hacer con ella
Ubicar un punto de servicio compartido
Estime una ubicación plana central que minimice la distancia recta agregada a clientes o instalaciones.
Resumir observaciones agrupadas
Obtenga un centro representativo robusto, menos alterado por observaciones remotas que la media de coordenadas.
Iniciar una búsqueda con restricciones
Use el centro mediano sin restricciones como referencia para evaluar lugares válidos o puntos candidatos cercanos.
Preguntas frecuentes
¿Cuánto cuesta una solicitud de la API?
Cada solicitud de la API cuesta $0.002; la calculadora del navegador puede ejecutar localmente la misma lógica determinista.
¿La mediana geométrica equivale al centroide?
No. El centroide promedia coordenadas, mientras que la mediana geométrica minimiza la suma de distancias euclidianas.
¿Puedo enviar latitud y longitud?
El cálculo supone un plano cartesiano. Proyecte debidamente las coordenadas geográficas antes de tomar decisiones basadas en distancias físicas.
¿Qué ocurre con los puntos repetidos?
Cada elemento del arreglo es una observación, por lo que las coordenadas repetidas adquieren una influencia proporcionalmente mayor.
¿Qué significa que converged sea false?
El cálculo alcanzó max_iterations antes de cumplir la prueba de parada; aumente el límite o reduzca la exigencia de tolerance si corresponde.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 2,
"y": 3
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.median_center",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |