Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
- Objetivo: Calcular distância entre dois pontos através da latitude e longitude
- Exemplo de aplicação: Calcular distância entre duas cidades desconsiderando curvas e desvios.
- Chamada: GetGeodesicDistance(Lat1,Lon1,Lat2,Lon2,rScale) 'valores de rScale: statute (default), nautical ou metric
- Fonte: Spokane City | Post do Patrique
<%
Function DegRad(x)
'Degrees to Radians
DegRad = x ((4 Atn(1)) / 180)
End Function
Function GetGeodesicDistance(Lat1,Lon1,Lat2,Lon2,rScale)
Dim er,pr,fl,F,G,L,S,C,W,R,D,H1,H2
er = 6378.1370000
pr = 6356.7523142
fl = (er - pr) / er
F = (DegRad(Lat1) + DegRad(Lat2)) / 2
G = (DegRad(Lat1) - DegRad(Lat2)) / 2
L = (DegRad(Lon1) - DegRad(Lon2)) / 2
S = Sin(G)^2 Cos(L)^2 + Cos(F)^2 Sin(L)^2
C = Cos(G)^2 Cos(L)^2 + Sin(F)^2 Sin(L)^2
W = Atn(Sqr(S / C))
R = Sqr(S * C) / W
D = 2 W er
H1 = (3 R - 1) / (2 C)
H2 = (3 R + 1) / (2 S)
Select Case rScale
Case "statute" dScale = 1.60934
Case "nautical" dScale = 1.85200
Case "metric" dScale = 1.00000
Case Else dScale = 1.60934
End Select
GetGeodesicDistance = (D * (1 + fl * H1 * Sin(F)^2 * Cos(G)^2 - fl * H2 * Cos(F)^2 * Sin(G)^2)) / dScaleResponse.Write "A distância entre BH e JF é " & formatNumber(GetGeodesicDistance(-19.55,-43.56,-21.46,-43.21,"metric"),2) & " km."
%>
Carregando comentários...