根据经纬度和日期计算日出日落时间

       计算日出和日落时间会比较复杂,可以通过计算当地的“正午”时间、当地的“白天”时长,用正午时间平分白天时长,得到当地的日出时间和日落时间。(几何方法--计算原理)

1.计算正午时间

      一个地方的正午时间,可以通过当地经度与当地所属时区经度的差计算得到。全世界有24个时区,每个时区相隔1小时,因此每个时区之间相差的经度是 360 / 24 = 15°。已北京为例,北京所属时区为东8区,东8区的中心经度是15 * 8 = 120°(因此东8区的范围是112.5° - 127.5°)。

北京的经度是116.46,与东8区中心相差 120 - 116.46 = 3.54,又因为1小时相当于15°,可得

时差 = 3.54 * 1 / 15 = 0.236 小时 = 14.16 分钟

地球是自西向东旋转,因此经度小于时区中心的位置,正午来得比时区中心要晚,正午时间是12:00 + 时差

       因此北京的正午时间应该是 12 + 0.236 = 12.236 小时(约12:14)

2.计算白天的时长

 


根据经纬度和日期计算日出日落时间_第1张图片
                                                                                                                    图1 

       一个地方白天的时长,可以由一定角度下的太阳光照射出的昼夜分隔线(上图经过B点的斜线),切割这个地方的纬线比例得到。纬线一圈是24小时,根据切割比例就可以得出当地的白天时长。

 


根据经纬度和日期计算日出日落时间_第2张图片
                                                                                                             图2 

         用直观一点的图2来解释,太阳以一定角度斜射地球,A地点此刻是正午,白天是B1-A-B2,夜晚是B1-C-B2,因此A点的白天时间为B1-A-B2所占的角度在24小时中的占比。

         先来看图2的左边,假设上图中阳光入射角为α, 因为太阳光线(假设太阳光的点为T)与 地球(自转)旋转中心是垂直的关系,那么太阳光线 OT垂直于OB,太阳的平行光线 QT  直于OB, 所以 太阳光线入射角 ∠QTO=∠BOO'=α。

A点的纬度为θ,根据三角函数可得::(正面正切视角)

                                             O‘B / O'O = tanα                                              (1)                                                            

                                             O'O / AO = sinθ                                               (2) 

所以 O'O = AO * sin θ  ,  O'B = O'O * tanα = AO * sin θ * tanα (AO是地球半径)

     

        再看图2的右边,是这个纬度截面的平面图:

已知 O'B = r * sin θ * tanα 。O'B1 是这个纬度截面的圆的半径 r',  这个半径的计算方法 根据下面计算经纬度距离的推算出来: 

                                              r' = r * cosθ                                                    (3) 

如正面正切视角,A,B1, B2 处于同一纬度, O'B1 =O'A= r'  ,  OA= OB = r  。根据   O'A=OA*cosθ 。那么,O'B1 =O'A=OA*cosθ= r*cosθ。 从而可以推出    r'  = r*cosθ 。

         因此 O'B1 与 O'B 的夹角 cosβ = O'B / O'B1,这样我们就能计算出β。最终可以得到:A点的白天角度cor_A = (360 - β * 2) , A点的白天时间 time_A = A点的白天角度 (cor_A )  / 360 * 24 。

为了进行上面这些计算,需要知道A点阳光入射角为α 。

3.计算阳光入射角α

        阳光入射角α是太阳光线与地球赤道面的夹角,春分和秋分时α = 0,夏至时α = 23°27′,冬至时α = - 23°27′。因为1年有365天(暂时忽略闰年的误差),春分(3月20日)、夏至(6月22日)、秋分(9月20日)、冬至(12月22日)把365天分为4个部分,因此可以根据具体日期,得到这个日期的α。

最后,举个例子

        以北京,5月25日为例,落在春分到夏至的区间内,是春分过后65天。而春分到夏至一共有92天,这个区间已经过去了65%, 0.71= 65/92;  因此可以计算得出5月25日的 α = 23°27′ * 0.71 = 16.65° 。

北京的经度:116.46,纬度:39.92,5月25日太阳光与赤道的夹角 α = 16.65° 。

代入上面的公式:

O'B = r * sin θ * tanα = r * sin 39.92 * tan 16.65 。

O'B1 = r' =  r * cosθ = r * cos 39.92 。

cosβ = O'B / O'B1 ; β = arccos(O'B / O'B1) = arccos(r * sin 39.92 * tan 16.65 / r * cos 39.92)。

北京白天在纬度切面所占的角度 = (360 - β * 2) 。

北京白天在纬度切面所占的时间 = (360 - β * 2) / 360 * 24 = 208.96 / 360 * 24 = 13.93 h 。

又根据上面的计算,北京的实际正午时间是 12.236小时 。

日出时间 = 12.236 + 13.93 / 2 = 5.27,大约是 05:16 。

日落时间= 12.236 - 13.93 / 2 = 19.201,大约是 19:12。

备注:以上方法(根据别人的方法进行修改的)只能得到一个粗略的日出日落时间,与实际时间有比较大的误差,仅用于理解日出日落时间的计算方法。

你可能感兴趣的:(太阳位置计算)