satoh

知っているようで知らないデジタル図形処理 ~任意形状図形の選択から交点・接点・接線計算まで、方程式では解けないノウハウを紹介

   

日の出時間と日没時間の計算方法

日の出時間と日没時間の差って…

釧路と沖縄の日の出時間は夏至で1時間40分、冬至で10分違います。
場所と季節で毎日変わっていくわけです。同一緯度であれば経度方向の距離がそのまま日の出日没時間差、つまり日照時間が同じということです。同一経度であれば緯度方向で日照時間が変化します。
おなじ日本でも釧路と沖縄では全然違うわけです。
そこで、完全に正確ではなくてもおおよその日の出日没時間を計算できるものを作ってみたので備忘録替わりに書いておきます。

計算してみる

とりあえず標高は考慮しません。国立天文台とか理科年表に出ている日の出日没時間は、標高および「人の目の高さ≒1.2m」を考慮していると思います。
ここではごく簡単に求めたいと思います。

    φ  :緯度
    L   :経度
    δ   :太陽赤緯
    ωs :時角
    h   :太陽高度

上記のように定義したとき、太陽高度を求めるには、

     sin(h) = sin(φ) * sin(δ) + cos(φ) * cos(δ) * cos(ω)  ….(1)

南中したときの時刻は、

     hour = ((9 – Et + 12) * 15 – L) / 15 …(2)

ここで、日の出・日没というのは太陽高度=0の時と考えられるので、h = 0 として(1)を解けばいいのです。

    0          = sin(φ) * sin(δ) + cos(φ) * cos(δ) * cos(ωs)
    cos(ωs) = -(sin(φ) * sin(δ)) / (cos(φ) * cos(δ))
                = -tan(φ)*tan(δ)
    ∴ωs = cos-1(-tan(φ)*tan(δ))

となるので、(2)と合わせて、

    日出時刻 = (-ωs + (9 – Et + 12) * 15 – L) / 15
    日没時刻 = ( ωs + (9 – Et + 12) * 15 – L) / 15

となるわけです。
これにもうちょっと考慮して、太陽のみかけ半径と大気の屈折率を考慮します。

太陽の視半径  : 16′
屈折率           : 34′
※合わせて50’程度

これを加味して、太陽高度を0とせず、

    -50’/60 = sin(φ) * sin(δ) + cos(φ) * cos(δ) * cos(ωs)
    cos(ωs) = (-50’/60 -sin(φ) * sin(δ)) / (cos(φ) * cos(δ))

でωsを解けばかなり理論値に近くなります。

 - ソーラー, 計算