Python astropy:将速度从ECEF转换为J2000坐标系

时间:2018-03-10 21:29:35

标签: coordinate-transformation astropy

我编写了一个代码,用于使用熵将地球固定系统的坐标转换为惯性系:

txid_current()

如何对速度进行转换?

1 个答案:

答案 0 :(得分:4)

认为您可以执行以下操作:

from astropy import coordinates as coord
from astropy import units as u
from astropy.time import Time

now = Time('2018-03-14 23:48:00')

xyz = [-6340.40130292, 3070.61774516, 684.52263588]
vxvyvz = [-10.90, 56.4, -74.6]

# put velocities into cartesian differential
cartdiff = coord.CartesianDifferential(*vxvyvz, unit='km/s')
cartrep = coord.CartesianRepresentation(*xyz, unit=u.km, differentials=cartdiff)

gcrs = coord.ITRS(cartrep, obstime=now)
itrs = gcrs.transform_to(coord.GCRS(obstime=now))

# print position
print(itrs.cartesian.xyz)

# print velocity
print(itrs.cartesian.differentials)

但是,我并不完全确定它能满足您的要求。或者,在astropy v.3.0.1中,ITRS类似乎能够获取速度值,因此您可以使用

now = Time('2018-03-14 23:48:00')
pos = [-6340.40130292, 3070.61774516, 684.52263588]*u.km
vel = [-10.90, 56.4, -74.6]*u.km/u.s

gcrs = coord.ITRS(x=pos[0], y=pos[1], z=pos[2], v_x=vel[0], v_y=vel[1], v_z=vel[2], representation_type='cartesian', differential_type='cartesian', obstime=now)
itrs = gcrs.transform_to(coord.GCRS(obstime=now))

# print position
print(itrs.cartesian.xyz)

# print velocity
print(itrs.cartesian.differentials)

两个版本给出相同的答案,但第二个版本更整洁。