给定飞机的方向,纬度和经度,如何从飞机上找到一个点的纬度和经度?

时间:2018-09-16 21:53:09

标签: math geometry latitude-longitude

说我有一架飞机在地球上的某个点飞行。我使用的地球模型的纬度从-90/90开始,经度从-180/180开始。例如,飞机在纬度/经度为80.123º和170.123º的高度上飞行,并且高度为10,000英尺,如附图所示。飞机也有一个航向,即它与北方的夹角。在图中,角度略大于180º,因此它正飞离北极。现在,我想从该平面找到一个点的纬度和经度。给我一个距离d,它是平面与点之间的距离,它应沿平面指向的方向(航向)。我也得到了这一点的高度。有人能帮我找到一个公式,在给定飞机的任何纬度/经度/纬度/航向的情况下,我可以用来计算该点的纬度/经度吗?非常感谢。

    #EDIT: Below is my conversion of Vitor's calculations to a Python script

    r_earth = 3440 #earth radius in nautical miles
    h_plane = 1.645788 #plane flying at 10000 ft in nautical miles
    h_dest = 0
    P = 90 #flying 90 degrees from North, so towards Florida
    #lat,long of the center of Texas = 31.005753,-99.21390 
    d = 10 # point is 10 nautical miles away
    PN = 58.994247 #latitude = 90 - PN
    longitude = -99.21390 
    r_plane = r_earth + h_plane
    r_dest = r_earth + h_dest
    PD = math.acos((r_plane**2 + r_dest**2 - d**2)/(2*r_plane*r_dest))
    ND = math.acos(math.cos(PN)*math.cos(PD) + math.sin(PN)*math.sin(PD)*math.cos(P))
    N = math.asin(math.sin(PD)*math.sin(P)/math.sin(ND))
    print(str(90 - ND) + "," + str(longitude + math.sin(N)))

diagram

1 个答案:

答案 0 :(得分:1)

我假设地球是球形的(误差很小)。

考虑球形三角形(平面,北极,终点)= PND。

首先,使用(平面)余弦规则将距离def getTailLog(self): with open(self.strFileName, 'rb') as fileObj: pos = fileObj.seek(0, os.SEEK_END) try: while True: if self.booleanGetTailExit: break strLineContent = fileObj.readline() if not strLineContent: continue else: yield strLineContent.decode('utf-8').strip('\n') except KeyboardInterrupt: pass 转换为平面与其目的地之间的球面弧:

d

请注意

  1. r_plane = (r_earth + h_plane) r_dest = (r_earth + h_dest) cos(PD) = (r_plane^2 + r_dest^2 - d^2)/(2*r_plane*r_dest) 是飞机的纬度,并且
  2. 90-PN处的角度是飞机的航向(方位角)。

现在,使用Spherical Cosine Rule

P

您可以获得目的地的纬度计算cos(ND) = cos(PN)*cos(PD) + sin(PN)*sin(PD)*cos(P)

这次,使用Spherical Sine Rule

90-ND

给出飞机与目的地之间经度的绝对差。