У нас есть таблица с местами и их широтой и долготой.
Мы пытаемся создать функцию в 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
Это правильно или мы что-то упустили?