首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在matlab的"lla2eci“和"sgp4.propagate”之间得到了区别?

为什么我在matlab的"lla2eci“和"sgp4.propagate”之间得到了区别?
EN

Stack Overflow用户
提问于 2019-12-18 02:39:29
回答 1查看 198关注 0票数 1

我在这方面没有经验,但在过去的几天里,我用python编写了一些跟踪(希望是) ISS的代码。我已经做了数学计算,并让这方面的事情工作,但只有当我使用matlab的lla2eci注入卫星位置。为了得到正确的答案,我从实时数据中获取卫星子点的纬度和经度,并使用matlab将其转换为eci。这个方法给出了国际空间站正确的视角(方位角和仰角),我已经用iss.compute(主页)用pyephem方法确认了它们,其中"home“就是我的lla。

我正在将matlab的lla2eci与satellite.propagate(...)在time = 2019 12 16 8 53 19,我得到了以下结果:

Lla2eci传播: x,y,z= (3873.9,-902.18,-4969.9) sgp4传播: x,y,z= (-4082.5,3458.3,-4195.1)

我一定是漏掉了什么!任何帮助都是非常感谢的,我很高兴回答任何问题以澄清。

EN

回答 1

Stack Overflow用户

发布于 2019-12-21 07:03:32

看这个问题,似乎你没有考虑到海拔高度?

既然你的目标是使用python代码跟踪国际空间站,我可以建议一种稍微不同的方法吗?

空间对象的

  1. TLE值位于:https://www.space-track.org/,因此请在此处注册。
  2. 然后使用sgp4(https://pypi.org/project/sgp4/)和https://pypi.org/project/spacetrack/(https://pypi.org/project/spacetrack/)库在python中查找卫星的位置。

示例代码如下所示:

代码语言:javascript
复制
from sgp4.earth_gravity import wgs84
from sgp4.io import twoline2rv
from spacetrack import SpaceTrackClient 
from datetime import datetime

#generate TLE from database    
st = SpaceTrackClient('YOUR_USERNAME', 'YOUR_PASSWORD')
tle = st.tle_latest(norad_cat_id=[<ISS_NORAD_CAT_ID>], ordinal=1, format='tle')

line1 = tle[:69]
line2 = tle[70:-7]

#create satellite object
satellite = twoline2rv(line1, line2, wgs84)

date_time = datetime.utcnow()

#find position
sat_position, sat_velocity = satellite.propagate(date_time.year, date_time.month,... 
                   date_time.day, date_time.hour, date_time.minute, date_time.second)

使用您自己的用户名、密码和norad ID.。欢迎使用stackoverflow :)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59380239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档