两点之间的距离,包括高程
Distance between two points including elevation
我正在尝试使用毕达哥拉斯来计算两个 GPS 点之间的距离和高程。
即:
Point 1: 51.244452 -0.577235 10,000 (10,000ft above Guildford, UK)
Point 2: 51.500439 -0.131811 30,000 (30,000ft above Westmister, UK)
在Python 2.7中,你如何使用毕达哥拉斯定理求出这两点之间的'straight line'距离?
首先我们需要将坐标变换为ℝ3。 mjqxxxx in a similar question 在 Math.SE:
上提供了这样做的公式
x = R cos θ cos ϕ
y = R cos θ sin ϕ
z = R sin θ
我们将定义以下函数来处理此问题:
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)
现在我们可以推 那些 通过并计算距离。
我正在尝试使用毕达哥拉斯来计算两个 GPS 点之间的距离和高程。
即:
Point 1: 51.244452 -0.577235 10,000 (10,000ft above Guildford, UK)
Point 2: 51.500439 -0.131811 30,000 (30,000ft above Westmister, UK)
在Python 2.7中,你如何使用毕达哥拉斯定理求出这两点之间的'straight line'距离?
首先我们需要将坐标变换为ℝ3。 mjqxxxx in a similar question 在 Math.SE:
上提供了这样做的公式x = R cos θ cos ϕ
y = R cos θ sin ϕ
z = R sin θ
我们将定义以下函数来处理此问题:
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)
现在我们可以推 那些 通过并计算距离。