Расстояние между двумя точками широты и долготы в Classic ASP - PullRequest
1 голос
/ 28 января 2011

У меня есть две пары широта / долгота, и я хочу найти расстояние между ними. Я застрял с использованием Classic ASP на этом конкретном сайте.

Я нашел множество примеров кода, использующих уравнение Хаверсайна, но не в ASP (в котором отсутствует функция ACos и нет встроенного pi! В конце концов я получил некоторый код, работающий, но после тщательного тестирования его оказался ошибочным. Мое понимание сферической геометрии недостаточно хорошее, поэтому, пожалуйста, кто-нибудь может сказать, если они уже делали это в ASP раньше ?! Спасибо.

Ответы [ 2 ]

4 голосов
/ 28 января 2011

О, дорогой.Я только что был полным идиотом, и мне не удалось обнаружить немного кода, который устанавливал мои lat / long в целые числа, прежде чем я даже начал заниматься тригонометрией.Я чувствую себя очень глупо ....

По крайней мере, это означает, что мой код правильный, поэтому я опубликую его здесь на случай, если это поможет кому-то еще:

'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
1 голос
/ 21 декабря 2013

Этот источник кода является более полным: расстояние может быть в милях, или километрах, или морских милях. http://www.geodatasource.com/developers/asp

...