【问题标题】:Given the latitude and longitude, how can I tell if it's daylight?鉴于纬度和经度,我怎么知道它是否是白天?
【发布时间】:2011-09-12 08:53:12
【问题描述】:

我正在编写一个 Python 程序,该程序需要确定它是否是日出后,只给定当前的 UTC 时间和目标纬度和经度。我看到应用程序一直在做这种事情,但我不知道它是如何完成的。有什么想法吗?

【问题讨论】:

标签: python time astronomy


【解决方案1】:

【讨论】:

  • 正是我需要的!非常感谢。
【解决方案2】:

算法的完整布局是here

真的没有太多要补充的。引用文档中的 10 点将其分解为简单的重现步骤,这些步骤实际上可以用任何语言实现。

【讨论】:

    【解决方案3】:

    只是在谷歌上快速搜索一下,我发现this. NOAA 日出/日落和太阳位置计算器中的计算基于 Jean Meeus 的天文算法方程。经验证,对于纬度 +/- 72° 之间的位置,日出和日落结果的准确度在 1 分钟内,而在这些纬度之外的位置则在 10 分钟内。

    计算细节的详细解释可以从那个页面和here.找到

    【讨论】:

    • 单链接答案可以很容易位腐烂。您应该至少在答案中提供链接的简短摘要。
    • 海报也应该至少通过搜索引擎运行他们的问题。我试图以尽可能有用的方式传达这一要求。
    • 如果您认为问题不好,那么不好的答案不是适当的回答。
    • 实际上,我会在自己的搜索中遇到该链接,您说得对,这正是我所需要的,只是在 Javascript 中。我希望有一个 Python 模块可以解决这样的问题,而不必基于此重写它。
    【解决方案4】:

    您需要正常工作™ 的东西吗?使用高级语言。而且你知道它总是有效的。你怎么能相信 122 行先进的天体物理学?你不能。但您始终可以信任 PHP。

    >>> def is_day(lat, lon): # optinally adjust zenith (currently 96) at the end of the line
    ...   return subprocess.check_output(["php","-r","""date_default_timezone_set("GMT");\n$a=date_sunrise(time(),SUNFUNCS_RET_DOUBLE,{0},{1},{2},0);\n$b=date_sunset(time(),SUNFUNCS_RET_DOUBLE,{0},{1},{2},0);\n$t=date("H")+date("i")/60+date("s")/3600;\necho($a<$b?($t>$a&&$t<$b):($t>$a||$t<$b))?"day":"night";""".format(lat,lon,96)])=="day"
    ...   #                                                                                                                                                                                                                                                                                                                             ^^ optionally adjust zenith here
    ... 
    >>> is_day(-33,151) # Sydney
    True
    >>> is_day(0,0) # Some hundred km off the coast of Africa
    False
    >>> __import__("datetime").datetime.utcnow()
    datetime.datetime(2012, 2, 10, 22, 29, 30, 365019)
    >>> 
    

    【讨论】:

      猜你喜欢
      • 2018-08-17
      • 1970-01-01
      • 2011-04-03
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多