2016-01-20 59 views
1

我已經嘗試調試我的代碼,並且我已經意識到,當我嘗試將我的AltAz座標保存到.csv文件時,它最終會崩潰,因爲它不是一個numpy數組,它是一個SkyCoord對象。有人可能會提出一個簡單的方法來將大型赤道座標錶轉換爲AltAz,或者我可以如何將我的代碼保存到文件中。如何生成從赤道儀到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=',') 
+0

'np.savetxt'是相當原始的,而且astropy有更好的選項來處理天文學家喜歡製作的各種文本文件。下面的答案討論了幾個不錯的選擇。 – Iguananaut

回答

1

你想使用to_string()方法上altaz。這將給你一個字符串列表,其中每個條目都有一個高度方位號碼(它們被一個空格分開,所以你可以.split()他們或其他)。然後你可以用numpy或你選擇的其他庫來寫出它。

另外,如果您想直接進入到一個文件,你可以創建一個astropy Table,且可以將分別等於altaz.altaltaz.az'alt''az'。那你可以.write(format='ascii')那個表。