借助GPS在直角坐标系中的确切位置(android)

时间:2013-10-09 11:30:41

标签: android gps

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

2 个答案:

答案 0 :(得分:0)

为什么GPS以笛卡尔坐标开始显而易见?

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

答案 1 :(得分:0)

你是对的GPS接收器内部使用ECEF Coordinate system,这是笛卡儿。 但你无法在智能手机上获得该坐标。请参阅以上链接,了解您从智能手机到ECEF的WGS84坐标转换。

但要注意ECEF这是一个3D笛卡尔,所以两点之间的直线将穿过地球,这对飞行应用来说是有用的。

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

另一种解决方案:首先用单位计做一次(lat,lon)到2-d笛卡尔转换,然后将高度加到3d维度,然后将地球的一小部分模拟为平坦。

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