Answers:
我在我的GNU / Debian Linux系统中安装了ephem python软件包,并且可以在QGIS的Python控制台上使用它。我为美国犹他湖附近的一个点创建了一个观测器,并计算出“ 2010/6/21”这一天的升起和落日。脚本是:
import ephem
#defining an observer
obs = ephem.Observer()
#defining position
long = '-112.092807'
lat = '40.135114'
obs.long = ephem.degrees(long)
obs.lat = ephem.degrees(lat)
print "long = ", obs.long, "lat = ", obs.lat
#defining date
date = '2010/6/21'
obs.date = ephem.Date(date)
#defining an astronomic object; Sun in this case
sun = ephem.Sun(obs)
r1 = obs.next_rising(sun)
s1 = obs.next_setting(sun)
print "rising sun (UTC time): ", r1
print "setting sun (UTC time): ", s1
r1_lt = ephem.Date(r1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = r1_lt.tuple()
print "rising sun: (local time): {:.2f}".format( h + min/60. + s/3600. )
s1_lt = ephem.Date(s1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = s1_lt.tuple()
print "setting sun (local time): {:.2f}".format( h + min/60. + s/3600. )
在QGIS的Python控制台上运行后,结果是:
>>>execfile(u'/home/zeito/pyqgis_scripts/ephem.py'.encode('UTF-8'))
long = -112:05:34.1 lat = 40:08:06.4
rising sun (UTC time): 2010/6/21 11:58:58
setting sun (UTC time): 2010/6/21 03:01:14
rising sun: (local time): 5.98
setting sun (local time): 21.02
这就是答案。
编辑说明:
定义新的视野(例如5度):
.
.
.
obs.horizon = '5'
sun = ephem.Sun(obs)
r1 = obs.next_rising(sun)
s1 = obs.next_setting(sun)
print "rising sun (UTC time): ", r1
print "setting sun (UTC time): ", s1
r1_lt = ephem.Date(r1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = r1_lt.tuple()
print "rising sun: (local time): {:.2f}".format( h + min/60. + s/3600. )
s1_lt = ephem.Date(s1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = s1_lt.tuple()
print "setting sun (local time): {:.2f}".format( h + min/60. + s/3600. )
结果是:
>>>execfile(u'/home/zeito/pyqgis_scripts/ephem.py'.encode('UTF-8'))
long = -112:05:34.1 lat = 40:08:06.4
rising sun (UTC time): 2010/6/21 12:31:48
setting sun (UTC time): 2010/6/21 02:28:24
rising sun: (local time): 6.53
setting sun (local time): 20.47
您可以使用PyEphem之类的库来查找给定位置的海拔高度,日期,时间(以及行星;)以及太阳的方位角和高度角。
您可以使用一点点python来执行此操作,但首先需要从观察者的位置生成与现实世界水平线成角度的字典或表格。这将需要以1度为间隔,其中0 =真正的北,并且每个度都给出水平角度。这可以来自您的水平仪。
然后,您可以使用pyephem
a)observer
在观察者的纬度,经度和海拔高度上创建一个,并在给定一天的每一分钟中使用它来计算太阳的视在位置,这些位置将被指定为四个值,ra,dec,alt和az。
然后,对于每个时间值,您都可以将alt与该方位角的高程表中的值进行比较,当alt大于表中的值时,您将能够看到太阳。
甚至有可能找到某些点,在给定的一天中,太阳在山谷中升起,然后离开山后的场所,然后重新出现在山的另一侧。