【问题标题】:How to determine if it is daytime (light outside?) in python using ephem librarypython - 如何使用ephem库在python中确定它是否是白天(外面有光?)
【发布时间】:2014-12-17 13:35:07
【问题描述】:

ephempython库可以完美判断下一个日出日落。

我想知道的是在某个时刻外面是否有光。在 ehem 中是否有一个简单的函数调用返回 this?

【问题讨论】:

  • 计算观察者的太阳高度(Sun(observer).alt)(正值表示太阳升起)。将observer.horizon 调整为different definitions of dusk/dawn (twilight)
  • if now > sunrise && now < sunset?
  • 感谢您的建议,这可能是解决方案,需要做一些测试。如果 datetime.now() > previous_rising 和 datetime.now()
  • datetime.now() 是错误的函数。使用datetime.utcnow()ephem.now()。你可以用 Python 写a < x < bephem 本身在内部使用类似这样的东西:is_up = lambda sun=Sun(observer): (sun.alt + sun.radius - observer.horizon) > 0

标签: python light pyephem


【解决方案1】:

像美国海军天文台这样的组织对“外面很亮”有定义——您可以在此处找到 USNO 的定义:

http://aa.usno.navy.mil/faq/docs/RST_defs.php

一旦您选择了所需的定义,请向 Sun 对象询问其 alt 并将该值与来自 USNO 的定义中的高度进行比较。我强烈建议您使用alt,因为 PyEphem 的计算速度很快。相反,如果您询问日出和日落,那么您将 PyEphem 发送到非常昂贵的迭代搜索中,它必须不断尝试一天中的不同时间,直到最终发现日出和日落的时刻——您真的不感兴趣,这听起来像。您只想将太阳的高度与您自己的阈值进行比较,以判断“外面是否亮”。

请注意,alt 将以弧度表示,因此您需要在比较之前转换您选择的度数:

导入 ehem

s = ephem.Sun()
sf = ephem.city('San Francisco')
s.compute(sf)
twilight = -12 * ephem.degree
print 'Is it light in SF?', s.alt > twilight

【讨论】:

  • 感谢您的解释,非常有用和清晰。我唯一没有得到的是暮光公式中的 -12 值。你能解释一下吗?
  • USNO 对暮光的定义之一是太阳在地平线以下 12 度时。
猜你喜欢
  • 2013-02-09
  • 2020-09-27
  • 2016-12-28
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 2011-01-20
相关资源
最近更新 更多