如何将中心的惯性(ECI)坐标转换为固定(ECEF)Astropy的地球中心地球?其他



i具有位置(x,y,z)和速度(vx,vy,vz,vz)载体中心的惯性坐标(ECI)的卫星轨道,最终想最终想成为与大地坐标(纬度,经度和高度)。

根据其他堆栈溢出问题,似乎我需要将固定的地球固定(ECEF)坐标转换为中间步骤(SO ECI-> eci-> ecef-> ecef-> lat/lon/alt)。

我知道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)

out:位置(x = 5713846.540659178,y = 3298890.8383577876,z = 0.0)速度(x = -3982.305479346745,y = 6897.55542148496,z = 0.0)

有许多以不同的地球为中心的惯性框架,答案取决于您的坐标。

最常见的是所谓的J2000;它定义为2000年1月1日地球方向的W.R.T。另一个常见的是GCRF,它几乎是相同的(在80 milli arcseconds之内)。

如果是这两个中的任何一个,您应该能够创建一个Astropy EarthLocation对象并访问latlonheight属性,例如So

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)

最新更新