【问题标题】:Calculate the end of sunrise/start of sunset计算日出结束/日落开始
【发布时间】:2016-05-05 10:04:23
【问题描述】:

在 PyEphem 中,我可以计算日出时间。没问题。我想要的是:太阳的底部何时似乎与地平线分开?一种明显但不正确的方法是当太阳中心位于 1/2 *(太阳大小,以度为单位)时。由于大气影响,这离我们很遥远。

日落的同样问题。太阳的底部何时触及地平线?

对此有标准更正吗?与将日出/日落的地平线设置为 -34 角分一样吗?

【问题讨论】:

    标签: pyephem


    【解决方案1】:

    The PyEphem page for Rising, Transit, Setting 建议为了匹配 USNO 的太阳升起年历数据, 您可以关闭折射(通过将气压设置为零) 并把地平线比正常低 34 分:

    >>> import ephem
    >>> atlanta = ephem.Observer()
    >>> atlanta.pressure = 0
    >>> atlanta.horizon = '-0:34'
    >>> atlanta.lat, atlanta.lon = '33.8', '-84.4'
    >>> atlanta.date = '2009/09/06 17:00' # noon EST
    >>> print(atlanta.previous_rising(ephem.Sun()))
    

    现在如果你将地平线向上移动太阳的整个视直径, previous_rising 将告诉太阳的顶部何时到达 这个视界(假设没有折射),这将恰好发生在 太阳的下肢到达太阳下方 34 弧分处 正常视界(再次假设没有折射), 其中(按照 USNO 的做法)是 折射时太阳的下肢将处于正常地平线 被考虑在内。

    请注意,如标题下所述 技术定义和计算细节this page at the USNO site, USNO 的太阳升起/落下时间告诉我们何时太阳的中心 在地平线以下 50 分钟弧度,无论实际视在 那时太阳的直径。 实际上,他们假设太阳半径为 16 弧分 和 34 分钟的屈光度。 此外,在上升/设置计算的准确性小标题下, 值得注意的是,“即使在理想条件下(例如,海上晴朗的天空),计算上升或落下的时间也可能有一分钟或更长时间的误差” 由于不可预测的大气条件。 如果你在更高的纬度,效果会变得更糟。

    鉴于此,一个合理的程序可能是假设 太阳直径为 32 弧分;然后预测结束 日出而不是开始,你会换行

    >>> atlanta.horizon = '-0:34'
    

    在 PyEphem 示例代码中

    >>> atlanta.horizon = '-0:02'
    

    【讨论】:

      【解决方案2】:

      我有一个似乎可行的近似解决方案。 如果有人知道更优雅的解决方案。请大声说出来。

      日出时:太阳的中心大约在-34' - (太阳直径)/2。 太阳的顶部似乎在地平线上。 假设-34' 修正在地平线附近是恒定的。 (一个很大的假设)

      当太阳向上移动 1 个太阳直径时,太阳的底部将在地平线上。

      今天早上:

          time_of_sunrise = obs.previous_rising(ephem.Sun(), ephem.now())
          obs.date = time_of_sunrise
          sun.compute(obs)
          angle_sun_center_sunrise = sun.alt / degree ( about -0.84' )
          sun_dia_at_sunrise = sun.size / 3600
      

      使用二分搜索查找日出的终点。伪代码:

          adjTm = 6 minutes
          sunriseEnd = time_of_sunrise + adjTm
          obs.date = sunriseEnd
          sun.compute(obs)
      

      检查 sun.alt 是否在 (angle_sun_center_sunrise + sun_dia_at_sunrise) 的 X 容差范围内

      If out of tol.:
          set adjTm = adjTm/2
          adjust obs.date by sunriseEnd +/- adjTm
      repeat until within tolerance.
      

      日落也是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多