1

我在衛星軌道的地球居中慣性座標(ECI)中有位置(x,y,z)和速度(Vx,Vy,Vz)矢量,並最終想要以大地座標(緯度,經度,&高度)。如何將以地球爲中心的慣性(ECI)座標轉換爲以地球爲中心的固定(ECEF)AstroPy?其他?

根據此other Stack Overflow question,我似乎需要將中心步驟(​​如ECI→ECEF→Lat/Lon/Alt)轉換爲地心居中固定(ECEF)座標。

我知道ECI和ECEF共享相同的原點(地球質心)和指向北極的相同z軸。但是,我不確定將ECI轉換爲ECEF需要做什麼實際方程或調整。

否則,如果有人知道任何Astropy上的任何罐裝轉換或類似的東西,那將會更好。 (我沒有看到ECI是Astro Py或Space Py的一個選項)。

這是我用來生成我的軌道,並獲得位置和速度向量的代碼。

from scipy.constants import kilo 
import orbital 
from orbital import earth, KeplerianElements, Maneuver, plot, utilities 
from orbital.utilities import Position, Velocity 
import matplotlib.pyplot as plt 
import numpy as np 

orbitPineapple = KeplerianElements.with_period(5760, body=earth, 
e=0.05, i=(np.deg2rad(0)), arg_pe=(np.deg2rad(30))) 
plot(orbitPineapple) 
plt.show() 
print(orbitPineapple.r) 
print(orbitPineapple.v) 

輸出: 位置(X = 5713846.540659178,Y = 3298890.8383577876,Z = 0.0) 速度(X = -3982.305479346745,Y = 6897.555421488496,Z = 0.0)

+0

latlonheight屬性,您可以包括一些exemplaric投入和預期產出?這樣可以更容易地找到實際適用於您的解決方案。 – MSeifert

+0

我將編輯我的問題以包含我用於生成軌道並獲取位置和速度矢量的代碼。 – Rose

+0

所以現在我在ECI上有一個樣本衛星軌道的位置和速度。位置(x = 5713846.540659178,y = 3298890.8383577876,z = 0.0) 速度(x = -3982.305479346745,y = 6897.555421488496,z = 0.0)我想獲取衛星在緯度,經度和高度相同的位置。我讀到我首先需要從ECI轉換到ECEF才能轉換爲經緯度。問題是ECI是一個固定的座標系,不像地球一樣隨着ECEF和lat/lon/alt旋轉。我不確定如何將ECI轉換爲ECEF。 – Rose

回答

0

有許多不同的以地球爲中心的慣性框架,答案取決於哪一個你有你的座標。

最常見的是所謂的J2000;這是2000年1月1日定義爲地球的方向。另一個常見的是GCRF,它幾乎相同(在80毫秒內)。

如果它要麼這兩個,你應該能夠創建一個astropy EarthLocation對象和訪問像這樣

from astropy import coordinates as coord 
from astropy import units as u 
from astropy.time import Time 
now = Time('2017-09-27 12:22:00') 
# position of satellite in GCRS or J20000 ECI: 
cartrep = coord.CartesianRepresentation(x=5713846.540659178, 
             y=3298890.8383577876, 
             z=0., unit=u.m) 
gcrs = coord.GCRS(cartrep, obstime=now) 
itrs = gcrs.transform_to(coord.ITRS(obstime=now)) 
loc = coord.EarthLocation(*itrs.cartesian.cartrep) 
print(loc.lat, loc.lon, loc.height) 
+0

時間會怎樣?假設我想獲得位置(x = -2686197.06,y = -6402017.61,z = 10956.56)和UTC時間(今天)2017/09/28 16:53:40.293或559889620.2930000的ISS軌道的緯度/經度/在J2000中。 – Rose

+0

使用給定位置的正確時間對於從GCRS到ITRS的轉換是很重要的。所以如果你有時間對應''astropy.time.Time'對象中存儲的'xyz'中的位置'now',你應該使用'itrs = coord.GCRS(cartrep,obstime = now).transform_to(coord .ITRS(obstime = NOW))'。我已經編輯了我的答案以反映這 –

+0

我嘗試了新版本並得到了一個類型錯誤:'TypeError:transform_to()爲'itrs = gcrs.transform_to(coord。)'行獲得了一個意外的關鍵字參數'obstime''。ITRS,obstime =現在)' – Rose

相關問題