如何生成从赤道到 AltAz 的转换坐标的 table?
How do I produce a table of converted coordinates from Equatorial to AltAz?
我试过调试我的代码,我意识到当我尝试将我的 AltAz 坐标保存到 .csv 文件时它最终崩溃了,因为它不是一个 numpy 数组,它是一个 SkyCoord 对象。有人可以建议一种将大 table 赤道坐标转换为 AltAz 的简单方法,或者我如何将代码保存到文件中。
# Get time now
time = astropy.time.Time.now()
time.delta_ut1_utc = 0
# Geodetic coordinates of observatory (example here: Munich)
observatory = astropy.coordinates.EarthLocation(
lat=48.21*u.deg, lon=11.18*u.deg, height=532*u.m)
# Alt/az reference frame at observatory, now
frame = astropy.coordinates.AltAz(obstime=time, location=observatory)
# Look up (celestial) spherical polar coordinates of HEALPix grid.
theta, phi = hp.pix2ang(nside, np.arange(npix))
# Convert to Equatorial coordinates
radecs = astropy.coordinates.SkyCoord(
ra=phi*u.rad, dec=(0.5*np.pi - theta)*u.rad)
# Transform grid to alt/az coordinates at observatory, now
altaz = radecs.transform_to(frame)
#Transpose array from rows to columns
altaz_trans=np.transpose(altaz)
np.savetxt('altaz.csv',altaz_trans,fmt='%s', delimiter=',')
您需要在 altaz
上使用 to_string()
方法。这将为您提供一个字符串列表,其中的每个条目都有一个高度和方位角数字(它们由 space 分隔,因此您可以 .split()
它们或其他)。然后你可以用 numpy 或你选择的其他库写出来。
或者,如果您想直接转到一个文件,您可以创建一个 astropy Table
,并将列 'alt'
和 'az'
分别设置为等于 altaz.alt
和 altaz.az
。然后你可以 .write(format='ascii')
即 table.
我试过调试我的代码,我意识到当我尝试将我的 AltAz 坐标保存到 .csv 文件时它最终崩溃了,因为它不是一个 numpy 数组,它是一个 SkyCoord 对象。有人可以建议一种将大 table 赤道坐标转换为 AltAz 的简单方法,或者我如何将代码保存到文件中。
# Get time now
time = astropy.time.Time.now()
time.delta_ut1_utc = 0
# Geodetic coordinates of observatory (example here: Munich)
observatory = astropy.coordinates.EarthLocation(
lat=48.21*u.deg, lon=11.18*u.deg, height=532*u.m)
# Alt/az reference frame at observatory, now
frame = astropy.coordinates.AltAz(obstime=time, location=observatory)
# Look up (celestial) spherical polar coordinates of HEALPix grid.
theta, phi = hp.pix2ang(nside, np.arange(npix))
# Convert to Equatorial coordinates
radecs = astropy.coordinates.SkyCoord(
ra=phi*u.rad, dec=(0.5*np.pi - theta)*u.rad)
# Transform grid to alt/az coordinates at observatory, now
altaz = radecs.transform_to(frame)
#Transpose array from rows to columns
altaz_trans=np.transpose(altaz)
np.savetxt('altaz.csv',altaz_trans,fmt='%s', delimiter=',')
您需要在 altaz
上使用 to_string()
方法。这将为您提供一个字符串列表,其中的每个条目都有一个高度和方位角数字(它们由 space 分隔,因此您可以 .split()
它们或其他)。然后你可以用 numpy 或你选择的其他库写出来。
或者,如果您想直接转到一个文件,您可以创建一个 astropy Table
,并将列 'alt'
和 'az'
分别设置为等于 altaz.alt
和 altaz.az
。然后你可以 .write(format='ascii')
即 table.