我对轨道力学领域很陌生,目前正在为以下问题苦苦挣扎,这应该很容易用 Skyfield 解决,但我对所有不同的坐标系和它们之间的转换有点不知所措。
我Topos
在地球上有一个位置和Topos
一个 LEO 卫星的位置。我正在考虑他们之间的视线。我想确定沿着这条路径的位置的纬度和经度,它与大气的特定层相交。
一个例子是中间层和一个基于纬度和经度给出的大约 100 公里处的属性的现有数据集。交叉点将使我能够更好地理解这些属性对与卫星通信的相互作用。
我尝试直接使用 Skyfield 进行此操作,但最终得到的Apparent
对象是我无法将其转换回地球上的纬度、经度。首先,我用三角法确定了从地球到达到 100 公里高度的点的距离。
然后,我在地球上的位置,并使用不变的仰角,方位角来保持路径的方向,最后加上计算的距离到达这个位置。我认为我需要Geocentric
使用一个对象subpoint()
才能获得该位置所需的纬度、经度。
这是我到目前为止所拥有的:
from skyfield.api import load, Distance
from skyfield.toposlib import Topos
import numpy as np
ts = load.timescale()
earth_position = Topos('52.230039 N', '4.842402 E', elevation_m=10)
space_position = Topos('51.526200 N', '5.347795 E', elevation_m=625 * 1000)
difference = (space_position - earth_position).at(ts.now()).altaz()
distance_to_height = 100 / np.sin(difference[0].radians)
position = earth_position.at(ts.now()).from_altaz(alt_degrees=difference[0].degrees, az_degrees=difference[1].degrees, distance=Distance(km=distance_to_height))
我已经多次阅读文档,偶然发现frame_latlon(frame)
了通用 ICRF 对象,但不知道如何进一步进行。
用纬度和经度完全三角学尝试也没有产生预期的结果。
不幸的是,我真的没有任何经过验证的结果可以用来更容易地解决这个问题。再次用三角函数想象它,很明显,卫星位置高度的增加会使交叉点的纬度、经度更接近地球上的位置。降低高度将使这个交叉点更靠近卫星。