这个问题更多的是关于数学而不是编程。我正在编写一个函数,该函数在已知纬度和经度的2个点之间取一个地理距离的平方作为参数。有一种直接的计算方法:计算点积,然后取arccos,乘以地球半径。然后将结果平方并得到地理距离的平方,假设地球是一个球体(在我的情况下这是可接受的近似值)。
但是,如果可能的话,我希望避免昂贵的arccos()调用,特别是考虑到我可以很容易地获得隧道距离的平方(通过毕达哥拉斯定理或点积)。
我还在这里阅读了http://en.wikipedia.org/wiki/Geographical_distance#Tunnel_distance关于低估公式,我可以用来从地理距离获得隧道距离。然而,在我的情况下,我需要相反的(隧道到地理)和广场。我玩泰勒系列并得到一个粗略的近似值:
G square = T2 /(1 - (T2 / R2)/12.0)//这里G2是地理距离的平方,隧道的T2平方,地球半径的R2平方。我也能得到更准确的公式:
G square = T2 /(1 - (T2 / R2)/12.0 - ((T2 / R2)^ 2)/240.0)。
最后一个公式给出G = 1000 km时误差仅为3.8mm,G = 2000 km时误差小于50cm。
然而,至少在使用泰勒系列时,我仍然无法在数学上证明这个公式。想知道是否有可能获得数学证明,并且还可以扩展该公式以获得更大的G / T值。谢谢!
答案 0 :(得分:0)
为什么隧道距离地理距离?没有地理距离。计算地球上两点之间的距离有很多种可能性。
只需取两个lat / lon cooridnates,然后使用简单的圆柱投影计算它们之间的距离。
这只需要cos(centerLatitude)和乘以因子。 (meters_per_degree)
另见圆柱等距投影。高达几公斤(从10到100),这足以提供足够的准确度。