まず、一番単純な座標変換を見てみましょう。
>>> import astropy.units as u >>> from astropy.coordinates import SkyCoord >>> gc = SkyCoord(l=0*u.degree, b=45*u.degree, frame='galactic') >>> gc.fk5 <SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg (229.272514629, -1.12844288043)>
より一般的には、transform_to() で変換を表します。transform_to() 用いることで入力方法が柔軟になり、なおかつ、より細かいオプションの設定が可能となります。
>>> from astropy.coordinates import FK5 >>> gc.transform_to('fk5') <SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg (229.272514629, -1.12844288043)> >>> gc.transform_to(FK5) <SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg (229.272514629, -1.12844288043)> >>> gc.transform_to(FK5(equinox='J1980.0')) <SkyCoord (FK5: equinox=J1980.000): (ra, dec) in deg (229.014693505, -1.05560349378)>
transform_to() には、SkyCoordオブジェクトをそのまま指定することもできます。SkyCoordオブジェクトを指定すると、そのSkyCoordオブジェクトで指定されている座標系に変換されます。
>>> sc = SkyCoord(ra=1.0, dec=2.0, unit='deg', frame=FK5, equinox='J1980.0') >>> gc.transform_to(sc) <SkyCoord (FK5: equinox=J1980.000): (ra, dec) in deg (229.014693505, -1.05560349378)>
また、FK5, FK4, FK4NoETermsなどの座標系においては、同じ座標系の中での変換(例えば、分点を変更する)を行うことができます。
>>> fk5c = FK5('02h31m49.09s', '+89d15m50.8s') >>> fk5c.equinox <Time object: scale='utc' format='jyear_str' value=J2000.000> >>> fk5c <SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg (37.9545416667, 89.2641111111)> >>> fk5_2005 = FK5(equinox='J2005') # 分点を変更します >>> fk5c.transform_to(fk5_2005) <SkyCoord (FK5: equinox=J2005.000): (ra, dec) in deg (39.3931763878, 89.2858442155)>
分点の変更は、以下のようにTimeオブジェクトを用いて行うこともできます。
>>> from astropy.time import Time >>> fk5c = FK5('02h31m49.09s', '+89d15m50.8s', ... equinox=Time('J1970', scale='utc')) >>> fk5_2000 = FK5(equinox=Time(2000, format='jyear', scale='utc')) >>> fk5c.transform_to(fk5_2000) <SkyCoord (FK5: equinox=2000.0): (ra, dec) in deg (48.0231710002, 89.386724854)>