Python 从alt/az到ra/dec再返回的Pypehem问题

Python 从alt/az到ra/dec再返回的Pypehem问题,python,pyephem,Python,Pyephem,我在az/alt中生成地平线上方的随机位置(az=0-360,alt=0-90),并使用radec_to()计算到RA和DEC。为了检查结果,我重新传输了它们 所以我不明白的是,为什么我得到了地平线下大约一半的坐标 import ephem from datetime import datetime import random home = ephem.Observer() home.lon = '-70.4' # +E home.lat = '-24.62' # +N home.ele

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

所以我不明白的是,为什么我得到了地平线下大约一半的坐标

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观测者上生成随机的人造星,可以用Pyphem跟踪。

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

    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))
不管是哪种方式,你都会发现所有产生的恒星都在地平线上方而不是下方

我将查看是否可以更新Pyphem Quick Reference,以解释
radec_of()
的参数所需的类型,而不是依赖文档中其他地方难以找到的约定