回答:
GNU / Debian Linuxシステムにephem pythonパッケージをインストールしました。QGISのPythonコンソールで使用できます。私はユタ湖(米国)の近くの地点にオブザーバーを作成し、「2010/6/21」の日の昇る夕日を計算しました。スクリプトは次のとおりです。
import ephem
#defining an observer
obs = ephem.Observer()
#defining position
long = '-112.092807'
lat = '40.135114'
obs.long = ephem.degrees(long)
obs.lat = ephem.degrees(lat)
print "long = ", obs.long, "lat = ", obs.lat
#defining date
date = '2010/6/21'
obs.date = ephem.Date(date)
#defining an astronomic object; Sun in this case
sun = ephem.Sun(obs)
r1 = obs.next_rising(sun)
s1 = obs.next_setting(sun)
print "rising sun (UTC time): ", r1
print "setting sun (UTC time): ", s1
r1_lt = ephem.Date(r1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = r1_lt.tuple()
print "rising sun: (local time): {:.2f}".format( h + min/60. + s/3600. )
s1_lt = ephem.Date(s1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = s1_lt.tuple()
print "setting sun (local time): {:.2f}".format( h + min/60. + s/3600. )
QGISのPythonコンソールで実行した結果は次のとおりです。
>>>execfile(u'/home/zeito/pyqgis_scripts/ephem.py'.encode('UTF-8'))
long = -112:05:34.1 lat = 40:08:06.4
rising sun (UTC time): 2010/6/21 11:58:58
setting sun (UTC time): 2010/6/21 03:01:14
rising sun: (local time): 5.98
setting sun (local time): 21.02
これが答えです。
編集ノート:
新しい水平線の定義(例:5度):
.
.
.
obs.horizon = '5'
sun = ephem.Sun(obs)
r1 = obs.next_rising(sun)
s1 = obs.next_setting(sun)
print "rising sun (UTC time): ", r1
print "setting sun (UTC time): ", s1
r1_lt = ephem.Date(r1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = r1_lt.tuple()
print "rising sun: (local time): {:.2f}".format( h + min/60. + s/3600. )
s1_lt = ephem.Date(s1 - 6 * ephem.hour) #local time
(y, mn, d, h, min, s) = s1_lt.tuple()
print "setting sun (local time): {:.2f}".format( h + min/60. + s/3600. )
結果は次のとおりです。
>>>execfile(u'/home/zeito/pyqgis_scripts/ephem.py'.encode('UTF-8'))
long = -112:05:34.1 lat = 40:08:06.4
rising sun (UTC time): 2010/6/21 12:31:48
setting sun (UTC time): 2010/6/21 02:28:24
rising sun: (local time): 6.53
setting sun (local time): 20.47
PyEphemのようなライブラリを使用して、特定の場所について、標高、日、時間(および惑星;)の太陽の方位角と高度角を見つけることができます。
これを行うには少しのpythonを使用できますが、最初に、観測者の位置から、現実世界の地平線が向いているように見える角度の辞書またはテーブルを生成する必要があります。これは、0 =真北で1度間隔で、各角度で水平線の角度を与える必要があります。これは、r.horizonから取得できます。
次に、pyephem
a)を使用してobserver
、観測者の緯度、経度、高度で作成し、特定の日の1分ごとに、太陽の見かけの位置を計算します。これらは、ra、dec、altの4つの値として与えられます。とaz。
次に、各時間値について、その方位角で高度と仰角テーブルの値を比較できます。また、高度がテーブルの値よりも大きい場合は、太陽を見ることができます。
特定の日に、太陽が谷で昇り、山の後ろの場所から出て、山の向こう側または向こう側に再び現れるいくつかのポイントを見つけることさえ可能です。