计算2点间距离
单位米,算法来自百度http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils.js
CREATE FUNCTION [dbo].[ToDistance] ( @Lng1 FLOAT, @Lat1 FLOAT, @Lng2 FLOAT, @Lat2 FLOAT ) RETURNS FLOAT AS BEGIN -- Declare the return variable here DECLARE @Distance FLOAT SET @Lng1 = PI() * @Lng1 / 180 SET @Lat1 = PI() * @Lat1 / 180 SET @Lng2 = PI() * @Lng2 / 180 SET @Lat2 = PI() * @Lat2 / 180 -- Add the T-SQL statements to compute the return value here SET @Distance = 6370996.81 * ACOS((SIN(@Lat1) * SIN(@Lat2) + COS(@Lat1) * COS(@Lat2) * COS(@Lng2 - @Lng1))) / 1000 -- Return the result of the function RETURN @Distance END
单位米,算法来自高德
CREATE FUNCTION [dbo].[ToDistance]
(
-- Add the parameters for the function here
@Lng1 FLOAT,@Lat1 FLOAT,@Lng2 FLOAT,@Lat2 FLOAT
)
RETURNS FLOAT
AS
BEGIN
-- Declare the return variable here
DECLARE
@Distance FLOAT,
@Sin FLOAT,
@SIN2 FLOAT,
@SIN3 FLOAT,
@SIN4 FLOAT
SET @Lng1 = PI() * @Lng1 / 180
SET @Lat1 = PI() * @Lat1 / 180
SET @Lng2 = PI() * @Lng2 / 180
SET @Lat2 = PI() * @Lat2 / 180
SET @Sin = Sin(@Lng1);
SET @Sin2 = Sin(@Lat1);
SET @Sin3 = Sin(@Lng2);
SET @Sin4 = Sin(@Lat2);
SET @Lng1 = Cos(@Lng1);
SET @Lat1 = Cos(@Lat1);
SET @Lng2 = Cos(@Lng2);
SET @Lat2 = Cos(@Lat2);
-- Add the T-SQL statements to compute the return value here
SET @Distance = Asin(Sqrt(((POWER((@Lng1 * @Lat1 - @Lng2 * @Lat2), 2)) + (POWER((@Lat1 * @Sin - @Lat2 * @Sin3), 2))) + (POWER((@Sin2 - @Sin4), 2))) / 2) * 1.27420015798544E7 / 1000
-- Return the result of the function
RETURN @Distance
END

浙公网安备 33010602011771号