使用MySQL计算两个纬度和经度之间的距离(km)

时间:2017-07-10 09:36:49

标签: mysql gis latitude-longitude

这是mysql数据库中的Lat和Lon示例

$('table').find('td').length;

下面的公式计算两个Lat(纬度)和Lon(经度)之间的距离,得到我想要的结果。但是这个公式不会从数据库中提取我的Lat和Lon。我想问一下,如何通过使用ID获得距离结果并计算两个Lat和Lon?我的朋友告诉我使用Join表,但我仍然没有得到答案..

ID | Lat    | Lon
1  | 3.1412 | 101.6865
2  | 1.2897 | 103.8501

感谢您提前

2 个答案:

答案 0 :(得分:1)

您可以为Id 1加入同一个表两次,为id 2加入一个分配不同别名的表  然后使用相关的列名称

  SELECT ROUND(6353 * 2 * ASIN(SQRT( POWER(SIN((a.lat -
      abs(b.lat)) * pi()/180 / 2),2) + COS(a.lat * pi()/180 ) * COS(
      abs(b.lat) *  pi()/180) * POWER(SIN((a.lng - b.lng) *  pi()/180 / 2), 2) )), 2);
  from my_table a
  inner join my_table b on a.id = 1 and b.id = 2

答案 1 :(得分:0)

对我有用

SELECT *,(((acos(sin((12.942999*pi()/180)) * sin((`Lat`*pi()/180))+cos((12.942999*pi()/180)) * cos((`Lat`*pi()/180)) * cos(((74.82994- `Lon`)* pi()/180))))*180/pi())*60*1.1515*1.609344 ) as distance FROM ven_vendor HAVING distance <= 10