2

试图计算太阳下一次落山的时间,我得到了明天的值 - 但我正在计算太阳肯定在地平线之上!

m 是我的观察点;这就是我在终端上得到的:

>>> ephem.now()
2012/10/16 16:02:00
>>> print m.next_setting(ephem.Sun(), use_center=True)
2012/10/17 16:38:36

那是明天的时间。还:

>>> m.previous_setting(ephem.Sun()) < ephem.now()
False
>>> m.previous_setting(ephem.Sun())
2012/10/16 16:42:14

所以 previous_setting 是在未来。

我哪里错了?

4

1 回答 1

0

next_setting()previous_setting()函数参考的当前值ephem.now()。相反,他们寻找对象之前或之后的日期.date——因此,如果观察者以某种方式被设置为未来的某一天,Observer那么你得到的结果只会发生在我自己在笔记本电脑上的实验中。.date如果我完全使用您提供的日期和时间,以下是我得到的设置时间:

import ephem
m = ephem.Observer()
m.long = '7:42:00'
m.lat = '45:04:00'
m.date = '2012/10/16 16:02:00'

print m.next_setting(ephem.Sun(), use_center=True)
# --> 2012/10/16 16:40:27

print m.previous_setting(ephem.Sun())
# --> 2012/10/15 16:44:05

您可以尝试运行此脚本并查看结果吗?当前ephem.__version__在我的笔记本电脑上显示的是 3.7.5.1,以防万一我们之间存在差异。

所以:如果你看到这样奇怪的结果,那么ephem.now()你需要调查观察者的.date属性和你得到的日落时间之间的关系,而不是打印和比较日落时间的值。如果您可以生成一个像我上面展示的那样的小示例脚本,它会设置自己的时间,而不是依赖于now()显示 PyEphem 正在犯的错误(因为当我看到您的问题时,我now()的显然与你原来的“现在”!),然后我会尽力追查问题。

于 2012-10-18T23:06:12.960 回答