【问题标题】:Why am I getting the wrong solar alt/az from PyEphem?为什么我从 PyEphem 得到错误的太阳能 alt/az?
【发布时间】:2020-06-26 21:22:26
【问题描述】:

我今天才开始使用 PyEphem,所以当我尝试从观察点计算太阳高度和方位角时,为什么会得到如此令人难以置信的错误结果,我有点不知所措。代码真的很简单,所以我无法想象哪里出错了:

import ephem
loc = ephem.Observer()
loc.lon = -118.897123
loc.lat = 34.247778
loc.elevation = 55
sun = ephem.Sun()
sun.compute(loc)

当我打印出loc 时,我得到:

<ephem.Observer date='2020/6/26 21:10:06' epoch='2000/1/1 12:00:00' lon='-6812:18:12.0' lat='1962:15:11.3' elevation=55.0m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>

虽然print(loc) 语句中的经纬度和时间有点奇怪,但它们都没有问题。南加州仍然是下午 2:10,所以没有理由 sun.altsun.az 应该分别打印出 1.2996.011

有人可以解释一下这里的问题吗?如果我能弄清楚如何正确使用 PyEphem,它看起来就像一个很棒的库。感谢您的帮助!

【问题讨论】:

    标签: python astronomy pyephem


    【解决方案1】:

    将您的latlon 设置为字符串,并将altaz 格式化为字符串:

    >>> loc = ephem.Observer()
    >>> loc.lon = '-118.897123'
    >>> loc.lat = '34.247778'
    >>> sun = ephem.Sun()
    >>> sun.compute(loc)
    >>> f"{sun.alt} {sun.az}"
    '64:36:51.4 251:28:08.8'
    >>> loc
    <ephem.Observer date='2020/6/26 21:43:46' epoch='2000/1/1 12:00:00' lon='-118:53:49.6' lat='34:14:52.0' elevation=0.0m horizon=0:00:00.0 temp=15.0C pressure=1010.0mBar>
    >>> 
    
    

    【讨论】:

    • @MilesZoltak 看起来 PyEphem 主要在 C 中实现为 libastro。必须是 libastro 必须将字符串传递给它才能解析为 degrees:minutes:seconds 表示的标量形式。 azalt 的内部表示也必须如此——即它们需要被强制转换为字符串以显示为degrees:minutes:seconds。祝你观星好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多