2011-01-28 86 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 
相關問題