1

我想要開發的腳本使用衛星的笛卡爾座標(XYZ),並結合距離某個位置的距離,仰角和方位角,然後我拿一顆衛星的軌道信息,並在給定的時間獲得該衛星下的地面經度/緯度。特定時代下的衛星(笛卡爾座標)下的地面經度/緯度

距離這一步更遠一步:想象衛星在海拔300公里處穿透大氣的信號。在這個高度爲300公里的特定時刻,我需要計算地面經度/緯度。

在pyemph模塊中,似乎已經有一種方法(ephem.readtle)可以實現這一點,但僅用於TLE(兩行元素)數據。我想用衛星的笛卡爾座標來開發這個。有沒有這樣的方法?或者也許有人在這個 域有經驗可以指出我在正確的方向。

類似的問題已經存在referring to ECEF from Azimuth, Elevation, Range and Observer Lat,Lon,Alt,但它不是同一個問題。

這裏是我已經開發: - 衛星直角座標系,XYZ - 方位角,仰角和地面站 衛星的範圍 - 在緯度,經度,高度地面站座標,海拔

這裏是我需要: - 特定時代的衛星下的地面經度/緯度,特別是大氣穿刺點(來自衛星的信號穿透大氣的點)的高度爲300公里。

+0

衛星的(SV)座標在XYZ給出,半徑距離地球大約26000公里。地面軌跡是從衛星的XYZ計算出來的。現在想象一下從sv到地面的一條線。我們假設sv在同一條直線上,但是300公里的高度(我們稱之爲大氣穿透點),而不是sv大約爲20000(26000負地球半徑)。這意味着sv的距離爲(300/sin e)km,其中'e'是仰角。我想知道的是這顆衛星位於此範圍(地球上空300公里)的地面軌跡。 – pymat

回答

0

我發現我一直在尋找通過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_deg