使用MySQL计算结果中的所有纬度和经度距离

时间:2017-07-12 08:42:53

标签: mysql geolocation distance latitude-longitude

这是我目前在两个纬度和经度之间计算的查询,但我如何使用这个或类似的公式计算结果中的所有纬度和经度?

SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.GPSLat -
      abs(b.GPSLat)) * pi()/180 / 2),2) + COS(a.GPSLat * pi()/180 ) * COS(
      abs(b.GPSLat) *  pi()/180) * POWER(SIN((a.GPSLon - b.GPSLon) *  
      pi()/180 / 2), 2) )), 2) as "Total(KM)"
from table1 a
      inner join table1 b on a.ID = 70 and b.ID = 71;

这是我的数据库Lat和Lon示例

This is my database Lat and Lon example

结果按id70和id71计算

The result count by id70 and id71

1 个答案:

答案 0 :(得分:0)

不是100%明确你的意思,但你是说你要计算所有坐标对的距离?如果是这样,您正在尝试进行交叉加入:

SELECT a.id, b.id , ...(your formula) from 
  (select id from Table1 
      [some join with filtered table]
       where [some predicate] ) a 
  CROSS JOIN 
  ( ... similar query to above to filter your right hand set... )b 

现在在iPad上抱歉,输入所有内容都很恼火。

不要在交叉连接上应用任何内容,因为这会将其转换为内连接。

这将为您提供所有对之间的距离。

有关优化此功能的一些方法,请参阅: Cross Join without duplicate combinations