gpt4 book ai didi

没有三角函数的 SQL 距离查询

转载 作者:行者123 更新时间:2023-12-01 15:33:21 25 4
gpt4 key购买 nike

我有一个不支持三角函数的 SQLite 数据库。与第二个 lat,lng 对相比,我想按距离对表中的一组 lat,lng 对进行排序。我熟悉用于按距离对 lat、lng 对进行排序的标准 haversine 距离公式。

在这种情况下,我并不特别关心精度,我的点之间的距离很远,所以我不介意通过将曲线视为直线来四舍五入距离。

我的问题是,这种查询是否有普遍接受的公式?记住没有三角函数!

最佳答案

如果您的点彼此之间的距离在合理范围内(即不跨越半个世界,也不跨越日期变更线),您可以对纬度和经度之间的差异进行校正(因为经度较短,除了在赤道),然后就好像地球是平的一样计算距离。

因为你只想对值进行排序,你甚至不必使用平方根,你可以只添加差异的平方。

示例,其中@lat@lng 是您当前的位置,2 是差值校正:

select *
from Points
order by (lat - @lat) * (lat - @lat) + ((lng - @lng) * 2) * ((lng - @lng) * 2)

您可以将特定纬度的差异校正计算为 1/cos(lat)


Cees Timmerman 提出了这个同样适用于跨日期变更线的公式:

pow(lat-lat2, 2) + pow(2 * min(abs(lon-lon2), 360 - abs(lon-lon2)), 2)

关于没有三角函数的 SQL 距离查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548940/

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