1

Pythonのephemモジュールを使用して月の位置(高度と方位角)を見つけ、それを自分の場所の見かけの月の位置のルックアップテーブルと比較しようとしています。角度に対して取得した値に大きな違いがあることに気づいています。これが私のテストコードです。

>>> o = ephem.Observer()
>>> o.lat = 39.2545
>>> o.lon = -76.7095
>>> o.elevation = 80
>>> o.date = datetime.datetime.utcnow()
>>> print o.date
2012/8/13 21:00:55
>>> m = ephem.Moon(o)
>>> import math
>>> azimuth = math.degrees(m.az)
>>> azimuth
286.2894281178355
>>> alt = math.degrees(m.alt)
>>> alt
19.35235063580148

次に、これらの角度をルックアップテーブルの値と比較します。

       Date/Time             Zenith         Azimuth
2012 Aug 13 21:00:00.0      88.45125       294.56966
2012 Aug 13 21:20:00.0      91.82583       297.59090

注:Alt=90-天頂。したがって、天頂値は70.64764になります。

私の質問は、なぜ違いがあるのか​​ということです。ルックアップテーブルは見かけの角度を示します。それはそれと関係がありますか?

4

1 に答える 1

1

問題は、誤ってラジアンで値を提供していることです。これはlatlonPyEphemに浮動小数点数が与えられると、常に「生の計算」を行ってラジアンで値を送信していると想定するためです。

>>> o.lat = 39.2545
>>> o.lon = -76.7095

代わりに度を提供してPyEphemを翻訳させたい場合は、次のいずれかの文字列を提供できます。

>>> o.lat = '39.2545'
>>> o.lon = '-76.7095'

または、関数を使用して計算する数値を提供することもできますmath。これは、文字列を数値に変換するPyEphemの手法は標準のPythonイディオムではないためmath.radians()、コードを読むときに誰もが理解できるためです。

>>> o.lat = math.radians(39.2545)
>>> o.lon = math.radians(-76.7095)

あなたが実際にそれらの大きなラジアン値について尋ねていたオブザーバーは、北極に非常に近い89:07:01.8°N、284:52:09.8°Eの場所にいました。

于 2012-08-14T05:55:58.693 に答える