当前位置: 首页 > 面试题库 >

不带三角函数的SQL距离查询

谯乐池
2023-03-14
问题内容

我有一个不支持三角函数的SQLite数据库。我想按距离对桌中的一组经纬度进行排序,而不是第二对经纬度对。我熟悉用于按距离对经纬度对进行排序的标准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)


 类似资料:
  • 距离查询 距离查询,是指查询指定几何对象一定距离范围内的地物。对于点几何对象,则查询以该点为圆心,以距离为半径画圆,落在该圆形范围内的地物;对于线和面几何对象,则查询距离对象边界一定范围内的地物。 以 World 数据服务为例。使用接口 ol.supermap.QueryService 在图层 “Capitals@World.1” 中查找距离指定点为10度(地图坐标单位)的矢量要素。 // 添加查

  • 我想在php上创建一个函数,它将返回数组中sql查询的值。函数中的sql ode可以工作,我可以显示值。 但是当我想在一个函数中使用它时,它就不起作用了。我的语法中有什么错误?

  • 问题内容: 选项 询问 我有一个包含4列的数据库表: 唯一身份 城市名 纬度(纬度) 经度(lng) 我在顶部使用查询返回距指定坐标距离指定英里数内的位置。它似乎可行,但我不确定它的准确性如何。我很想知道查询是否很好,或者您是否有更好的解决方案。 问题答案: 看起来像是正确的大圆距查询。 您对WRT的准确性有何看法?

  • 在数学上问这个可能更好。是的,但我先试试这里: 假设三角形不是共面的,我知道代表两个三角形之间最小距离的一个点必须位于其中一个三角形的顶点或沿边。对于另一个三角形,它可以位于平面上的任何位置,包括沿边或顶点。 实际上,我不需要最小距离本身——最终,我需要找到的只是三角形是否在彼此的某个epsilon内。 我尝试过的一件事是简单地对曲面进行采样,并应用快速ε测试,以查看一个三角形中的任何点是否在另一

  • 我需要计算汽车行驶的距离!不是距离,不是距离到否。如果我们通过谷歌提供的API计算,距离可以完全不同。谷歌可以提供从一个点到另一个点的1公里距离,但汽车可以按照骑手想要的方式行驶800米。使用加速计没有帮助。它适用于步行,但绝不适用于更快的速度。 我尝试过使用Google的位置API:距离到或距离之间根本不是一个选项。它可以给出与IN REAL截然不同的结果。在真实的汽车中,可以通过非常短的地方并

  • SQL用例是否可以显示操作,返回到函数的结果,作为其else条件的结果? //(to_date(r.RENT_RETURN_DATE,'dd-mon-yyyy')-to_date(r.RENT_DUE_DATE,'dd-mon-yyyy')) ----返回一个整数// 当我执行上述查询时,会显示以下错误: 错误报告- SQL错误:ORA-00932:不一致的数据类型:预期CHAR得到编号00932