PyEphem 日出和日落时间错误(python)

问题描述 投票:0回答:2

我在使用 pyEphem 获取我所在位置的准确日出和日落时间时遇到一些困难。我已经阅读了一些问题和答案,并查看了文档,但仍然不完全清楚我做错了什么。这是代码:

import datetime as dt
import ephem as ep

date = dt.datetime.now().strftime("%Y/%m/%d 00:00:00")
lat, lon = [<redacted>, -1.4147]

# Use lat and lon to create ephem observer instance and update with given
# values
my_location = ep.Observer()
my_location.lat = lat
my_location.lon = lon
my_location.date = date

# Get sunrise of the current day
sunrise = my_location.next_rising(ep.Sun())
sunset = my_location.next_setting(ep.Sun())

print "Given date: {0}".format(date)
print "Detected coordinates: {0}, {1}".format(lat, lon)
print "Sunrise at {0}".format(sunrise)
print " Sunset at {0}".format(sunset)

产生以下输出:

Given date: 2015/01/31 00:00:00
Detected coordinates: <redacted>, -1.4147
Sunrise at 2015/1/31 12:28:02
 Sunset at 2015/1/31 22:47:39

我期待的是获得午夜后(今天早上)第一次日出的时间以及之后第一次日落的时间。现在我碰巧知道太阳在今天 12:30 之前升起(我在光天化日之下上午 9:30 走在路上),而且我不认为存在 UTC 偏移,因为我知道我的时区。

我错过了什么?

python time pyephem
2个回答
4
投票

如果您提供经度和纬度作为原始浮点数,则 PyEphem 假定您已经完成将它们转换为弧度的工作。值 1.4147 弧度几乎是地球一周的八分之一。如果您希望 PyEphem 为您转换度数,请尝试使用字符串来表示它们,而不是 PyEphem 将被迫转换:

lat, lon = [<redacted>, '-1.4147']

您可以通过打印回值来检查值是否设置正确:

print my_location.lat
print my_location.lon

要求

Observer
对象打印回其值是查明其设置是否正确的最佳方法。

您会注意到,新的 Skyfield 库从 PyEphem 的错误中吸取了教训,根本不进行自动转换,但要求将值明确指定为弧度或度数!


0
投票

如何更改以反映 EST -4:00?

© www.soinside.com 2019 - 2024. All rights reserved.