2

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

4

4 回答 4

4

这是某人在 Python 中实现日出/日落计算:http: //michelanders.blogspot.com/2010/12/calulating-sunrise-and-sunset-in-python.html

于 2011-09-12T09:17:13.370 回答
1

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

可以从该页面和此处找到计算详细信息的详细说明。

于 2011-09-12T08:55:58.930 回答
1

算法的完整布局在这里

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

于 2011-09-12T08:57:59.170 回答
0

您需要一些可以正常工作的东西™?使用高级语言。而且你知道它总是有效的。你怎么能相信 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)
>>> 
于 2012-02-10T22:42:48.493 回答