小编典典

如何使用经度和纬度计算距离?

sql

我的桌子有经度和纬度


     Lat            Longitude

40.8151 -73.0455    U   36103
40.8132 -73.0476    U   36103

所以我想要的是我要从页面传递两个经度和纬度。如何使用存储过程查找最近的地方?我没有太多帮助,所以我必须在这里询问

尝试过使用这个

( 3959 * acos( cos( radians(37) ) * cos( radians( @latitude ) ) * cos( radians( @longtitude ) - radians(-122) ) + sin( radians(37) ) * sin( radians( @latitude ) ) ) )

但是我必须将其与表值进行匹配,所以我该如何实现呢?


阅读 189

收藏
2021-03-23

共1个答案

小编典典

SELECT ROUND(6371 * acos(cos(radians('lat')) * cos(radians(latitude)) * cos(radians(longitude) - radians('long')) + sin(radians('lat')) * sin(radians(latitude)))) as distance,latitude,longitude, from your_table HAVING distance<=20  order by distance

您可以在SQL中使用与上面显示的查询类似的查询,其中'lat''long'是要搜索的变量值。该'longitude''latitude'是从你的表的列名。顺便说一句,这称为Haversine公式,该常数6371用于获取以KM为单位的距离,而3959用于获取以英里为单位的距离。您可以根据需要使用它们中的任何一个。

2021-03-23