解説用の星図をさっさかるくるプロジェクト メモ3 Javascript+fireworks+VB2005編

 

前のメモでは、解説用の星図を作るのに

・だいたいの下図が自動的に作られ、

・それを、パーツごとにちょっと修正できるのがベストとした。

・そのために、Javascript で、fireworks を操ることに可能性を見いだし、

・fireworks にJavascript を使って、オブジェクトを放り込むことに成功した

・あとは、星図データに基づき、座標変換をして、適切な場所にオブジェクト(まさに天体)

 を配置するんであるが・・・

ちょっと調べたら、えらいことがわかった。

javascript は、外部ファイルをデータとして読み込む言語仕様になっていない

らしいのである。らしいというのは、適当にしか調べていないからだが、ローカルファイルのIOがらみの関数やメソッドがないのだから、間違いなかろう。うーむ、SQLとか、うわさのAjax とか使うのかなと思ったが、これらもちょっと違うようだし、目的に対してたいそうだ。それに、将来的にもGUIをかぶせたいし、まあちょうどいいから

VB2005へのプチ挑戦

ということにする。VBで Javascript のスクリプトを吐き出させようということである。

昔来た道、VisualBASIC で簡単なフィルターを作ろう。エクセルのVBA用の天体位置計算プログラムは書いてあるので、惑星関係の位置計算ルーチンなんかは簡単に流用できそうだし。なにしろVBなら手慣れている。このところVBAというか、エクセルの関数しか使ってないけど、なんとかなろう。

ということで、なぜか持っていたVisualStudio2005のパッケージの封をあける。インストール、そして、VB2005を使おうとして・・・わからん。VB6がVB.NETになって、いろいろ変わったらしいとは聞いていたが、本当にわからん。ただ、ファイルを開いて、データを読み込んで、処理するだけなのに。ファイルの開き方が分からん。open filename as randam とかじゃないのか? なんだい、このストリームなんちゃらってのは???

しょうがないのでお勉強。昔からVBの解説書いてる羽山さんのガイドが運良くみつかる。あ、羽山さんもVB.NETに移行してなかったのか、去年まで。親近感。まず、単純にCSV形式のファイルを開いて、データに演算、適当に文字を加え、別のファイルに出力するフィルター的プログラムを書いてみる。羽山さんのガイドにもちょうど取り上げられているので、サンプルを流用させてもらおう。

データソースとしては、おなじみのイエールブライトスターカタログを使う。最新デジタル版は、いつものごとく、国立天文台のADACを使わせてもらう。よく整備されていてありがたい。西村先生、市川さん、ほかみなさん、本当にありがとう。

さてYBSCだが、登録カタログ5050にある。 Yale Bright Star Catalog, 5th Revised Edition, Preliminary Versionってのが気になるが、最新版はこちらとなっているので、素直に信じることにする。

12/06/1994 12:00午前 3,881 BSC51.gz

12/06/1994 12:00午前 590,225 BSC52.gz

12/06/1994 12:00午前 162,960 BSC53.gz

と3つある。BSC51.GZは、テーブルの構成を解説したファイル。どうせ、参照するので、開いておこう。もう、このファイル何回みたかわからない。重要なところは、赤くしておく。BSC53.gzは、ノート。つまりは注釈。メインはBSC52である。

