我要开发的脚本使用来自卫星的笛卡尔坐标(XYZ),并结合来自某个位置的距离、高度和方位角,然后获取卫星的轨道信息,并在给定时间获得该卫星下的地面经度/纬度。
再往前一步:想象卫星发出的信号恰好在海平面300公里处穿透大气层。当高度为300 At时,我需要计算地面的经度/纬度。
在pyemph模块中,似乎已经有一个方法(ephem.readtle)可以实现这一点,但只针对TLE (两行元素)数据。我想用卫星的笛卡尔坐标来开发这个。现在已经有这样的方法了吗?或者,在这个领域有经验的人可以给我指明正确的方向。
referring to ECEF from Azimuth, Elevation, Range and Observer Lat,Lon,Alt已经存在类似的问题,但它不是相同的问题。
这是我已经开发的:-卫星笛卡尔坐标,XYZ -方位角,卫星到地面站的高度和高度-地面站坐标的经纬度,经度,海拔高度
这是我需要的:-地面经度/卫星下的纬度在特定的时期,特别是在大气中的穿刺点(来自卫星的信号穿透大气层的点)是300公里高度。
发布于 2016-10-07 19:43:37
我通过this找到了我想要的东西:
def ionospheric_pierce_point(self, dphi, dlambda, ele, azi):
Re = 6378136.3 # Earth ellipsoid in meters
h = cs.SHELL_HEIGHT * 10**3 # Height of pierce point meters, and where maximum electron density is assumed
coeff = Re / (Re + h)
lat_rx = dphi
long_rx = dlambda
# Degrees to radians conversions
ele_rad = np.deg2rad(ele)
azi_rad = np.deg2rad(azi)
lat_rx_rad = np.deg2rad(lat_rx)
long_rx_rad = np.deg2rad(long_rx)
psi_pp = (np.pi / 2) - ele_rad - np.arcsin(coeff * np.cos(ele_rad)) # Earth central angle between user and the Eart projection of the pierce point, in radians
psi_pp_deg = np.rad2deg(psi_pp)
lat_pp = np.arcsin(np.sin(lat_rx_rad)*np.cos(psi_pp) +
np.cos(lat_rx_rad)*np.sin(psi_pp)*np.cos(azi_rad)) # in radians
if (lat_rx > 70 and ((np.tan(psi_pp)*np.cos(azi_rad)) > np.tan((np.pi/2) - lat_rx_rad))) or (lat_rx < -70 and ((np.tan(psi_pp)*np.cos(azi_rad + np.pi)) > np.tan((np.pi/2) + lat_rx_rad))):
long_pp = long_rx_rad + np.pi - np.arcsin((np.sin(psi_pp)*np.sin(azi_rad)) / np.cos(lat_pp))
else:
long_pp = long_rx_rad + np.arcsin((np.sin(psi_pp)*np.sin(azi_rad)) / np.cos(lat_pp))
lat_pp_deg = np.rad2deg(lat_pp)
long_pp_deg = np.rad2deg(long_pp)
return lat_pp_deg, long_pp_deghttps://stackoverflow.com/questions/39143278
复制相似问题