gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:31 27 4
gpt4 key购买 nike

我在卫星轨道的地心惯性坐标 (ECI) 中有位置 (x,y,z) 和速度 (Vx,Vy,Vz) 向量,并最终希望以大地坐标(纬度、经度、和海拔高度)。

根据这个other Stack Overflow question看来我需要转换为以地球为中心的地球固定 (ECEF) 坐标作为中间步骤(因此 ECI --> 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)

输出:位置(x=5713846.540659178,y=3298890.8383577876,z=0.0)速度(x=-3982.305479346745, y=6897.555421488496, z=0.0)

最佳答案

有许多不同的地心惯性坐标系,答案取决于您的坐标系在哪个坐标系中。

最常见的是所谓的 J2000;这是根据 2000 年 1 月 1 日地球的方向定义的。另一个常见的是 GCRF,它几乎相同(在 80 毫弧秒内)。

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

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)

关于python - 如何将地球中心惯性 (ECI) 坐标转换为地球中心地球固定 (ECEF) AstroPy?其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46433702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com