我有UTC时间(小时,分钟,秒),经度(度E),纬度(度N)和日期。任何人都可以在Python 2.7中为我提供计算太阳天顶角的代码吗?
答案 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
标量相关,其关联单位为“度”。