Ciao a tutti,
sto cercando da diverse ore degli script ASP per il calcolo delle distanze tra due punti, x,y espressi in latitudine e longitudine.
Inoltre mi servirebbe il calcolo della rotta, cioè sapere se il punto y rispetto a x ha un inclinazione di Z gradi.
es. Milano e a Nord-Ovest di Roma, quindi tra le due città dovrebbe esserci un'angolazione di 320 ° circa... (stimo ad occhio)
ho trovato alcuni script per il calcolo della distanza tra due punti, ma ho avuto risultati discordanti con altre applicazioni che si trovano on line.
Qualcuno ha qualcosa di già pronto?
Grazie.
Segue quanto ho trovato per il calcolo della distanza in KM e in Miglia.
Su questo script pero' ho un problema ad esempio se provo a calcolare la distanza ROMA LOS ANGELES, forse per le coordinate negative di los angeles.
codice:
<%
'COORDINATE DI ESEMPIO per prove
'roma 41.8954656, 12.4823243
'parigi 48.8566667, 2.3509871
'los angeles 34.0522342, -118.2436849
lat1 = 41.8954656
lon1 = 12.4823243
'lat2 = 48.8566667
'lon2 = 2.3509871
lat2 = 34.0522342
lon2 = -118.2436849
Response.write distance(lat1, lon1, lat2, lon2, "K") & " KM
"
const pi = 3.14159265358979323846
Function distance(lat1, lon1, lat2, lon2, unit)
Dim theta, dist
theta = lon1 - lon2
dist = sin(deg2rad(lat1)) * sin(deg2rad(lat2)) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta))
dist = acos(dist)
dist = rad2deg(dist)
distance = dist * 60 * 1.1515
Select Case ucase(unit)
Case "K"
distance = distance * 1.609344
Case "N"
distance = (distance * 1.609344) / 1.852
End Select
End Function
'
' This function get the arccos function from arctan function
'
Function acos(rad)
If Abs(rad) <> 1 Then
acos = pi/2 - Atn(rad / Sqr(1 - rad * rad))
ElseIf rad = -1 Then
acos = pi
End If
End function
'
' This function converts decimal degrees to radians
'
Function deg2rad(Deg)
deg2rad = cdbl(Deg * pi / 180)
End Function
'
' This function converts radians to decimal degrees
'
Function rad2deg(Rad)
rad2deg = cdbl(Rad * 180 / pi)
End Function