gpt4 book ai didi

mysql - 一个纬度/经度坐标与使用 SQL 的固定坐标之间的近似距离

转载 作者:可可西里 更新时间:2023-11-01 09:04:35 26 4
gpt4 key购买 nike

这里

Distance between two lat,lon points

我发现了一个非常简单且不错的公式:

d = sqrt(pow(lat2-lat1, 2) + cos(lat1)*pow(lon2-lon1, 2))

我是这样使用的:

SELECT name, SQRT(POW(lat-45, 2) + COS(45)*POW(lon-8, 2)) AS distance
FROM shop
ORDER BY distance

一切正常,因为我只需要获得一个近似的相对距离。

但后来我需要一个绝对距离,即使是近似值...我开始意识到也许“d”不能以米/英里为单位进行转换,因为例如有 180 度的纬度,但有 360 度的经度,所以这个几乎是毕达哥拉斯定理的“拉伸(stretch)”对角线的方式弄乱了可能的绝对计算......过了一会儿,我放弃了......在这里我上午。

如何将“d”转换为以米/英里为单位的绝对距离?

PS:是的,我会在最终版本中预先计算SQL查询中的所有常量...

最佳答案

这对我有用:

$sql = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * sin((Latitude*pi()/180 ))+cos((".$latitude."*pi()/180)) * cos((Latitude*pi()/180)) * cos(((".$longitude. "- 经度)*pi()/180))))*180/pi())*60*1.1515*1.609344) 作为距离FROM shops WHERE distance >= ".$distance;//距离以公里为单位

也看看谷歌地图功能: https://developers.google.com/maps/articles/phpsqlsearch_v3?csw=1#findnearsql

关于mysql - 一个纬度/经度坐标与使用 SQL 的固定坐标之间的近似距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347716/

26 4 0
文章推荐: c# - 在 C# 中使用 var 和 default 进行声明
文章推荐: android - 如何从 Get Response 中提取特定的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com