两点之间的距离,包括高程

时间:2015-04-23 15:14:48

标签: python python-2.7 pythagorean

我正在尝试使用毕达哥拉斯来计算两个GPS点之间的距离。

即:

  

第1点:51.244452 -0.577235 10,000(英国吉尔福德以上10,000英尺)

     

第2点:51.500439 -0.131811 30,000(英国威斯特米斯以上30,000英尺)

在Python 2.7中,你如何找到直线'使用毕达哥拉斯定理在这两点之间的距离?

1 个答案:

答案 0 :(得分:2)

首先,我们需要将坐标转换为ℝ 3 。这样做的公式由mjqxxxx在Math.SE的similar question中提供:

  

x =Rcosθcosφ
  y =Rcosθsinφ
  z =Rsinθ

我们将定义以下函数来处理这个问题:

def sph2cart(r, theta, phi):
   return(r*math.cos(theta)*math.cos(phi), r*math.cos(theta)*math.sin(phi),
          r*math.sin(theta))

假设球形地球的半径为20,926,000英尺:

>>> sph2cart(20926000+10000, 51.244452*math.pi/180, -0.577235*math.pi/180)
(13105249.663461415, -132035.2878228453, 16326392.55748538)
>>> sph2cart(20926000+30000, 51.500439*math.pi/180, -0.131811*math.pi/180)
(13045256.544829715, -30011.1344767356, 16400436.488440938)

现在我们可以推迟那些并获得距离。