经纬度 附近的点 在数据库中查询

数据库是sqlserver 2008


函数

ALTER FUNCTION [GetDistance]

(
@GPSLng DECIMAL(12,6),
@GPSLat DECIMAL(12,6),
@Lng  DECIMAL(12,6),
@Lat DECIMAL(12,6)
)
RETURNS DECIMAL(12,4)
AS
BEGIN
   DECLARE @result DECIMAL(12,4)
   SELECT @result=6371.004*ACOS(SIN(@GPSLat/180*PI())*SIN(@Lat/180*PI())+COS(@GPSLat/180*PI())*COS(@Lat/180*PI())*COS((@GPSLng-@Lng)/180*PI()))
   RETURN @result

END

这样算出来是千米,所以我在后面*1000

调用

SELECT *,
    dbo.GetDistance('124.809359','46.40569',a.longitude,a.latitude)*1000   b FROM 表名 a where dbo.GetDistance('124.809359','46.40569',a.longitude,a.latitude)*1000<'2000'

你可能感兴趣的:(经纬度 附近的点 在数据库中查询)