preload
[windows 7] Installare applicazioni su Windows 7 con utenti amministratori di dominio [trend micro] Impossibile accedere alla Security Dashboard di Worry Free Business Security
Mar 05

Rappresentando il punto A con la coppia (a1,b1) in cui a1 è la longitudine e b1 è la latitudine ed punto B con la coppia (a2,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.
I valori di latitudine e longitudine che solitamente vengono ricavati dai servizi di localizzazione (tipo Google Maps) sono espressi in gradi. Questi valori devono essere convertiti in radianti. Il rapporto tra gradi e radianti è ricavabile assumendo che l’angolo giro (360°) è 2 π rad, quindi 1°=π/180. Per questo, se si vuole utilizzare le coordinate espresse in gradi, queste vanno moltiplicate per π/180.

A questo punto basta moltiplicare il risultato per 6378 (misura del raggio terrestre in Km) per ottenere la distanza in km.

Questo articolo è tratto dal blog Web café

Volendo rappresentare la formula in SQL Server


DECLARE @@A_LONG FLOAT
DECLARE @@A_LAT FLOAT
DECLARE @@B_LONG FLOAT
DECLARE @@B_LAT FLOAT


SET @@A_LONG=11.537919 *(PI()/180) --Longitudine del primo punto
SET @@A_LAT=45.336502 *(PI()/180) --Latitudine del primo punto


SET @@B_LONG=11.536503 *(PI()/180) --Longitudine del secondo punto
SET @@B_LAT=45.336487*(PI()/180) --Latitudine del secondo punto


SELECT (ACOS(cos(@@A_LONG-@@B_LONG)*cos(@@A_LAT)*cos(@@B_LAT)+sin(@@A_LAT)*sin(@@B_LAT)))*6378

dove il punto A ha latitudine @@A_LAT e longitudine @@A_LONG, il punto B ha latitudine @@B_LAT e longitudine @@B_LONG. In Microsft SQL Server, PI() è la funzione che restituisce il valore della costante pi greco (π).

Una variante alla formula sopra riportata è questa:


DECLARE @@A_LONG FLOAT
DECLARE @@A_LAT FLOAT
DECLARE @@B_LONG FLOAT
DECLARE @@B_LAT FLOAT


SET @@A_LONG=11.536567 --Longitudine del primo punto
SET @@A_LAT=45.336581 --Latitudine del primo punto


SET @@B_LONG=11.536846 --Longitudine del secondo punto
SET @@B_LAT=45.33818 --Latitudine del secondo punto


select
acos(cos(@@A_LONG * (PI()/180)) *
cos(@@A_LAT * (PI()/180)) *
cos(@@B_LONG * (PI()/180)) *
cos(@@B_LAT * (PI()/180))
+
cos(@@A_LONG * (PI()/180)) *
sin(@@A_LAT * (PI()/180)) *
cos(@@B_LONG * (PI()/180)) *
sin(@@B_LAT * (PI()/180))
+
sin(@@A_LONG * (PI()/180)) *
sin(@@B_LONG * (PI()/180))
) * 6378 as Dist

Questo sito (itouchmap.com) consente di determinare latitudine e longitudine di un punto geografico in modo semplice.

Leave a Reply