我正在使用应用程序,我们需要采用用户手机的方向(例如使用web orientation API或其他方式),并将其与存储的方向进行比较。然后,我们需要确定这些方向在度数方面是否足够接近。 编辑:这样做的最终目的是告诉用户何时面向与数据库中存储的方向完全相同的方向(即倾斜并不重要)
所以从概念上讲,我们找到了圆上两点之间的距离,但是这些点是由两个角度确定的,即alpha和beta,而不是纬度和经度,但它们都是在360度以外(比如this question我猜)。 Web API返回三个不同的角度alpha,beta和gamma,解释here,但我只关心alpha和beta。
首先,如何在Postgres中存储3D方向?我可以将此数据建模为具有纬度和经度的POINT,但是必须转换角度会很烦人从360度变成180度或90度的角度)。在Postgres中有更好的格式来存储方向吗?
其次,如何比较方向?我发现了这个函数ST_Distance_Spheroid,它根据纬度和经度比较了球体上各点之间的距离,但是这不仅需要将我的角度转换为纬度和经度,还需要使用球体来进行映射。那个球体会是一个单位球吗?有更好的方法吗?