Byte-per-byte Description of file: catalog
--------------------------------------------------------------------------------
Bytes Format Units Label Explanations
--------------------------------------------------------------------------------
1- 4 I4 --- HR [1/9110]+ Harvard Revised Number
= Bright Star Number
5- 14 A10 --- Name Name, generally Bayer and/or Flamsteed name
15- 25 A11 --- DM Durchmusterung Identification (zone in
bytes 17-19)
26- 31 I6 --- HD Henry Draper Catalog Number
32- 37 I6 --- SAO SAO Catalog Number
38- 41 I4 --- FK5 FK5 star Number
42 A1 --- IRflag [I] I if infrared source
43 A1 --- r_IRflag [ ':] Coded reference for infrared source:
Blank if from NASA merged Infrared
Catalogue, Schmitz et al., 1978;
' if from Engles et al. 1982
: if uncertain identification
44 A1 --- Multiple [AWDIRS] Double or multiple-star code:
A = Astrometric binary
D = Duplicity discovered by occulation;
I = Innes, Southern Double Star Catalogue
(1927)
R = Rossiter, Michigan Publ. 9, 1955
S = Duplicity discovered by
speckle interferometry.
W = Worley (1978) update of the IDS;
45- 49 A5 --- ADS Aitken's Double Star Catalog (ADS) designation
50- 51 A2 --- ADS_Comp ADS number components
52- 60 A9 --- Var_ID Variable star identification
61- 62 I2 h RAh_1900 Hours RA, equinox B1900, epoch 1900.0
63- 64 I2 min RAm_1900 Minutes RA, equinox B1900, epoch 1900.0
65- 68 F4.1 s RAs_1900 Seconds RA, equinox B1900, epoch 1900.0
69 A1 --- DE-_1900 Sign Dec, equinox B1900, epoch 1900.0
70- 71 I2 deg DEd_1900 Degrees Dec, equinox B1900, epoch 1900.0
72- 73 I2 arcmin DEm_1900 Minutes Dec, equinox B1900, epoch 1900.0
74- 75 I2 arcsec DEs_1900 Seconds Dec, equinox B1900, epoch 1900.0

76- 77 I2 h RAh Hours RA, equinox J2000, epoch 2000.0
78- 79 I2 min RAm Minutes RA, equinox J2000, epoch 2000.0
80- 83 F4.1 s RAs Seconds RA, equinox J2000, epoch 2000.0
84 A1 --- DE- Sign Dec, equinox J2000, epoch 2000.0
85- 86 I2 deg DEd Degrees Dec, equinox J2000, epoch 2000.0
87- 88 I2 arcmin DEm Minutes Dec, equinox J2000, epoch 2000.0
89- 90 I2 arcsec DEs Seconds Dec, equinox J2000, epoch 2000.0

91- 96 F6.2 deg GLON Galactic longitude
97-102 F6.2 deg GLAT Galactic latitude

103-107 F5.2 mag V Visual magnitude
108 A1 --- n_V [ HR] Visual magnitude code
blank = V on UBV Johnson system;
R = HR magnitudes reduced to the
UBV system;
H = original HR magnitude.
109 A1 --- u_V [ :?] Uncertainty flag on V
110-114 F5.2 mag B-V B-V color in the UBV system
115 A1 --- u_B-V [ :?] Uncertainty flag on B-V
116-120 F5.2 mag U-B U-B color in the UBV system
121 A1 --- u_U-B [ :?] Uncertainty flag on U-B
122-126 F5.2 mag R-I R-I in system specified by n_R-I
127 A1 --- n_R-I [CE:?D] Code for R-I system (Cousin, Eggen)
128-147 A20 --- SpType Spectral type
148 A1 --- n_SpType [evt] Spectral type code
149-154 F6.3 arcsec/yr pmRA Annual proper motion in RA J2000, FK5 system
155-160 F6.3 arcsec/yr pmDE Annual proper motion in Dec J2000, FK5 system
161 A1 --- n_Parallax [D] D indicates a dynamical parallax,
otherwise a trigonometric parallax
162-166 F5.3 arcsec Parallax Trigonometric parallax (unless n_Parallax)
167-170 I4 km/s RadVel Heliocentric Radial Velocity
171-174 A4 --- n_RadVel [V?SB123O ] Radial velocity comments:
V = variable radial velocity;
V? = suspected variable radial velocity;
SB, SB1, SB2, SB3 = spectroscopic binaries,
single, double or triple lined spectra;
O = orbital data available.
175-176 A2 --- l_RotVel [<=> ] Rotational velocity limit chararacters
177-179 I3 km/s RotVel Rotational velocity, v sin i
180 A1 --- u_RotVel [ :v] uncertainty and variability flag on
RotVel
181-184 F4.1 mag Dmag Magnitude difference of double,
or brightest multiple
185-190 F6.1 arcsec Sep Separation of components in Dmag
if occultation binary.
191-194 A4 --- Mult_ID Identifications of components in Dmag
195-196 I2 --- Mult_Cnt Number of components assigned to a multiple
197 A1 --- Note_Flag [*] a star indicates that there is a note

ということで、位置と明るさだけなら。76−90カラムと、103−107カラムだけ取り出せばよい。あとは、1−4カラムの名前。これは、何度もするこっちゃないので、エクセルで読み込ませて、CSVファイルに加工しておく。エクセルには、テキストファイルを読み込んで、適当な位置で区切る(手動でやるのが安全)機能がある。それを使う。

中にはデータが抜けているものがあるので、これは手作業で取り除く。

ここで、DECの符号だけ別にしているのは、-0 というのがあったさいに、符号が不明(プラスになる)になってしまうからだ。

さらに、このままでは赤経と赤緯が、時分秒と分割されていて使いにくいので、統一しておく。

RAについては、=B2+C2/60+D2/3600 でよい

DECについては、マイナスの値があるので、Sign がある。=G2+SIGN(VALUE(F2&1))*(H2/60+I2/3600)とでもしておく。
上の式、間抜けなかつ致命的な間違い。G2にも符号はついていないので、マイナスの値にならない。
=SIGN(VALUE(F2&1))*(G2+H2/60+I2/3600)

さらに、もとのRAh とk Decsign とかをとり、桁数をととのえ、後のことを考えて、等級で昇順ソートしたものを

YBSC5.CSV という名前で保存しておく。Serial を残しておくのは、関連づけなどで後で使うから。

うーむ、下ごしらえだけで終わってしまった。

--------------------------------------------------------------------------------

2008年01月10日 記す

続く