ITFpass2
Find_orbで作った位置推算表(computer friendly)をもとに
推算表の開始日から終了日-2日までの間で選択した期間の毎日について、
推算表に沿った指定領域内(サーチ半径内)の観測をITFファイルから抽出したファイルを作るC#プログラム
- これは同定候補の観測をITFファイルの中から探すためのプログラム。
- ITFファイルの観測は800万個以上あるため、最初から順番に1個1個位置推算して観測と合うかどうかを確認していたのでは莫大な時間が掛かり計算が終わらない。
- そこで、省略可能な場合にはできるだけ計算を省略し、計算も関数など時間のかかるものの使用はできるだけ少なくすることが重要となる。
- そのため、本方式では、ITFファイルを日ごとに分割することで、検討期間以外のITFファイルを処理する時間を省き、
また、予め計算された位置推算表を入力することにより位置推算にかかる時間(またソフトの開発時間も)を省いている。
- 入力される位置推算表は1日刻みのものであり、1日の中間の時刻に対しては、補間を用いて位置を計算している。
- 直線補間だと位置誤差が大きい場合があるかもしれないと考え、2次補間(2次式での近似)を採用した。
(ソースコード)
ITFpass2.cs (右クリック→「名前を付けてリンクを保存」で保存のこと)
(準備)
入出力ファイルのパス名部分の書き換え:
プログラム中の以下の3つのパス名をご自分のPC用に書き換えること(先頭の@は必要)
string infile = @"C:\Users\mtnsu\Desktop\NEOCP_data\" + fname;
string infile1 = @"C:\Users\mtnsu\Desktop\itf\itf_" + ymd1 + ".txt";
string outfile1 = @"C:\Users\mtnsu\Desktop\itf\work\itf_" + ymd1 + "_pass.txt";
1つ目(infile)はfind_orbで作成した位置推算表を入れておくフォルダ
2つ目(infile1)は、1日ずつに分割したITFファイルを入れておくフォルダ
3つ目(outfile1)は、ITFファイルから抽出した観測のファイル(計算日数分の数)を出力するフォルダ
予め準備しておくデータ:
- ITFファイルを1日ずつに分割したファイルが所定のフォルダに入っていること。(少なくとも計算する期間分)
この1日毎に分割したITFファイルは、別プログラムITF_daysを使って作成可能。
- Find_orbで作成した所定のフォーマットの位置推算表が、所定のフォルダに入っていること。
Find_orbでの位置推算表の作成手順:
- Find_orbで信頼できる軌道を求めたあと、メイン画面の最上部の"epheM"ボタンをクリック。
- 計算間隔(Step size)を入力:1日なので、必ず1を入力すること
- 推算表開始日(Ephem start)を入力:例えば 2016-10-01 (時刻は入力しないこと)
- 推算表終了日(Ephem end)を入力:例えば 2017-05-01 (時刻は入力しないこと)
- 計算回数(Number steps)の数字が表示されるので間違いないことを確認しておく(1万回(1万日)を超えないこと)
- Location(天文台コード):特定の天文台の観測をメインに扱いたい場合には、その天文台のコードを入力しておけば、
その天文台の視差は考慮される。例えば、すばる望遠鏡ならば"T09"。特定の天文台がない場合は地心(コード"500")にしておけばよい(視差の補正はない)。
- それより暗ければ計算を省略する光度(Suppress when fainter than mag:)を、例えば100(等級)くらいに設定して計算の省略が無いようにする。
- Show advanced options を選択する
- Computer-friendly output を選択する
- RA/decsを選択する
- 選択する(*が付く)のはこれら3項目のみ。これら以外は非選択にする。(下の画像を参照)
- Make ephemeris をクリックすると、画面に推算表(JD、赤経(度単位)、赤緯(度単位)、等級)が表示される。(下の画像を参照)
- 画面の最下行の"save"ボタンをクリックして、任意の名前(例えば、H280736_c.txt 等)を付けて推算表を保存する。
又は、saveしなくても、同じ内容の推算表がephemeri.txtという名前でFind_orbのフォルダ内に作成されているのでそれを利用してもよい(下の画像を参照)
- (Find_orbの摂動を考慮する/しないの設定に応じて、推算表も摂動を考慮する/しないものとなる)
(プログラムの実行)
- Visual Studio 2022 デバッグモードでの実行の場合は、開始ボタンを押すと、コンソールウインドウが作成され、そこでの入力となる。
- Ehpemeris file name? : と推算表の名前を訊いてくるので、Find_orbで作成しておいた位置推算表の名前を入力しEnterキーを押す(例えば、H280736_c.txtやephemeri.txt 等)
- すると、推算表の概要(日数、開始日、終了日)が表示され、探索(抽出)開始日の入力に移る。
- 探索(抽出)開始日の入力は、年、月、日、を別々に入力するようになっているので注意。
- 同様に、探索(抽出)終了日を入力する。探索終了日は位置推算終了日よりも2日以上前を指定すること。
- 次にサーチ半径(単位は角度の分)を入力する。(例えば1分角の場合は1を入力して、Enterを押す)
- するとプログラムが実行され、コンソール画面には、実行終了した日ごとに、その終了時の時刻が表示される(計算日数分表示される)。
(これは最初はもっと計算時間がかかると想定してこのようにしたのだが、実際には数百日くらいの探索だと、あっという間に終了してしまっている。)
- 計算が終了したコンソール画面は、任意のキーを押すと閉じることができる。
(結果)
- 結果のファイルは所定のフォルダに、探索の日数分できる。
- 例えば2017年3月25日のITFファイル名がitf_20170325.txtであれば、本ソフトを走らせるとitf_20170325_pass.txt
という、観測を抽出したファイルができる。200日分サーチすれば200個のファイルができる。
- サーチ半径の大きさにもよるが、例えば1分角(1 arcmin)くらいだと、200個のファイルの殆どが0KBになる。
だから、エクスプローラでファイル名(ファイルのサイズ)を眺めていき、観測が抽出された日はサイズが0KBではないので、
0KBではないファイルを見つけてそのファイルを開けてみればよい。
- (2024-05-04追記:エクスプローラで結果のフォルダを詳細表示し、見出し項目のサイズをクリックすると、ファイルがサイズ順に並び、0KBではない中身の入ったファイルを上方に表示することができるので、それらを調べればよい。)
- 本ソフトではそれら200個のファイルを1つのファイルに纏めることは行なっていないが、Windows ツールの
コマンドプロンプトで、所定のフォルダに移動して、copy *pass.txt matome.txt などを行なえば、結果を1つのファイルmatome.txtに纏めることもできる。
- (2024-06-01追記:copy /b *pass.txt matome.txt とバイナリーモードで行なった方がよい)
- 尚、本ソフトで抽出された観測で新しいものがあれば、それを同定候補に加えて、Find_orbなどで更に検討していくことになる。
(参考文献)
- 年月日からユリウス日への変換式:長谷川 一郎 著: 天体軌道論 (恒星社)
- ユリウス日から年月日への変換式:ウィキペディア
- 補間の計算式:長谷川 一郎 著:天文計算入門(恒星社)
Find_orb:推算表の選択項目

Find_orb:推算表の画面出力

Find_orb:推算表のファイル出力

コンソール画面(位置推算表ファイル名、探索開始日、探索終了日、サーチ半径の入力)

コンソール画面(実行中)

コンソール画面(実行終了)

ファイル出力

コマンドプロンプト画面(抽出した観測を1つのファイルにまとめる場合)

記事やプログラムは予告なく更新または削除することがあります。
COIAS用の自作ツールのページに戻る
ホームページに戻る[back to home page]