星空研究Memo

ここは某天文屋の外部記憶装置である。

R で星図と星座線をかく

2012-06-05 13:42:34 | R言語

R で Bright Star Catalog を読み込んで星をプロットし、
ついでに星座線まで出るようにしてみた。

ありがたいことにカタログと星座線のセットが以下に .csv 形式で置いてあるので使わせて頂くことに。
 星空横丁 (http://hoshizora.yokochou.com/)

星をプロットする場合、星の大きさをどうするか悩んだのですが
とりあえず kawashima さんの方法を使わせて頂きました。

あと星座線は RA が 例えば一方が23時で、もう一方が0時とかになると (例えばペガスス座の四辺形)
そのまま segments() で描くと酷いことになります。
そのようなケースが7件ほどあるので、とりあえず取り除いています。
# なので星座線つきの星図としてはちょっと未完成品orz

以下プロットできた星図です。


クリックしたら原寸画像で表示。

新星などが出たときに、出現場所を大きめの星図でまず確認するので
そのような場合に活用するかもです。

あとは星座境界線なんかも入れてみたいところです。
使いやすそうなデータセットがないか探し中。

以下、R のコード。途中星座線の座標を拾うのに for なんてものを使ってるので遅いです。
常用する場合は星座線の座標は別途保存しておいて
それを読み込むほうが実用的でしょう。

======

#------任意の領域指定
RA_lim  <- c(24,0)
DEC_lim <- c(-70,70)
#------星表の読み込みと星のプロット
data <- read.csv("star.csv",header=F)
line <- read.csv("star_line.csv",header=F)
 ra  <- data$V6 + (data$V7/60) + (data$V8/3600)
 dec <- data$V10 + (data$V11/60) + (data$V12/3600)
 dec <- ifelse(data$V9==0, dec, dec*-1) # Dec の符号
 mag <- data$V14 + data$V15/100
 HR  <- data$V1
 star<- data.frame(HR,ra,dec,mag)

maxmin  <- summary(mag)
 r <- maxmin[[6]]+1-mag
symbols(ra,dec,circle=r,xlim=RA_lim,ylim=DEC_lim,
bg="black",fg="white",inches=0.06)
#------星座線の座標を拾う
t1<-NULL
t2<-NULL
l1 <- NULL
l2 <- NULL
 for(i in 1:744){
   l1 <- subset(star,star$HR==line[i,2])
   t1 <-rbind(t1,l1)
   l2 <- subset(star,star$HR==line[i,3])
   t2 <-rbind(t2,l2)
#------RA が折り返しそうなlineを拾う
   lr <- data.frame(t1,t2)
   lr1 <- subset(lr,lr$ra>22)
   lr1 <- subset(lr1,lr1$ra.1<3)
   lr2 <- subset(lr,lr$ra.1>22)
   lr2 <- subset(lr2,lr2$ra<3)
   lr0 <- rbind(lr1,lr2)
 }
#------星座線をかく (一部の星座線を取り除いている)
rown <- as.integer(row.names(lr0))
lr <- lr[-which(rownames(lr)%in% rown),]
segments(lr$ra,lr$dec,lr$ra.1,lr$dec.1)



最新の画像もっと見る

post a comment