高度と方位角についてのあなたの理解は正しいように聞こえます。天の南極は、南緯 30 度の人の南の地平線の 30 度上にあります。
ただし、コードに対して 1 つまたは 2 つの修正を加えることができます。
まず、スペルミス。度をラジアンに変換する探している関数には名前が付けられていますephem.degrees()
(複数形であることに注意してください) ephem.degree
。関数として呼び出そうとすると、例外が発生します。
TypeError: 'float' object is not callable
ephem.degree
は実際には浮動小数点数 0.0174532925199 であるため、これは 1 度にラジアンがいくつあるかです。また、浮動小数点数を関数のように呼び出すことはできません! それを修正すると、例の正しい動作コードが得られます。
az = float(ephem.degrees('180'))
alt = float(ephem.degrees('30'))
ra, dec = obs.radec_of(az,alt)
print ra, dec
→ 12:30:10.05 -89:53:54.7
しかし、コードをもっと簡単にすることができます!
まず、 の戻り値ephem.degrees()
はすでに浮動小数点数であるため、そのfloat()
周りの呼び出しは実際には必要ありません。あなたはただ言うことができます:
az = ephem.degrees('180')
alt = ephem.degrees('30')
これらの 2 つの値は、 への引数として問題ありませんradec_of()
。実際には、もっとうまくやることができます:radec_of()
関数は、方位角と高度が伝統的に度で与えられることを知っているので、文字列を関数自体に渡すだけで、文字列内の数値が度で書かれていると仮定します。したがって、必要に応じて変数az
とalt
変数を完全に削除して、次のように言うことができます。
ra, dec = obs.radec_of('180', '30')
最後に、返された赤経と赤緯が南極に近いにもかかわらず、正確に南極になかったのはなぜかと思うかもしれません。
最初の理由は、PyEphem が大気の屈折を考慮に入れているためです。これにより、低高度で地平線上のオブジェクトの見かけの高度が上昇します。大気の影響を無視するようにオブジェクトに指示するObserver
と (私たちが住んでいる場所には空気がなく、気圧がゼロであることを伝えることによって)、戻り値はさらに南極に近くなります。
obs.pressure = 0
ra, dec = obs.radec_of('180', '30')
print ra, dec
→ 12:24:25.48 -89:55:15.9
明らかに、それは私たちを近づけます。歳差運動とおそらく章動に関連する 1 つまたは 2 つの問題が残っており、実際に赤緯を完全に -90° まで下げるために取り組む必要があります。