簡體   English   中英

用於查找使用緯度和經度之間的距離的Sql返回錯誤的距離

[英]Sql for finding the distance between using latitude and longitude returns wrong distance

我需要得到緯度和經度的位置之間的距離,mysql查詢工作沒有錯誤,但它返回錯誤的距離值

當我輸入與數據庫中相同的緯度和經度時,它給出的距離為“2590.4238273460855”而不是零,我不知道這是錯誤的

mysql查詢如下所示,緯度和經度是我的表列名

$sql = "SELECT id,(3956 * 2 * ASIN(SQRT( POWER(SIN(( $latitude - latitude) *  pi()/180 / 2), 2) +COS( $latitude * pi()/180) * COS(latitude * pi()/180) * POWER(SIN(( $longitude - longitude ) * pi()/180 / 2), 2) ))) as distance  
from table_name ORDER BY distance limit 100";

有人可以幫我嗎...

您的Haversine公式中存在錯誤。 Haversine配方是:

Haversine_distance = r * 2 * ASIN(SQRT(a))

哪里

a = POW(SIN(latDiff / 2),2)+ COS(lat1)* COS(lat2)* POW(SIN(LonDiff / 2),2)

因此,要更正代碼,請將查詢更改為:

"SELECT id,(3956 * 2 * ASIN(SQRT( POWER(SIN(( $latitude - latitude) / 2), 2) +COS( $latitude) * COS(latitude) * POWER(SIN(( $longitude - longitude ) / 2), 2) ))) as distance from table_name ORDER BY distance limit 100";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM