MelisWeb.eu
for your web presency

Andrea Melis
Andrea Melis
 
 

Oggi

Post precedenti
· Operazione “SharmLunaRossa.com” su Google
· TrattoriaLaRola.com - Eccolo su Google!
· FCKeditor 2.5 per WebOrama
· RiGooglizzazione - Sottodomini come cartelle
· GreyBox: popup in stile web 2.0
· Come spostare le proprie pagine senza perderne tra...
· Project Gatineau: arriva Microsoft Website Analyti...
· Microsoft rilascia la nuova versione SyncToy v2.0
· Disegno di Legge sull'Editoria: esclusi i blog
· Melis.Chat - Source code

Archivi
· ottobre 2006
· novembre 2006
· aprile 2007
· giugno 2007
· ottobre 2007
· novembre 2007
· dicembre 2007
· gennaio 2008
· novembre 2009

Come si calcola la distanta tra 2 punti espressi in latitudine e longitudine

venerdì 22 giugno 2007

Su un'altro blog ho trovato questa soluzione:

Se rapresentiamo il comune A con la coppia (a1,b1) in cui a1 è la longitudine e b1 è la latitudine ed il comune B con la coppia (a2,b2) (con significato analogo di a2 e b2), la distanza tra A e B è data dalla formula:

d(A,B) = arccos(cos(a1-a2) * cos(b1) * cos(b2) + sin(b1) * sin(b2))

che fornisce la distanza in radianti, o raggi terrestri.

A questo punto basta moltiplicare d(A,B) x 6360 per ottenere la distanza in km.

Ho anche trovato altre formule. Io mi sono creato il mio metodo in C#:

//http://it.wikipedia.org/wiki/Raggio_terrestre
//Raggio in metri
const double RAGGIO_TERRESTRE_M = 6372795.477598;

public static Double Distanza(double longitudine1, double latitudine1, double longitudine2, double latitudine2)
        {
            double result = (System.Math.Sin((latitudine1 - latitudine2) / 2)) * (System.Math.Sin((latitudine1 - latitudine2) / 2));
            result += System.Math.Cos(latitudine1) * System.Math.Cos(latitudine2) * (System.Math.Sin((longitudine1 - longitudine2) / 2)) * (System.Math.Sin((longitudine1 - longitudine2) / 2));
            result = 2 * System.Math.Asin(System.Math.Sqrt(result));

            return result * RAGGIO_TERRESTRE_M;
        }

Sembra che i conti tornino... Le due formule sono decisamente diverse:

Anche i calcoli sono decisamente differenti. Se, per esempio, prendiamo due punti A(41.96255363, 12.06951141) e B(41.86222614, 12.45510578) li trasformiamo in radianti Ar(0.732384723, 0.210652713) e Br(0.730633678, 0.217382605) i risultati sono i seguenti:

Chi ha ragione? Faccio la media dei due valori? 38Km e non se parli più!

Etichette:

Powered by Blogger

Iscriviti a
Post [Atom]

HomeChi SiamoProdottiSoluzioniContatti
Copyright© Melis Web 2006-2008