从 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()
的参数预期的类型,而不是依赖于文档中其他地方难以解释的约定找到。
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()
的参数预期的类型,而不是依赖于文档中其他地方难以解释的约定找到。