はじめに
Astoropyのチュートリアルを参考にして、使い方を学んでいく。
まずは一つ目のチュートリアル「Getting Started with astropy.coordinates」を参考に、astropy.coordinatesを使って画像を表示させてみる。
このチュートリアルでは、「ヒクソン・コンパクト銀河群」の画像を利用している。
ヒクソン・コンパクト銀河群 (英: Hickson Galaxy Groups、HCG )は、ポール・ヒクソンにより1982年に出版されたカタログ[2]に掲載された集団規模が比較的小さい銀河集団の総称である。
まずは基本セットのimport
from urllib.parse import urlencode from urllib.request import urlretrieve from astropy import units as u from astropy.coordinates import SkyCoord from astropy.table import Table import numpy as np from IPython.display import Image
matplotlibでastropyの描画ライブラリを使えるように設定
astropy.coordinatesパッケージのSkyCoordクラスで天球座標を表すことができる
天球座標とは、赤緯・赤経と呼ばれる緯度経度のような尺度を使って地球から見た星の座標を示す
from astropy.visualization import astropy_mpl_style import matplotlib.pyplot as plt plt.style.use(astropy_mpl_style) %matplotlib inline
SkyCoordオブジェクトを作る
from_nameというメソッドを使ってヒクソン・コンパクト銀河群のデータを取ってくる
sc = SkyCoord.from_name('HCG 7') type(sc)
astropy.coordinates.sky_coordinate.SkyCoord
SkyCoordというタイプのオブジェクトになっている また、scだけを実行すると、天球座標を表示できる
sc
RAは赤経、Decは赤緯を表す(RA=Right Ascertion, Dec=Declination)
SkyCoordのメソッド一覧はdirメソッドで確認できる
dir(sc)
['T', '__abstractmethods__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', (省略) 'temperature', 'to_pixel', 'to_string', 'transform_to', 'transpose', 'v_bary', 'velocity', 'z_sun']
作成したオブジェクトの赤経RA、赤緯Decを表示するには以下様々なコマンドがある
sc.ra
9∘48′58.5′′
sc.ra.hour
0.6544166666666668
sc.dec
0∘53′17.016′′
sc.dec.hour
0.05920400000000001
そのほか、SkyCoordの使い方は公式ページで確認できる
次に画像イメージをダウンロードする
画像の範囲を設定するための変数を用意
im_size = 12 * u.arcmin
im_size
12′
arcminは角度の単位。1arcminで1度の60分の1を表す(日本語では、分と呼ぶ)
単位の記号は1'
つまり 12' は、12/60=1/5度という小さい角度を表す
画像の大きさを設定するための変数 および 画像取得元のベースとなるURL を設定
im_pixels = 1024 cutoutbaseurl = 'http://skyservice.pha.jhu.edu/DR12/ImgCutout/getjpeg.aspx'
取得したい画像のパラメタを設定
query_string = urlencode(dict(ra=sc.ra.deg,
dec=sc.dec.deg,
width=im_pixels, height=im_pixels,
scale=im_size.to(u.arcsec).value/im_pixels))
上記では天球座標として作成したscの値を指定
sc.ra.deg, sc.dec.deg
(9.81625, 0.88806)
scaleパラメタでim_sizeを秒単位に変換している
im_size.to(u.arcsec)
720′′
設定したパラメタとベースとなるURLを使って、取得したい画像をURLとして設定し、保存
url = cutoutbaseurl + '?' + query_string urlretrieve(url, 'HCG7_SDSS_cutout.jpg')
('HCG7_SDSS_cutout.jpg', <http.client.HTTPMessage at 0x7f62d1631828>)
保存した画像を表示する
Imageメソッドで保存した画像のファイル名を指定することで表示させられる
Image('HCG7_SDSS_cutout.jpg')
パラメタを変更して画像の表示を変えてみる
画像パラメタquery_stringで指定する内容を変えることで画像の表示が変わる
まずは簡単に変更できるように関数を用意
def show_image(im_size, im_pixels): query_string = urlencode(dict(ra=sc.ra.deg, dec=sc.dec.deg, width=im_pixels, height=im_pixels, scale=im_size.to(u.arcsec).value/im_pixels)) url = cutoutbaseurl + '?' + query_string urlretrieve(url, 'HCG7_SDSS_cutout.jpg') return(Image('HCG7_SDSS_cutout.jpg'))
より広範囲の画像を出力には、im_sizeを変更することで対応できる
im_size2 = 60 * u.arcmin
show_image(im_size2, im_pixels)
逆も然りで、im_sizeを12から4にすることで、より詳細な画像を出力することができる
また、画像サイズの変更はim_pixelsを変えることで可能
im_size2 = 4 * u.arcmin im_pixels = 512 show_image(im_size2, im_pixels)
まとめ
天体画像の取得・保存方法と色々な画像表示の方法について学んだ