0

在我的应用程序中,我需要计算两个 gps 设备之间的距离。当使用 GPS 坐标(经度、纬度、高度)时,存在一个问题:高度的绝对误差较大。您可以通过根据公式计算误差 phi 和 tetta(纬度和经度)来验证这一点

x = r*sin(tetta)*cos(phi) y = r*sin(tetta)*cos(phi) z = r*cos(tetta)

然而,很明显 GPS 接收器一开始是在笛卡尔坐标系 (x, y, z) 中接受数据,然后将它们转换为坐标系 r, tetta, phi(高度、纬度、经度)。如何获得原始坐标 x,y,z?API 中是否存在现有方法?再一次,我不需要来自矩形球坐标系的转换公式,我需要从 GPS 接收器获得的原始数据的准确性。可能吗?

4

2 回答 2

0

没错,GPS 接收器在内部使用ECEF 坐标系,它是笛卡尔坐标系。但是您无法在智能手机上获得该坐标。请参阅上面的链接,将您在智能手机中获得的 WGS84 坐标转换为 ECEF。

但请注意 ECEF 这是一个 3d 笛卡尔坐标,因此两点之间的直线将穿过地球,这仅对飞行应用有用。

对于车辆(汽车、轮船),通常您应该忘记 GPS 的高度,只需计算地面距离(2d-笛卡尔)。

另一种解决方案:首先使用单位米进行 (lat,lon) 到 2-d 笛卡尔转换,然后将高度添加为 3d 维度,然后将地球的一小部分建模为平面。

它总是取决于您需要计算的目的。

于 2013-10-09T13:55:57.013 回答
0

为什么 GPS 从笛卡尔坐标开始很明显?

在任何情况下,我都没有看到从 API 获取特定位置元素准确性的方法。确实,高度往往最容易出错(并且取决于芯片组并且高于参考大地水准面而不是任何物理的)。您可以通过记录高度数据并对变化进行建模来获得一些准确性指示。

于 2013-10-09T11:40:16.767 回答