Mediana geometrica
La mediana geometrica è la posizione che minimizza la somma delle distanze in linea retta da tutti i punti forniti.
Esegui gratis nel browser
A differenza della media aritmetica, resiste all’influenza di un valore anomalo lontano; è quindi utile per scegliere un centro rappresentativo di strutture, osservazioni o coordinate piane. Questo calcolatore parte dal centroide e applica un raffinamento deterministico di Weiszfeld finché il centro si sposta meno della tolleranza indicata o raggiunge il limite di iterazioni. Restituisce il centro stimato, la distanza totale e i dati di convergenza, così Lei può valutare il risultato anziché accettare una coordinata priva di spiegazione.
Scelga la mediana geometrica quando conta la distanza
Un centroide bilancia i valori delle coordinate, ma non minimizza direttamente gli spostamenti. Un solo punto remoto può trascinare la media aritmetica lontano dalla zona densa dei dati. Il calcolatore della mediana geometrica cerca invece il punto con la minima somma delle distanze euclidee da tutte le osservazioni. La distinzione è importante quando il piano rappresenta magazzini, interventi di assistenza, rilevamenti di sensori, fermate di consegna o altri contesti in cui la distanza in linea retta è significativa. Inserisca ogni osservazione come oggetto con coordinate x e y finite. I punti ripetuti sono ammessi e valgono come osservazioni ripetute. Tutte le coordinate devono usare la stessa unità cartesiana. Non vengono interpretate come latitudine e longitudine sulla Terra curva: proietti prima i dati geografici in un sistema piano adeguato. Il risultato è un’approssimazione regolata da una tolleranza e da un limite di iterazioni espliciti, non una soluzione simbolica chiusa che in genere non esiste.
Comprenda il raffinamento di Weiszfeld e l’arresto
Il calcolo inizia dal centroide aritmetico e forma ripetutamente una media di tutti i punti ponderata con l’inverso della distanza. Le osservazioni vicine ricevono più peso in ogni passaggio, spostando la stima verso una posizione con distanza totale inferiore. Un passaggio di Weiszfeld modificato gestisce il caso importante in cui una stima coincide esattamente con un punto di ingresso: il risolutore verifica lì la condizione geometrica di ottimalità invece di dividere per zero. L’iterazione termina quando lo spostamento tra stime consecutive non supera la tolleranza richiesta. La risposta include converged, iterations e tolerance oltre al centro e a total_distance. converged vero indica che è riuscito il test sul movimento o quello esatto su un punto. false indica che il massimo di iterazioni è esaurito; Lei può ripetere il calcolo con un limite maggiore. Eviti una tolleranza molto inferiore alla precisione utile delle misure, perché l’aritmetica in virgola mobile non può aggiungere precisione assente nei dati originali.
Interpreti, verifichi e utilizzi il centro stimato
Legga center.x e center.y nello stesso sistema di coordinate e nelle stesse unità dei punti inviati. Il campo total_distance somma la distanza euclidea dal centro finale a ogni osservazione, consentendo di confrontare insiemi o verificare in modo indipendente l’obiettivo. Per decisioni operative, confronti il risultato con i vincoli reali: il centro matematico potrebbe trovarsi in un lago, fuori da una zona consentita o in un luogo senza accesso stradale. La mediana geometrica non vincolata è quindi un valido riferimento, non automaticamente un indirizzo utilizzabile. Se deve scegliere uno dei punti forniti, calcoli la somma delle distanze per i candidati idonei e usi questa stima per orientare la ricerca; il servizio non aggancia il risultato a un’osservazione. I risultati sono deterministici per identici input JSON, tolleranza e limite. Mantenga scale confrontabili sugli assi e archivi i campi di convergenza insieme alle coordinate.
Casi d'uso
Collocare un punto di servizio condiviso
Stimi una posizione piana centrale che minimizzi la distanza complessiva in linea retta da clienti o strutture.
Riassumere osservazioni raggruppate
Trovi un centro rappresentativo robusto, meno alterato da un’osservazione remota rispetto alla media delle coordinate.
Avviare una ricerca con vincoli
Usi il centro mediano non vincolato come riferimento per valutare siti ammessi o punti candidati vicini.
Domande frequenti
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002; il calcolatore nel browser può eseguire localmente la stessa logica deterministica.
La mediana geometrica coincide con il centroide?
No. Il centroide calcola la media delle coordinate, mentre la mediana geometrica minimizza la somma delle distanze euclidee.
Posso inviare latitudine e longitudine?
Il calcolo presuppone un piano cartesiano. Proietti correttamente le coordinate geografiche prima di prendere decisioni basate su distanze fisiche.
Come vengono trattati i punti ripetuti?
Ogni elemento dell’array è un’osservazione, quindi coordinate ripetute esercitano un’influenza proporzionalmente maggiore.
Che cosa significa converged uguale a false?
Il calcolo ha raggiunto max_iterations prima del criterio di arresto; aumenti il limite o riduca il rigore di tolerance, se opportuno.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"points": [
{
"x": 0,
"y": 0
},
{
"x": 4,
"y": 0
},
{
"x": 2,
"y": 3
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.median_center",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |