我正在尝试将对象的赤道坐标转换为给定时间和位置的 alt-az 坐标(希望)<5 秒运行时,或更理想的是 <1 秒运行时。
按照坐标变换的astropy 教程,我设置了以下代码:
from astropy import units as u
from astropy.coordinates import SkyCoord,EarthLocation, AltAz
from astropy.time import Time
target = SkyCoord(9.81625*u.deg, 0.88806*u.deg, frame='icrs')
location = EarthLocation(lat='31d57.5m', lon='-111d35.8m', height=0*u.m)
obs_time = Time('2010-12-21 1:00')
alt_az_frame = AltAz(location=location, obstime=obs_time)
target_alt_az = target.transform_to(alt_az_frame)
print(target_alt_az.alt, target_alt_az.az)
Run Code Online (Sandbox Code Playgroud)
这段代码运行需要 20 秒,几乎所有这些都来自该target.transform_to(alt_az_frame)行。
有没有更合适的方法来使用transform_to函数来加速代码,或者我应该完全放弃使用 astropy 并从头开始编写代码?我知道SkyCoord对象中内置了很多额外的功能,其中大部分我可能不需要——使用预先构建的标准化代码很方便。