【问题标题】:PyEphem: What is the epoch attribute for EarthSatellitePyEphem:EarthSatellite 的时代属性是什么
【发布时间】:2014-04-09 08:58:12
【问题描述】:

我正在使用 PyEphem 预测卫星通过星座设计项目中的某个点。

我会用轨道时代来回答我的问题,但我想确定一下。这是一个最初提出问题的示例:

什么有效

这是我用 PyEphem 得到的结果(每次访问只有一个日期),与 STK 相比(见下文,看看我是如何获得它的):

2014/4/27 03:37:59
2014/4/28 03:15:59
2014/4/29 02:53:59
2014/4/30 02:31:59
2014/5/1 02:09:59
2014/5/2 01:47:59
2014/5/5 00:42:09
2014/5/6 00:20:09
2014/5/6 23:58:09
2014/5/7 23:36:19
2014/5/8 23:14:19
2014/5/9 22:52:19
2014/5/10 22:30:19

27 Apr 2014 03:43:08.427
28 Apr 2014 03:20:44.792
29 Apr 2014 02:58:21.163
30 Apr 2014 02:35:57.546
1 May 2014 02:13:33.952
2 May 2014 01:51:10.384
3 May 2014 01:28:46.848
4 May 2014 01:06:23.358
5 May 2014 00:43:59.92
6 May 2014 00:21:36.571
6 May 2014 23:59:13.310
7 May 2014 23:36:50.173
8 May 2014 23:14:27.216
9 May 2014 22:52:04.550
10 May 2014 22:29:42.571

为 PyEphem 设置

import numpy as np
import ephem, math


sat = ephem.EarthSatellite()
sat._e = 1.4538821258014423e-09
sat._M = 136.92
sat._ap = 0.0
sat._raan = 199.662
sma = 6878.13631
sat._n = 86400  * np.sqrt(398600.4418/sma**3) / (2*np.pi)
sat._epoch = '2014/02/14 13:00:00'
sat._inc = 46.8
satellite = sat
target = ephem.Observer()
target.lon, target.lat = '6.9', '46.8'
tr = ephem.Date('2014/04/26 16:00:00')
tend = ephem.Date('2014/05/13 16:00:00')
satellite.compute(target)
ephemeris = []

while tr < tend:
    target.date = tr
    satellite.compute(target)
    alt = satellite.alt
    h = satellite.range / 1000
    tr = ephem.Date(tr +  10.0*ephem.second)
    if alt <=0: 
        tr = ephem.Date(tr + 60.0 * 10 * ephem.second)
        continue
    Ona = np.arctan(6378 * np.cos(alt)/(h + 6378 * np.sin(alt))) # Target ONA

    alt = np.degrees(alt)
    if np.fabs(math.degrees(Ona)) > 5 :continue
        ephemeris.append(tr)
print ephemeris

这里是STK设置(实验日期相同):STK satellite setup

所以这几乎是完美的,即使我不明白为什么 STK 和 PyEphem 纪元之间存在这一小时的差异,我怀疑与 UTCG 的东西有关。

什么没有

现在,如果我将倾角增加到 49,我会得到这些结果(首先是 PyEphem,然后是 Stk):

2014/5/12 00:01:19
2014/5/12 23:39:29

5 May 2014 02:45:25.831
6 May 2014 02:23:14.987
7 May 2014 02:01:06.514
8 May 2014 01:38:58.566
9 May 2014 01:16:50.962
10 May 2014 00:54:43.643
11 May 2014 00:32:36.592
12 May 2014 00:10:29.850
12 May 2014 23:48:23.509

通过将纪元设置为2014/02/14 11:35:00,我得到了预期的结果:

2014/5/5 02:43:59
2014/5/6 02:22:09
2014/5/7 02:00:19
2014/5/8 01:38:29
2014/5/9 01:16:39
2014/5/9 01:16:49
2014/5/10 00:54:49
2014/5/10 00:54:59
2014/5/11 00:33:09
2014/5/12 00:11:19
2014/5/12 23:49:29

由于第一个示例给出了令人满意的结果,我不会说我的模型造成了差异,但它可以。所以我的问题是,我在这个纪元时间做错了什么?

【问题讨论】:

  • Ona 的值是多少?在将倾角提高到 49° 的情况下,与倾角较低时相比,第二个 if 语句的触发次数超过了 200 次。什么是 ONA,为什么要丢弃 ONA 大于 5 或​​小于 -5 的时刻?
  • Ona 是偏离天底角,它是根据Geospatial technology for earth observation, p81 中的公式从高程计算得出的。抛出的时刻是地面站不在卫星视场内的时刻,由其偏离天底角定义,此处为 5 度。

标签: pyephem satellite


【解决方案1】:

通过将 STK 和我的模型中的纪元时间设置为实验的开始,这里是 2014/04/26 16:00:00,我不再有结果的变化了。

我知道卫星位置的误差会随着平均异常时期和分析时间之间的差异成比例地增长,但我不明白为什么这个误差会导致结果发生变化而不是完全不同的结果。

请注意,这里的仰角和偏离天底角之间的转换非常好,前提是值h + R,卫星与地球中心之间的距离(range + Earth_radius),通过地球上的高度进行校正,即h + R + target_altitude.

我将我的问题标记为已解决,因为我获得了预期的结果,但欢迎对移位效果进行解释!

借此机会感谢 Brandon Rhodes 在 PyEphem 上所做的出色工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2020-10-10
    • 2019-09-13
    • 2013-03-17
    • 2015-02-10
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多