gpt4 book ai didi

python - 如何使用 pyEphem 计算太阳在地平线上的角度

转载 作者:太空狗 更新时间:2023-10-29 21:53:13 25 4
gpt4 key购买 nike

我是 PyEphem 的新手,这可能是一个简单的问题。我想计算某个 GPS 点和日期太阳在地平线上方的角度。我的代码如下:

import ephem
import datetime

date = datetime.datetime(2010,1,1,12,0,0)
print "Date: " + str(date)

obs=ephem.Observer()
obs.lat='31:00'
obs.long='-106:00'
obs.date = date
print obs

sun = ephem.Sun(obs)
sun.compute(obs)
print float(sun.alt)
print str(sun.alt)
sun_angle = float(sun.alt) * 57.2957795 # Convert Radians to degrees
print "sun_angle: %f" % sun_angle

输出是:

python sunTry.py
Date: 2010-01-01 12:00:00
<ephem.Observer date='2010/1/1 12:00:00' epoch='2000/1/1 12:00:00' lon=-106:00:00.0 lat=31:00:00.0 elevation=0.0m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
-0.44488877058
-25:29:24.9
sun_angle: -25.490249

为什么 alt 是负数? GPS 位置在墨西哥的某个地方,我在观察者的日期参数中指定了中午 12 点。太阳应该几乎直接在头顶上方,所以我认为 alt 变量会在 70 - 90 度范围内的某个地方返回一个角度?我在这里缺少什么?

谢谢

斯蒂芬

最佳答案

我认为问题出在 PyEphem 中,dates are always in UTC .因此,无论您的观察者的纬度/经度的本地时区是什么,如果您告诉它中午,它都会假定您的意思是 UTC 中的中午。这意味着您必须传入您打算转换为 UTC 的时间。

“墨西哥某处 datetime.datetime(2010,1,1,12,0,0)”的 UTC 时间大致为 datetime.datetime(2010,1,1 ,18,0,0)

有了这个新日期,我得到了输出

sun_angle: 33.672932

这似乎仍然有点低,但比 -25 更合理。

如果您想要一种编程方式,您可以(风险自负)干预模块 pytz

tz_mexico = pytz.timezone('America/Mexico_City')
mexico_time = datetime.datetime(2010,1,1,12,0,0,0,tz_mexico)
utc_time = mexico_time.astimezone(pytz.utc)
obs.date = utc_time

关于python - 如何使用 pyEphem 计算太阳在地平线上的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18157266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com