Python 从alt/az到ra/dec再返回的Pypehem问题
我在az/alt中生成地平线上方的随机位置(az=0-360,alt=0-90),并使用radec_to()计算到RA和DEC。为了检查结果,我重新传输了它们 所以我不明白的是,为什么我得到了地平线下大约一半的坐标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
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()
的参数所需的类型,而不是依赖文档中其他地方难以找到的约定