Возвращает расстояние между двумя местоположениями в SQL Server 2008 с использованием широты и долготы

У нас есть таблица с местами, их широтой и долготой.

Мы пытаемся создать функцию в SQL Server 2008 для составления списка мест в пределах следующих 25 километров, используя в качестве центральной точки определенную широту и долготу.

Я блуждал, если это хороший способ начать и проверить нашу функцию и получить текущее расстояние между центральной точкой (текущее местоположение) и целевым местоположением (@ широта / @ долгота):

ALTER FUNCTION [dbo].[GetDistanceFromLocation]
(   
    @myCurrentLatitude float,
    @myCurrentLongitude float,
    @latitude float,
    @longitude float
)
RETURNS int
AS
BEGIN
    DECLARE @radiusOfTheEarth int 
    SET @radiusOfTheEarth = 6371--km

    DECLARE @distance int
    SELECT @distance = ( @radiusOfTheEarth 
        * acos( cos( radians(@myCurrentLatitude) ) 
        * cos( radians( @latitude ) ) 
        * cos( radians( @longitude ) - radians(@myCurrentLongitude) ) + sin( radians(@myCurrentLatitude) ) 
        * sin( radians( @latitude ) ) ) )

    RETURN @distance

END

Это правильно или мы чего-то не хватает?

6
задан Junior M 20 September 2011 в 17:24
поделиться