Software

[tips] Calcolare la distanza tra punti espressi in latitudine e longitudine

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.

05/03/2010 Tips
No Comments

[windows 7] Installare applicazioni su Windows 7 con utenti amministratori di dominio

[trend micro] Impossibile accedere alla Security Dashboard di Worry Free Business Security

Lascia un commento

Devi essere connesso per inviare un commento.

Giugno 2025
L M M G V S D
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« Giu    

Categorie

  • Access
  • Asp
  • Cyberoam
  • Dell
  • ESX / vmWare
  • Exchange
  • Exchange 2007
  • How-To
  • IIS
  • iPhone
  • Linux
  • Mac
  • Office 365
  • Outlook
  • plesk
  • Sophos XG
  • SQL Server
  • TeamSystem
  • Tips
  • Trend Micro
  • Vb.NET
  • VB6
  • Windows 10
  • Windows 7
  • Windows SBS
  • Windows Server
  • Windows Vista
  • Windows XP
  • WSUS

How-To

  • Configure SMTP O365 Migration Using TLS 1.2 For SQL Database Mail
  • Debian anti-spam and anti-virus e-mail gateway
  • How to install Small Business Server 2003 in an existing Active Directory domain
  • Sophos XG Firewall and Firebox Branch Office VPN Integration Guide
  • Squid, SquidGard, NTLM Authentication con Samba 3.x su Debian Sarge
  • Troubleshoot high-CPU-usage issues in SQL Server

Utili

  • Chip Grafici per portatili – Benchmark
  • Il blog su Microsoft Access
  • Processori per portatili – Benchmark
  • Sophos Wireless: Wi-Fi Fundamentals
  • Zentyal – Linux Small Business Server

Meta

  • Accedi
  • Feed dei contenuti
  • Feed dei commenti
  • WordPress.org
Proudly powered by WordPress | Theme: Neblue by NEThemes.