从 alt/az 到 ra/dec 并返回的 pyephem 问题

pyephem problem with alt/az to ra/dec and back

i 在 az/alt 中生成 horizon(az=0-360,alt=0-90) 上方的随机位置,并用 radec_to() 计算它们到 RA 和 DEC。为了检查结果,我重新转换了它们。

所以我不明白的是,为什么我在 horizon 下得到大约一半的坐标?

import ephem
from datetime import datetime
import random

home = ephem.Observer()

home.lon = '-70.4'  # +E
home.lat = '-24.62'  # +N
home.elevation = 1189  # meters
home.date = datetime.utcnow()
RA = []
DEC = []
for n in range(100):
    # print(random.uniform(0, 360), random.uniform(0, 90))
    ra, dec = home.radec_of(az=random.uniform(0, 360), alt=random.uniform(0, 90))
    # print('%s %s' % (ra, dec))
    RA.append(ra)
    DEC.append(dec)

dummy = 0
for coordinate in RA:
    body = ephem.FixedBody()
    body._epoch = ephem.J2000
    body._ra = ephem.degrees(RA[dummy])
    body._dec = ephem.degrees(DEC[dummy])
    body.compute(home)
    dummy += 1
    print(body.az, body.alt)

该程序的目的是在 ans 观察器上生成可以用 pyephem 跟踪的随机人造星。

您正在向 radec_of() 提供浮点数,PyEphem 将浮点数解释为弧度,而不是度数。只有当数字作为字符串提供时,它才会将它们解释为度数。所以你可以试试:

    ra, dec = home.radec_of(az=str(random.uniform(0, 360)),
                            alt=str(random.uniform(0, pi)))

或者您可以首先为角度生成弧度:

from math import pi

ra, dec = home.radec_of(az=random.uniform(0, 2*pi),
                        alt=random.uniform(0, pi))

无论哪种方式,您都会发现所有生成的星星都在 horizon 上方而不是下方。

我会看看我是否可以更新 PyEphem 快速参考以解释 radec_of() 的参数预期的类型,而不是依赖于文档中其他地方难以解释的约定找到。