1. Convalida dell'input
Coordinate o valori di precisione non validi, correzioni precedenti all'inizio della misurazione, timestamp duplicati e correzioni con precisione orizzontale segnalata superiore a 25 m vengono rifiutati.
2. Controllo stazionario
Il movimento viene rilevato quando almeno due delle ultime tre velocità superano 1,2 m/s. Con almeno dieci correzioni vengono confrontati anche i centri dei primi e degli ultimi cinque. Limite: max(6 m; 1.5 × a_med).
3. Converti in metri
Le coordinate WGS84 vengono convertite in coordinate ECEF fissate sulla Terra e quindi in un piano locale est-nord (ENU). Le distanze e i pesi possono quindi essere calcolati correttamente in metri.
4. Centro iniziale robusto
Le mediane separate dell'est e del nord costituiscono la stima iniziale. Viene quindi calcolata la distanza radiale rᵢ da ogni punto a quel centro.
5. Rileva valori anomali
MapTools calcola MAD = median(|rᵢ − median(r)|). Limite anomalo: max(3 m; median(r) + 3 × 1.4826 × MAD).
6. Peso in base alla precisione
Per raggio riportato aᵢ, wᵢ = 1 / max(aᵢ; 1 m)². Il rapporto tra il peso base più forte e quello più debole è limitato a 4:1.
7. Stima di Huber
Il centro viene aggiornato cinque volte. All'interno del limite il fattore robusto è 1; all'esterno diventa c / r. Il limite è c = max(1.5 m; 1.5 × 1.4826 × MAD).
8. Ritorna a WGS84
Il centro ENU ponderato viene riconvertito tramite ECEF in latitudine e longitudine. Le altitudini disponibili utilizzano la loro mediana; i valori di qualità valutano solo la posizione orizzontale.