#SPICE for Python
NAIFが提供するSPICE TOOLKITはSPICEカーネルから探査機の幾何学情報を計算するツールです。これまで、FORTRANやCで開発されてきましたが、ライプラリを使ってPythonから関数を読み出すことができるようです!
NAIFのHP
http://naif.jpl.nasa.gov/naif/
##SpiceyPyインストール
pythonのライプラリは以下にあります。
https://github.com/AndrewAnnex/SpiceyPy
pip install spiceypy
でインストールできます。
簡単なドキュメントはこちら
##テストプログラム
import spiceypy as spice
spice.tkvrsn('TOOLKIT')
を実行すれば、バージョン名が出てくるはずです。
cspiceで(関数名)_cとなっている、のをspice.(関数名)とすれば基本的にOK。
入力変数などはcspiceと一緒です。
#SpiceyPyによる時刻変換
探査機Cassiniによる例。
import numpy as np
import spiceypy as spice
#カーネルの読み込み
spice.furnsh('./spice/sclk/cas00084.tsc')
spice.furnsh('./spice/lsk/naif0009.tls')
utctim='2005-06-20T19:00:00'
#UTCからETへ変換
et_ex=spice.str2et(utctim)
print 'ET:',et_ex
ti_0='0x58C448C2'#16進数
ti=int(ti_0,16)
print "TI (10進数): ",ti
scid=-90 #探査機ID
#TIからETに変換
et= spice.sct2e(scid,ti)
#ETからUTCに変換
time=spice.et2utc(et,"ISOC",6)
print "UTC: ",time
###ヘルプを見るには
help(spice.str2et)
#メモ
ひっかかったことをメモ
##et2utcとetcal
et2utc
https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/FORTRAN/spicelib/et2utc.html
ETを入力するとUTCに変換してくれる関数。一方で、
etcal
https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/FORTRAN/spicelib/etcal.html
という関数は、ETを入力するとカレンダー時間に変換してくれる関数。
計算結果が違う!
何が違うのか?
etcalはうるう秒が考慮されておらず、どういうときに使うのか不明ですが、一般的にはet2utcを使うのが良いみたいです。