太陽系天体暦¶
astropy.coordinates
計算できます SkyCoord
太陽系の主要な天体ですデフォルトでは、それは使用されます PyERFA ルーチンは、JPL天体暦(動力学モデルから派生する)を使用するより正確な天体暦を使用することもできる。デフォルトのジェット推進実験室天体暦(DE 430)は、約1550年から2650年の間に有効な予測を提供する。このファイルサイズは115 MBであり、この機能を初めて使用する場合にはファイルをダウンロードする必要がありますが、その後キャッシュされます。
注釈
JPL天体暦使用要求 jplephem ソフトウェアパッケージをインストールする。この最も便利な実現方法は pip install jplephem
あなたが使用しているどんなパケット管理システムにもかかわらず、それを持っているかもしれません。
Three functions are provided; get_body()
,
get_moon()
and
get_body_barycentric()
. The first two functions
return SkyCoord
objects in the GCRS
frame, while the
latter returns a CartesianRepresentation
of the
barycentric position of a body (i.e., in the ICRS
frame).
実例.¶
以下は、これらの関数を内蔵天体暦と共に使用する例である(すなわち、大型天体暦ファイルをダウンロードする必要はない)。
>>> from astropy.time import Time
>>> from astropy.coordinates import solar_system_ephemeris, EarthLocation
>>> from astropy.coordinates import get_body_barycentric, get_body, get_moon
>>> t = Time("2014-09-22 23:22")
>>> loc = EarthLocation.of_site('greenwich')
>>> with solar_system_ephemeris.set('builtin'):
... jup = get_body('jupiter', t, loc)
>>> jup
<SkyCoord (GCRS: obstime=2014-09-22 23:22:00.000, obsgeoloc=(3949481.69182405, -550931.91022387, 4961151.73597633) m, obsgeovel=(40.159527, 287.47873161, -0.04597922) m / s): (ra, dec, distance) in (deg, deg, AU)
(136.91116253, 17.02935396, 5.94386022)>
上の図では solar_system_ephemeris
文脈としては,以下の位置にある場合にデフォルト天体暦を設定する with
部分文は,末尾にリセットする.
内蔵天体暦よりも正確な位置を得るためには(参照) 内蔵天体暦の精度 )、ご利用いただけます de430
上記の天体暦、あるいは1950年から2050年までの時間だけを気にしている場合は、選択してください de432s
天体暦は、より小さい約10 MBのファイルに格納される(天体暦を設定すると、ファイルをダウンロードしてキャッシュする):
>>> solar_system_ephemeris.set('de432s')
<ScienceState solar_system_ephemeris: 'de432s'>
>>> get_body('jupiter', t, loc)
<SkyCoord (GCRS: obstime=2014-09-22 23:22:00.000, obsgeoloc=(3949481.69182405, -550931.91022387, 4961151.73597633) m, obsgeovel=(40.159527, 287.47873161, -0.04597922) m / s): (ra, dec, distance) in (deg, deg, km)
(136.90234846, 17.03160654, 8.89196021e+08)>
>>> get_moon(t, loc)
<SkyCoord (GCRS: obstime=2014-09-22 23:22:00.000, obsgeoloc=(3949481.69182405, -550931.91022387, 4961151.73597633) m, obsgeovel=(40.159527, 287.47873161, -0.04597922) m / s): (ra, dec, distance) in (deg, deg, km)
(165.51854528, 2.32861794, 407229.55638763)>
>>> get_body_barycentric('moon', t)
<CartesianRepresentation (x, y, z) in km
( 1.50107535e+08, -866789.11996916, -418963.55218495)>
所与の天体暦の一度の計算については、様々な関数に直接渡すこともできる。
>>> get_body_barycentric('moon', t, ephemeris='de432s')
...
<CartesianRepresentation (x, y, z) in km
( 1.50107535e+08, -866789.11996916, -418963.55218495)>
>>> get_body_barycentric('moon', t, ephemeris='builtin')
...
<CartesianRepresentation (x, y, z) in km
( 1.50107516e+08, -866828.92702829, -418980.15907332)>
ポストを計算できるエンティティリストについては、以下の操作を実行してください。
>>> solar_system_ephemeris.bodies
('sun',
'mercury',
'venus',
'earth-moon-barycenter',
'earth',
'moon',
'mars',
'jupiter',
'saturn',
'uranus',
'neptune',
'pluto')
>>> solar_system_ephemeris.set('builtin')
<ScienceState solar_system_ephemeris: 'builtin'>
>>> solar_system_ephemeris.bodies
('earth',
'sun',
'moon',
'mercury',
'venus',
'earth-moon-barycenter',
'mars',
'jupiter',
'saturn',
'uranus',
'neptune')
注釈
太陽はこれらの天体暦に含まれていますが重要なのは get_sun
つねに内蔵された多項式モデルを用いている(これは特殊なダウンロードを必要としないため).だから当然とは思えない get_body(time, 'sun')
そして get_sun(time)
同じ結果が出ます
内蔵天体暦の精度¶
地球以外の惑星の位置と速度を計算するためのアルゴリズム ERFA 著者はJ.L.Simon,P.Bretagnon,J.Chaprt,M.Chaprt−Touze,G.FrancouとJ.Laskar(フランスパリ経度局)である。JPL天体暦DE 102との比較により,以下の1800-2050区間における最大誤差を引用した.詳細についてはご参照ください PyERFA 日常的な仕事。 erfa.plan94
それがそうです。地球については,位置と速度の平均二乗誤差はそれぞれ約4.6 kmと1.4 mm/sであった(参照 erfa.epv00
)。
惑星.惑星 |
L(弧) |
B(弧) |
R(キロ) |
水銀. |
4 |
1 |
300 |
金星. |
5 |
1 |
800 |
EMB |
6 |
1 |
1000 |
火花 |
17 |
1 |
7700 |
ジュピター |
71 |
5 |
76000 |
土星.土星 |
81 |
13 |
267000 |
天王星 |
86 |
7 |
712000 |
海王星 |
11 |
1 |
253000 |