4

(Alt, Az) を (Ra, Dec) に変換してから PyEphem に戻すと、元のものが得られないことがわかりました。以下は簡単な例です。

import ephem
print ephem.__version__
# '3.7.3.4'

gbt = ephem.Observer()
gbt.long = '-79:50:23.4'
gbt.lat = '38:25:59.23'
gbt.pressure = 0 # no refraction correction.
gbt.epoch = ephem.J2000
# Set the date to the epoch so there is nothing changing.
gbt.date = '2000/01/01 12:00:00'

# Should get the north pole right?
ra, dec = gbt.radec_of(0, '38:25:59.23')
# Not the north pole... error might be abberation.
print dec
# 89:59:30.5

# Now check internal consistancy by reversing the calculation.
pole = ephem.FixedBody()
pole._ra = ra
pole._dec = dec
pole._epoch = ephem.J2000
pole.compute(gbt)
# Should get what I started with right?
alt = pole.alt
# Not what I started with... error unknown.
print alt
# 38:26:26.7

コメントで指摘されているように、30 インチはウィキペディアで述べられている最大効果の 20 インチを超えていますが、北極を正確に取得できないのは星の異常にすぎない可能性があります。

逆算しても同じ結果が得られないという事実は、私を本当に困惑させます。助言がありますか?

4

2 に答える 2

3

あなたが得ている結果は、収差章動運動の両方のために外れています。PyEphemを自分でコンパイルし、その271行目と272行目をコメントアウトすると、circum.h期待どおりの結果が得られることがわかります。これらの編集を行うと、コードは次のようになります。

    /* correct EOD equatoreal for nutation/aberation to form apparent 
     * geocentric
     */
    /* nut_eq(mjed, &ra, &dec); */
    /* ab_eq(mjed, lsn, &ra, &dec); */
    op->s_gaera = ra;
    op->s_gaedec = dec;

PyEphemに観測されたRAから「後方に移動」し、その背後の空の位置にdecするように要求すると、屈折(すでにオフになっている)と歳差運動を逆転させて答えを生成します。

なぜそこで止まるのですか?なぜ章動と異常を逆転させようとしないのですか?(実際的な理由に加えて、これらの量は簡単に元に戻すことができない高価な多項式によって推定されるということです!)

章動章動と収差を逆補償しようとしない理由は、あなたが求めているRAとdecにある物体までの範囲がわからないためです。たとえば、衛星が頭上を通過するのを見たためにそのRAとdecについて質問している場合、収差は関係ありません—地球の衛星は地球と同じ相対論的フレームで移動します—章動も関係ありません。地球の「理想的な」極がどこを指しているかに関心があります。あなたが見上げて衛星が頭上を通過するのを観察した特定の夜に、極がどこを指しているかに関心があります。

したがって、あなたが見た物体が地球衛星なのか、月なのか、太陽系の異なる相対論的フレームにある惑星なのか、それとももっと遠いものなのかを知らなくても、「libastro」ライブラリは可能な限り単純なことを行い、そこで止まります、あなたの状況にさえ当てはまらないかもしれない逆効果で答えを台無しにするのではなく。ただし、PyEphemの次のバージョンに近づくときは、このことを念頭に置いて、複数のradec_of()手法が適切でないかどうかを考えます。

于 2012-09-19T01:10:57.177 に答える