我们如何在给定的日期和时间计算给定地点的太阳位置?

时间:2017-12-05 21:38:17

标签: python python-2.7 astronomy

我有UTC时间(小时,分钟,秒),经度(度E),纬度(度N)和日期。任何人都可以在Python 2.7中为我提供计算太阳天顶角的代码吗?

2 个答案:

答案 0 :(得分:4)

这是一个有趣的问题,我认为我有一个很好的答案 - 好吧,至少是起点。

查看真棒astropy package。我相信你需要使用coordinates module

这些方面的东西:

import astropy.coordinates as coord
from astropy.time import Time
import astropy.units as u


loc = coord.EarthLocation(lon=0.1 * u.deg,
                          lat=51.5 * u.deg)
now = Time.now()

altaz = coord.AltAz(location=loc, obstime=now)
sun = coord.get_sun(now)

print(sun.transform_to(altaz).alt)

在这里,我们将太阳的角度设置为当前时间0.1度经度和51.5纬度位置的地平​​线以上。

仅供参考,.zen会给你天顶角。

答案 1 :(得分:4)

@ alecxe的答案很棒,但我想我会添加一个稍微修改一点,更接近于原始问题的要求(特定时间的天顶角

from astropy.coordinates import get_sun, AltAz, EarthLocation
from astropy.time import Time

sun_time = Time('2017-12-6 17:00') #UTC time
loc = EarthLocation.of_address('Baltimore, MD')  # anything the google geocoding API resolves
altaz = AltAz(obstime=sun_time, location=loc)

zen_ang = get_sun(sun_time).transform_to(altaz).zen
然后

zen_ang成为Angle对象 - 详情了解the docs中的内容,但基本上它们的工作方式与numpy标量相关,其关联单位为“度”。