加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2021-03-06 17:23:55 所属栏目:MsSql教程 来源:网络整理
导读:我有一个SQLite数据库,它不支持trig函数.与第二个lat,lng对相比,我想按距离对我的表中的一组lat,lng对进行排序.我熟悉用于按距离分类lat,lng对的标准hasrsine距离公式. 在这种情况下,我并不特别关心精度,我的点被远距离分开,所以我不介意通过将曲线视为直线来

我有一个SQLite数据库,它不支持trig函数.与第二个lat,lng对相比,我想按距离对我的表中的一组lat,lng对进行排序.我熟悉用于按距离分类lat,lng对的标准hasrsine距离公式.

在这种情况下,我并不特别关心精度,我的点被远距离分开,所以我不介意通过将曲线视为直线来舍入距离.

我的问题是,这种查询是否有普遍接受的公式?记住没有触发功能!

解决方法

如果你的点在彼此的合理距离内(即不是在世界的一半,而不是在日期线上),你可以对纬度和经度之间的差异进行校正(因为经度较短,除赤道外) ),然后计算距离,好像地球是平坦的.

由于您只想对值进行排序,您甚至不必使用平方根,只需添加差异的平方即可.

例如,@ 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)

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读