2011-01-28 131 views
1

我有两对经度/纬度,并希望找到它们之间的距离。我坚持在这个特定的网站上使用经典的ASP。经典ASP中两个纬度/长点之间的距离

我发现了很多使用Haversine方程的代码示例,但没有在ASP中(它缺少ACos函数,并没有内置pi!我最终得到了一些代码工作,但经过仔细测试证明它是我对球形几何的理解不够好,所以请任何人都说如果他们之前在ASP中完成过这个工作?!谢谢。

+0

已经回答了我的问题。卫生署! – 2011-01-28 13:10:04

回答

4

哦,亲爱的,我刚刚一直是一个完全白痴,并没有发现一个一点点的代码,我甚至进入三角之前设置我的纬度/长整数我觉得很愚蠢......

至少这意味着我的代码是正确的,会张贴在这里的情况下,它可以帮助别人:

'calculate distance in miles between two coordinates 
Function DistanceBetweenPoints(iLat1, iLong1, iLat2, iLong2) 
    Dim iDistance 
    'first assume that the earth is spherical (ha ha) 
    iDistance = ACos((Sin(ToRad(iLat1)) * Sin(ToRad(iLat2))) + (Cos(ToRad(iLat1)) * Cos(ToRad(iLat2)) * Cos(ToRad(iLong2) - ToRad(iLong1)))) * 3959 'mean radius of earth in miles 
    DistanceBetweenPoints = CInt(iDistance) 'round up to lose decimal place 
End Function 

'ASP doesnt have these two trigonometric functions, or pi, built in (needed above) 
Const PI = 3.141592653589793100 'use this value from SQL 
Function ToRad(iDegrees) 
    ToRad = CDbl(iDegrees) * PI/180 
End Function 
Function ACos(x) 
If x = 1 Then 
     ACos = 0 
    ElseIf x= -1 Then 
     Acos = PI 
    Else 
     ACos = ATn(-x/Sqr(-x * x + 1)) + 2 * ATn(1) 
    End If 
End Function 
相关问题