太阳时的计算的Python程序

基本概念

太阳时(Solar Time)

基于太阳在太阳正午时穿过天空的视角运动的时间太阳穿过观察者的子午线的时间。
太阳时是用于所有太阳角度关系的时间;它与本地时间不一致。有必要通过两次修正将标准时间(本地时间)转换为太阳时。首先,对观察者的子午线(经度)和当地标准时间所依据的子午线之间的经度差进行不断的修正。太阳横穿经度1°需要4分钟。第二个修正来自时间方程,它考虑了地球自转率的扰动,这些扰动影响了太阳穿过观察者子午线的时间。太阳时间和标准时间的分钟差是
在这里插入图片描述
太阳时 - 标准时 = 4(Lst - Lloc)+ E (min)
经度每相差1°,在时间上就相差4min。
standard_time —— 当地时间(当地所用时区的时间);
Lst —— the standard meridian for the local time zone;当地时区(GMT)的标准子午线
(寻找局部标准子午线,将局部标准时钟时间与格林尼治标准时间的时差乘以15。北京时间,Lst = -120°)
标准时区(GMT,格林尼治标准时间),全球划分东西十二区,北京是东八区,伦敦是0区,纽约是西五区。北京的Lst=(-8-0)×15°=-120°,纽约的Lst=(5-0)×15°=75°
Lloc —— the longitude of the location in question, and longitudes are in degrees west, that is, 0° < L < 360°;当地经度,经度单位为西度,即0°<L<360°。
所在地点在东半球取负号,西半球取正号。同样东区取负号,西区取正号。
The parameter E —— the equation of time (in minutes) from Figure 1.5.1 or Equation 1.5.3。参数E是图1.5.1中的时间方程(以分钟为单位)或方程1.5.36
在这里插入图片描述在这里插入图片描述
所有方程都使用度,而不是弧度
B is found from Equation 1.4.2
在这里插入图片描述
n is the day of the year(n是一年里的第几天). Thus 1 ≤ n ≤ 365.
【请注意时间单位】:标准子午线的时间和位移方程均以分钟为单位,并且夏令时和标准时间之间存在60分钟的差异。时间通常以小时和分钟为单位。应用修正时必须小心,总修正时间可能超过60分钟。

太阳时例题

在这里插入图片描述
在这里插入图片描述
代码:

#太阳时
#以美国 威斯康星州 麦迪逊(Madison , Wisconsin)为例
#威斯康星州 麦迪逊位于89°23' W, 43°05' N。西6区
from sympy import *
L_loc = 89.4    #当地经度,东经度取负号,西经度取正号
L_st = (6-0)*15    #局部标准时钟时间与格林尼治标准时间的时差乘以15
month = 2
day = 3

#n()是一年里的第几天
def n():
    d_num = 0
    for m in 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个计算太阳高度角的Python程序: ```python import math import datetime # 经度和纬度(北京) lat = 39.9 lng = 116.4 # 当前时间 now = datetime.datetime.now() # 计算儒略日 d = now.toordinal() - datetime.datetime(2000, 1, 1).toordinal() + 366 + (now - datetime.datetime(now.year, 1, 1)).total_seconds() / (24 * 60 * 60) # 计算太阳时角 t = (d - 1) / 36525 l0 = math.radians(280.46645 + 36000.76983 * t + 0.0003032 * t ** 2) m = math.radians(357.52910 + 35999.05030 * t - 0.0001559 * t ** 2 - 0.00000048 * t ** 3) e = 0.016708617 - 0.000042037 * t - 0.0000001236 * t ** 2 c = (1.914600 - 0.004817 * t - 0.000014 * t ** 2) * math.sin(m) + (0.019993 - 0.000101 * t) * math.sin(2 * m) + 0.000290 * math.sin(3 * m) theta = l0 + c nu = m + c alpha = math.atan2(math.sin(theta) * math.cos(0.00005 * math.pi / 180), math.cos(theta)) delta = math.asin(math.sin(0.00005 * math.pi / 180) * math.sin(alpha)) H = math.radians((now.hour + now.minute / 60 + now.second / 3600 + now.microsecond / 3600000) * 15 - lng - math.degrees(alpha)) # 计算太阳高度角 sin_h = math.sin(math.radians(lat)) * math.sin(delta) + math.cos(math.radians(lat)) * math.cos(delta) * math.cos(H) h = math.degrees(math.asin(sin_h)) print("太阳高度角:", h) ``` 这个程序首先获取了经度和纬度(这里以北京为例),并获取当前时间。然后计算了儒略日,以及一系列与日地运动相关的参数。最后计算了太阳的高度角,并将其输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值