18

PyEphemを使用して夜明け、夕暮れ、日没の時間を計算することは可能ですか?PyEphemを使用して昼と夜の時間を作成しましたが、日没/夕暮れ/夜明けには何も見つかりませんでした

4

3 に答える 3

30

次のスクリプトは、PyEphemを使用して日の出、日の入り、薄明の時間を計算します。コメントは、各部分が何をしているのかを説明するのに十分なはずです。

import ephem

#Make an observer
fred      = ephem.Observer()

#PyEphem takes and returns only UTC times. 15:00 is noon in Fredericton
fred.date = "2013-09-04 15:00:00"

#Location of Fredericton, Canada
fred.lon  = str(-66.666667) #Note that lon should be in string format
fred.lat  = str(45.95)      #Note that lat should be in string format

#Elevation of Fredericton, Canada, in metres
fred.elev = 20

#To get U.S. Naval Astronomical Almanac values, use these settings
fred.pressure= 0
fred.horizon = '-0:34'

sunrise=fred.previous_rising(ephem.Sun()) #Sunrise
noon   =fred.next_transit   (ephem.Sun(), start=sunrise) #Solar noon
sunset =fred.next_setting   (ephem.Sun()) #Sunset

#We relocate the horizon to get twilight times
fred.horizon = '-6' #-6=civil twilight, -12=nautical, -18=astronomical
beg_twilight=fred.previous_rising(ephem.Sun(), use_center=True) #Begin civil twilight
end_twilight=fred.next_setting   (ephem.Sun(), use_center=True) #End civil twilight

地平線を再配置すると、地球の湾曲の周りで屈折する光が考慮されます。PyEphemには、温度と圧力を指定してこれをより正確に計算する機能がありますが、米国海軍アストロノミカルアルマナックは、大気を無視して地平線を移動することを好みます。ここでUSNAAを参照するのは、この種の計算をチェックできる信頼できる情報源だからです。NOAAのウェブサイトでも回答を確認できます。

PyEphemはUTC時間で値を取得して返すことに注意してください。これは、おそらく探している答えを見つけるために、現地時間をUTCに変換してから、UTCを現地時間に戻す必要があることを意味します。私がこの回答を書いた日、カナダのフレデリクトンは、ADTタイムゾーンでUTCより3時間遅れていました。

キックについては、太陽の正午の計算も入れました。これは、予想よりも1時間長くなることに注意してください。これは、夏時間を使用することの副作用です。

これはすべて戻ります:

begin civil twilight: 2013/9/4 09:20:46
sunrise:              2013/9/4 09:51:25
noon:                 2013/9/4 16:25:33
sunset:               2013/9/4 22:58:49
end civil twilight:   2013/9/4 23:29:22

それらをADTタイムゾーンに変換するには、3時間を差し引く必要があることに注意してください。

このPyEphemのドキュメントページには、上記の多くが含まれていますが、混乱を招いた点を明確にし、そのリンクの重要な部分をStackOverflowに含めようとしました。

于 2013-09-04T20:13:17.577 に答える
16

夜明けと夕暮れについては、夕暮れに関するpyephemのドキュメントを参照してください
。一言で言えば、夜明けと夕暮れは、太陽の中心が地平線の下の特定の角度にある時間を表します。この計算に使用される角度は、それぞれ6度、12度、および18度を使用する「民間」、ナビゲーション(航海)、および天文の黄昏の定義によって異なります。

反対に、日の出は、地平線の真上/真下(0度)に太陽の端が現れる(または日没の場合は消える)時間に対応します。したがって、すべての人、民間人、船員、天文学愛好家は同様に同じ立ち上がり/設定時間を取得します。(海軍天文台の上昇とpyephemドキュメントの設定を参照してください)。

要約すると、適切にパラメータ化するとpyephem.Observer(緯度、長さ、日付、時刻、圧力(?高度の場合は?)などを設定)、さまざまな薄明時刻(夜明け、夕暮れ)、および日の出と日の入りの時刻が次のように取得されます。
Observer.previous_rising()およびObserver.next_setting()メソッド。最初
  の引数はephem.Sun()であり
  、薄明計算ではuse_center=引数を設定する必要があり   、地平線は0(または大気の屈折を考慮する場合は0:34)または-6、-12、または-18のいずれかです。 。True

于 2010-04-14T12:49:31.427 に答える
5

夕暮れ/夜明けのさまざまな定義に従って、地平線の下horizonにパラメータを設定してみることができます。

于 2010-04-14T12:46:17.153 に答える