目的是计算行进距离。为此,我用速度,加速度和时间计算euclidean distance
。我从GPS获得这些数据。这是我的计算:
private float getDistanceTraveled(float vend, float vstart, long timeDifference){
float distance = 0;
if(vend == 0 && vstart == 0)
return distance;
if(vend - vstart == 0)
distance = vend * timeDifference;
else
distance = (vend * vend - vstart * vstart)
/ ((2 * (vend - vstart) / timeDifference);
return distance;
}
将此距离转换为地球表面最短距离的常用方法是什么?
我是通过简单的圆计算完成的,其中我的给定距离是chord c
,而radius r
是地球半径。
double distance = 2 * r * Math.asin(c / (2 * r));
我不是百分百肯定,如果这是计算欧氏距离并转换它的正确方法。我是否考虑过其他因素?
我熟悉Haversine Formula
,但我无法使用此方法中的坐标。
答案 0 :(得分:1)
您测量的是人/车行驶的米数
多数民众赞成
你有正确的仪表,没有必要将它转换为更大的圆距离,也没有意义
这仅适用于从一个坐标到另一个坐标超过10-100 km的距离:
(可能有一些特殊的情况,你想要这个,例如当飞机直线飞行时(通过三维直线豆100km,然后落在地球上,然后你想知道更大的圆距离是什么。)
所以你有正确的仪表,如果你需要更多(例如在特定方向上进行位置预测的坐标),那么这将是另一个问题。
答案 1 :(得分:0)
使用此公式证明您不需要距离更大的圆转换。
b = 2 * r * arcsin(s / 2r)
其中r是以米为单位的地球半径 和s是你的直线距离(米)
然后b是弦长,即具有地球半径的圆上的长度。 将b与s进行比较,您会发现区分应用程序的值可能没有意义。
另见http://de.wikipedia.org/wiki/Kreissegment
只有德国链接提供了“Bogenlänge”的公式