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)
※コメント投稿者のブログIDはブログ作成者のみに通知されます