2011-12-29 52 views
-2

如何从作业表中控制团队和客户的经度和纬度以及合理的误差?如何在T-SQL中使用大圆距离计算

如果这两个值接近海誓山盟,我将返回其 “真”,如果不是 “假”

工作表(像这样):

JobID CustomerID TeamID 
    2  13  1 
    3  13  2 

团队表:

TeamID Latitude Longitude 
1  41.019 28.965 
2  42.019 27.165 

客户表

ID Latitude Longitude 
13 13.557 13.667 
+0

是什么意思是“接近海誓山盟”?你需要更具体 – Lamak 2011-12-29 17:06:33

+0

可能的复制http://stackoverflow.com/questions/8667647/find-the -nearest定位功能于MS-SQL – 2011-12-29 17:28:28

回答

3

功能:

CREATE FUNCTION dbo.DictanceKM(@lat1 FLOAT, @lat2 FLOAT, @lon1 FLOAT, @lon2 FLOAT) 
RETURNS FLOAT 
AS 
BEGIN 
    RETURN ACOS(SIN(PI()*@lat1/180.0)*SIN(PI()*@lat2/180.0)+COS(PI()*@lat1/180.0)*COS(PI()*@lat2/180.0)*COS(PI()*@lon2/180.0-PI()*@lon1/180.0))*6371 
END 
1

我假设你的意思是:如果两个纬度和经度在彼此的x英里之内,我该如何写一个select语句来返回true?或者类似的东西?

查找“great_circle_distance”

编写客户链接到球队的查询。

执行两个长和长的大圆距离计算。

将此与您所需的距离进行比较。

使用解码或一些类似的结构将其转化为“真”或“假”值。