2

最近まで、特定のサイトからの衛星の仰角と方位角を計算するために使用したコードは機能しているように見えました。次に、北半球ではなく南半球のサイトから別のファイルを使用しました。計算された仰角は時々負でした。つまり、衛星が地平線の下にありました。これは正しくないため、衛星の位置に使用されるファイル パラメーターが正しくない (可能性は低い) か、以下のコードが正しくない (可能性が高い) かのいずれかです。

rx_position = (self.X_rx, self.Y_rx, self.Z_rx)  
diff_position = satellite_carteisan_coords - rx_position
diff_position_individual = diff_position[0]

rho = np.sqrt(diff_position_individual[0]**2 + diff_position_individual[1]**2 + diff_position_individual[2]**2)

dphi, dlambda, h = self.cartesian_to_geoid(rx_position)

slat = np.sin(np.radians(dphi))
slon = np.sin(np.radians(dlambda))
clat = np.cos(np.radians(dphi))
clon = np.cos(np.radians(dlambda))

F = np.array([[-slon, -slat*clon, clat*clon],
              [clon,  -slat*slon, clat*slon],
              [0,   clat,     slat   ]])

np.split(diff_position_individual, 3)
local_vector = np.dot(F.T, diff_position_individual)

E = local_vector[0]
N = local_vector[1]
U = local_vector[2]

hor_dis = np.sqrt(E**2 + N**2)

if hor_dis < 1e-20:
    Azi = 0
    Ele = 90
else:
    Azi = np.rad2deg(math.atan2(E, N))
    Ele = np.rad2deg(math.atan2(U, hor_dis))

if Azi < 0:
    Azi = Azi + 360 

return Azi, Ele 

上記のコードが負の仰角を計算しないようにするにはどうすればよいですか?

4

0 に答える 0