注册 登录
编程论坛 SQL Server论坛

求救:某经纬度点范围内数据的查询

wak2311 发布于 2012-11-01 21:41, 829 次点击
求救:菜鸟想查询一个个数据库内某经纬度点范围2公里的数据,不知道怎么编写查询语句?
3 回复
#2
cnfarer2012-11-03 08:20
得先了解相关表结构,不知逻辑何来查询.
#3
像风儿一样2012-11-09 09:19
,用select语句,然后设置查询条件,应该就可以了。
#4
半杯清茶2012-11-13 14:37
用这个函数试试!


ALTER FUNCTION dbo.fnGetDistance  
(  
    @LatBegin REAL  
    , @LngBegin REAL  
    , @LatEnd REAL  
    , @LngEnd REAL  
)  
RETURNS FLOAT  
AS  
BEGIN  
    DECLARE @Distance REAL  
    DECLARE @EARTH_RADIUS REAL  
    SET @EARTH_RADIUS = 6378.137  
      
    DECLARE @RadLatBegin REAL, @RadLatEnd REAL, @RadLatDiff REAL, @RadLngDiff REAL  
    SET @RadLatBegin = @LatBegin * PI() / 180.0  
    SET @RadLatEnd = @LatEnd * PI() / 180.0  
    SET @RadLatDiff = @RadLatBegin - @RadLatEnd  
    SET @RadLngDiff = @LngBegin * PI() / 180.0 - @LngEnd * PI() / 180.0  
      
    SET @Distance = 2 * ASIN(SQRT(POWER(Sin(@RadLatDiff / 2), 2) + COS(@RadLatBegin) * COS(@RadLatEnd) * POWER(SIN(@RadLngDiff/2),2)))  
    SET @Distance = @Distance * @EARTH_RADIUS  
    --SET @Distance = Round(@Distance * 10000) / 10000  
      
    RETURN @Distance  
END
1