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

时间:2014-01-13 06:06:55

标签: c# sql latitude-longitude

我的桌子有纬度和经度


     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 ) ) ) )

但是我必须将它与表值匹配,那么我该如何实现呢?

1 个答案:

答案 0 :(得分:5)

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用于获取英里距离。您可以根据自己的要求使用其中任何一个。

相关问题