gpt4 book ai didi

php - 用于查找使用纬度和经度之间距离的sql返回错误的距离

转载 作者:可可西里 更新时间:2023-11-01 08:24:19 25 4
gpt4 key购买 nike

我需要获取经纬度位置之间的距离,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";

关于php - 用于查找使用纬度和经度之间距离的sql返回错误的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47935684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com