PHP date_sunrise和date_sun_info给出不同的结果

时间:2017-01-11 13:02:31

标签: php date-sunrise

我有一个网络摄像头网站,我想显示实际一天的日出时间。所以我在PHP中使用了date_sunrise函数来达到这个目的。除坐标外,它还将太阳天顶值作为输入。

我了解到日出的正确天顶是90.8333。 90°是与太阳中心(即地平线)的理论角度。考虑到太阳和折射的直径,增加了0.8333(16弧分+ 34弧分除以60)。

但是我注意到这个输入给了其他网站不同的日出时间。最可靠的来源必须是美国海军天文台的天文应用部门。查看他们的online calculator并阅读the description of their method。据说他们还使用天顶值90.8333来计算日出。

然后我发现php函数date_sun_info是一个包含各种数据的数组,它给出了正确的日出时间(对应于AAD的结果)。

要从date_sunrise函数获得相同的日出时间,我必须输入90.5左右的天顶值。

为什么date_sunrise与zenith = 90.8333不能给出与date_sun_info相同的结果?

3 个答案:

答案 0 :(得分:4)

根据http://php.net/manual/en/function.date-sunrise.php,默认的Zenith参数取自配置文件(参见ini_get())

有问题的.ini是PHP安装中的php.ini。它有以下几行(它们在这里被注释掉,但除非在.ini文件中被覆盖,否则将被用作默认值)。

import re 

s = '''aaa
bbb|30s
ccc|500ms|1s'''

print(re.findall(r'(\w+)\|?(\w+)?\|?(\w+)?', s))

因此,如果您导航到php.ini文件并删除分号,则可以将默认的日出/设置天顶值覆盖为您想要的任何值。在您的情况下,' 90.8333'。

关于差异,' sun_info'采用时间,经度和纬度坐标的论证。因此,这可以在某处使用更准确的数据库,而不是使用配置中设置的默认值。

参考文献:

答案 1 :(得分:3)

  

为什么date_sunrise与zenith = 90.8333不能给出与date_sun_info相同的结果?

好问题。我们来看看源头。 date_sunrise calculates the altitude作为天顶的函数:

altitude = 90 - zenith;

date_sun_info calculates altitude作为常量:

-35.0/60

高度是什么意思,更改此值会如何影响结果?好吧,cross reference to timelib_astro_rise_set_altitude,即date_sunrisedate_sun_info使用的库调用,我们看到:

 *       altit = the altitude which the Sun should cross
 *               Set to -35/60 degrees for rise/set, -6 degrees
 *               for civil, -12 degrees for nautical and -18
 *               degrees for astronomical twilight.

现在扫描该代码并注意它只是Generalized Sunrise Equation而常数-35.0/60对应于太阳圆盘的中心(-0.83°,或约-50弧分)。所以在这里使用常数是有道理的,因为它是USNO AAD使用的广义方程的一部分。

现在的问题是,为什么date_sunrise计算高度作为天顶的函数?让我们注意两件事。首先,如果我们提供90.583333的顶点,那么计算90 - 90.583333会产生与我们之前看到的完全相同的常数-35/60 == -.583333,从而解释为什么使用该特定值会给出相同的结果。其次,90 - zenithsolar elevation angle,还有horizontal parallax。把这些笔记放在一起,我猜测减法说明地球的扁球体形状比常数更准确。但是,我不清楚广义方程是否容忍这一点。

因此,我建议您使用date_sun_info进行需要与其他来源保持一致的计算。

答案 2 :(得分:0)

但是,暮光之城也有所不同,我看不到两者之间的源代码有任何显着差异。暮光定义为太阳的几何中心在地平线下经过6/12/18度的时刻,因此不应考虑太阳盘。 sun_info和Sunrise都使用-6.0作为海拔高度,但是结果略有不同。

相关问题