我正在创建一个应用程序来预测卫星可见的通过。在应用程序中,我使用“if”语句来决定卫星是否可见。
如下所示;
if satellite.neverup is False and satellite.circumpolar is False:
observer.next_pass(satellite)这种计算对大多数LEO卫星来说都很好。然而,我发现了一些奇怪的结果。next_pass函数在satellite.compute(observer)之前和之后使用,返回不同的值。
下面的代码将复制结果。
import ephem
line_0 = '0 SL-3 R/B'
line_1 = '1 12904U 81103B 14252.72400340 .00001812 00000-0 13444-3 0 5754'
line_2 = '2 12904 081.1813 349.2718 0030677 147.5032 212.8569 15.02708918340741'
target = ephem.readtle(line_0,line_1,line_2)
site = ephem.Observer()
site.lon = '151:43:00'
site.lat = '-27:26:00'
site.elevation = 400
site.name = 'test facility'
site.horizon = '40:00:00'
site.date = '2014/9/20 00:29:10'
print ephem.__version__
print site.next_pass(target)
target.compute(site)
print [target.neverup,target.circumpolar]
print site.next_pass(target)结果如下:
3.7.5.3
(2014/9/20 01:55:43, 303:49:09.6, 2014/9/20 00:25:02, 30:44:01.7, 2014/9/20 00:30:10, 164:08:09.1)
[False, False]
(None, None, None, None, None, None)如何避免这种结果的改变?我哪里错了?
提前谢谢你。
发布于 2014-09-22 04:41:17
在玩了一段时间,并使用其他TLE的,我有一个想法是,永不上升是没有正确地解释你的地平线。可能是使用00:00:00来定义布尔值;如果将地平线更改为30:00,则输出将变为:
3.7.5.3
(2014/9/20 01:55:43, 303:49:09.6, 2014/9/20 00:25:02, 30:44:01.7, 2014/9/20 00:30:10,164:08:09.1)
[False, False]
(2014/9/20 12:06:25, 191:15:15.1, 2014/9/20 12:08:23, 82:43:37.8, 2014/9/20 12:10:20, 1:10:09.6)为了进一步调试,我们可以在下一次测试时打印出卫星的高度。即
info = site.next_pass(target)
site.date = info[0]
target.compute(site)
print target.alt这意味着:
31:07:31.3如果我们把海拔调到34:00左右,我们会得到你的名单。
我的猜测是,“永不上升”没有考虑到您定义的视界,但是next_pass考虑了。
https://stackoverflow.com/questions/25966098
复制相似问题