


今までは、目的の衛星のデータをダウンロードした後にグラフ化を行っていた。
今回は、過去の全てのTLEをダウンロードした後に、全部読み込んでグラフ化を行っている。
とはいえ、SpaceTrackのデータは膨大なので、過去のすべての観測データをリクエストするとリジェクトされる。そのため、ある1日の区間を指定し、それを365回繰り返して1年分のデータを取得した。SpaceTrackはリクエストの間隔が短いとサーバー負荷の削減のため、これもまたリジェクトされるので、適当な(SpaceTrackが指定する)インターバルで取得するようにしている。1年分のダウンロードはかなり時間がかかる。
そして、テキストデータで、量も膨大なため、1年分で1GBを超えるデータになる。
また、すべてのデータを読み込むと、データ量が膨大になるため、メモリが足りなくなる。x64用にビルドすれば多分問題ないだろうけど、それにしたって一気に大量のデータを溜め込むことに変わりはない。そのため、1日毎のファイルを開き、条件に一致すればそのTLEをリストに追加する、という処理を行っている(実際には、フィルタリングしたTLEをファイルに書き出して、そのファイルをキャッシュとして読み直している)。
この方法だと、例えばIridiumなら名前で判断できるし、ISS放出なら国際符号付近の文字一致(”U 98067”)で判断できる。逆に、「一時的に静止軌道に入った物体の一覧」を得たい場合は、1パスでは処理できないので、2パスで処理する必要がある。
大量のファイルにアクセスする場合、アンチマルウェア系の処理がボトルネックになりがち。予めホワイトリストに入れておくとか、ファイルを結合しておくとか、一工夫が必要。
あとはファイルアクセスもボトルネックになりそう。1年で1GBならRAMDISCで4GiBくらいのドライブを作ってそこにデータを突っ込んだ上で処理したほうがいいかも。あるいは、アンチマルウェア対策でファイルの結合を行っておけば、シーケンシャルリードで読めるのでファイルアクセスのボトルネックも軽減できる。
ローカルに過去のTLEを溜め込んでおけば、処理が大変ってこと以外は、データ解析はやりやすいな。ブレークアップの推定とかはやってみたいかも。軌道変化の大きい衛星を集めてグラフ化したりしたら楽しそうだけど、どうやってフィルタリングすればいいのか想像もつかないな。
***
追記
試しにTLEの個数を日別にグラフ化。

あんまり右肩上がりという印象じゃないな。軌道上の個数ではなく、単純にTLEの出現数である点に注意(たとえば、軌道上物体が増えても観測可能物体数は増えないかもしれない)。
7月11日は観測数が極めて少ない。Wikipediaによると、このときは複数の州がハリケーンで非常事態を宣言したそうだ。
8月11日も少ないけど、このときはアメリカの付近では特にイベントはなさそう。グアテマラで選挙があったらしい。
単純に夏場の11日は観測していないという可能性も…
***
追記
試しに最初に出現したEpochと最後に出現したEpochから、軌道上の物体数をカウントしてみた。

最初と最後が下がってるのはデータ処理の問題。最初に立ち上がって安定するのに30日くらいかかってるので、一部の物体は再観測まで30日程度かかるものもある、と考えられる。
今の所物体数は1万8千くらいで推移しているようだ。少しずつ増えてる。
先のグラフによれば、1日の観測数は2万強といったあたりだから、いくつかの物体は数日単位で観測していることも考えると、1日に複数回観測されている衛星もあると考えられる。実際、ISSは1日に5回ほどTLEが更新されていたりする。
有名所のブレークアップだと、2007年に中国の衛星破壊、2009年に衛星の衝突が発生している。2006年頃は1万+くらいで遷移していたらしい。そこまで遡らなきゃいけないか。。。十数年分のダウンロード、1週間くらいかかりそう。
***
追記
18年分のDLが終了。あとで17年分を開始する。1日に1年分、くらいのペースかな。
Winのセキュリティ除外にexeを登録したけど、相変わらずアンチマルウェア走ってる気がする。
1年分のTLEを1個にまとめたら1GBちょっと。まるごと読み込むとメモリ足りないのでx64でビルドして処理。アンチマルウェアは問題ないけど、相変わらず遅い。まぁ、処理の問題かな、という感じ。1ヶ月毎くらいで分割して、マルチコアで解析したほうがいいかも。あるいは、今後複数年分処理するようになれば、それぞれの年ごとにコアを振り分けるとか。
RAMディスクに入れれば爆速で読み込めそうだけど、せいぜい8GiBくらいしか確保できないだろうし、TLE入れようとすると5年分くらいか。処理の内容によってかなぁ。
今だとSSD安いし、データ解析時に使う用に200GB前後を1本載せておいてもいいかもしれない。ノートはSSDに換装したけど、こっちはCPU遅いしRAM少ないからなぁ。。。
Visual Studioさん、1GB超えるファイルもちゃんと読み込んでサクサク動くのすごい。さすがに検索のマーカーは表示しきれないけど、文字列検索自体は普通に動くし。
Cドライブの空き容量レッドゾーンだし、古いCPUだし、そろそろメインPC買い替えたい。。。仕事で使うPCじゃないから、投資対象として大きな額使えないのが厳しい。デスストとかMSFX2020とかやりたいし、ゲーミングPCほしい。って、ソフト買ったらハードに回すお金吹き飛ぶやつ……
0 件のコメント:
コメントを投稿