【问题标题】:The exact location with the help of GPS in a rectangular coordinate system (android)借助 GPS 在直角坐标系中的确切位置(android)
【发布时间】:2013-10-09 11:30:41
【问题描述】:

在我的应用程序中,我需要计算两个 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 接收器获得的原始数据的准确性。有可能吗?

【问题讨论】:

  • 你需要什么距离?短距离

标签: android gps


【解决方案1】:

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

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

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

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

这始终取决于您需要计算的目的。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 至少这是合乎逻辑的。让选定的直角坐标系与地球中心相关联。知道 gps 接收器和三个 gps 卫星之间的距离,您可以定义 gps 接收器的位置。在这种方法中,没有理由使 z 坐标(有条件的高度)沿 x 轴和 y 轴的误差更大。如果我们考虑球坐标系(gps)中笛卡尔坐标系的变换方程,则:d(phi) / dx = 1/r dr/dx
    • (高度误差是纬度误差的 r 倍)。这与我在平板电脑上得到的数字一致
    猜你喜欢
    • 2016-09-19
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多