LoginSignup
5
4

More than 5 years have passed since last update.

PythonでNAIF SPICE TOOLKITを使う

Last updated at Posted at 2016-07-28

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を使うのが良いみたいです。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4