Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 卫星仰角负值_Python_Elevation_Orbital Mechanics_Satellite Navigation - Fatal编程技术网

Python 卫星仰角负值

Python 卫星仰角负值,python,elevation,orbital-mechanics,satellite-navigation,Python,Elevation,Orbital Mechanics,Satellite Navigation,直到最近,我用来计算某一特定地点卫星的仰角和方位角的代码似乎仍然有效。然后我使用了一个不同的文件,不是在北半球,而是在南半球。计算的仰角有时为负值,即卫星位于地平线以下。这是不正确的,因此用于卫星位置的文件参数为假(可能性较小),或者我下面的代码不正确(可能性较大) rx_位置=(self.X_rx,self.Y_rx,self.Z_rx) 差分位置=卫星坐标-接收位置 差异位置个体=差异位置[0] rho=np.sqrt(不同位置的个体[0]**2+不同位置的个体[1]**2+不同位置的个体[

直到最近,我用来计算某一特定地点卫星的仰角和方位角的代码似乎仍然有效。然后我使用了一个不同的文件,不是在北半球,而是在南半球。计算的仰角有时为负值,即卫星位于地平线以下。这是不正确的,因此用于卫星位置的文件参数为假(可能性较小),或者我下面的代码不正确(可能性较大)

rx_位置=(self.X_rx,self.Y_rx,self.Z_rx)
差分位置=卫星坐标-接收位置
差异位置个体=差异位置[0]
rho=np.sqrt(不同位置的个体[0]**2+不同位置的个体[1]**2+不同位置的个体[2]**2)
dphi,dlambda,h=自笛卡尔坐标系到大地水准面(rx位置)
板条=np.sin(np.radians(dphi))
slon=np.sin(np.radians(dlambda))
克拉特=np.cos(np.radians(dphi))
clon=np.cos(np.radians(dlambda))
F=np.数组([[-slon,-slat*clon,clat*clon],
[clon,-slat*slon,clat*slon],
[0,clat,slat]]
np.分割(不同位置和个人,3)
局部向量=np.点(F.T,不同位置个体)
E=局部_向量[0]
N=局部_向量[1]
U=局部_向量[2]
水平分布=np.sqrt(E**2+N**2)
如果hor_dis<1e-20:
Azi=0
Ele=90
其他:
Azi=np.rad2deg(数学上的atan2(E,N))
Ele=np.rad2deg(数学atan2(U,hor_dis))
如果Azi<0:
Azi=Azi+360
返回Azi,Ele
如何确保上面的代码最终不会计算负仰角

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