[转载]关于太阳(卫星)天顶角,太阳高度角,太阳方位角的整理

无论在摄影测量还是在定量遥感领域经常会和这三个角度打交道,尤其是在辐射传输理论中很多公式的推导和结果中老是出现θ,h,δ等形式的三角函数。
在参考百科知识和几篇博文的基础上,稍微具体地整理下三者的区别、联系和计算方法。

1.天顶角(Zenith Angle)
天顶角指光线入射方向和天顶方向的夹角,有个英文解释地挺好的:The zenith angle is the angle between the zenith line( pointing straight up) and the direction to the sun (Satellite)。

2.太阳高度角(Solar Elevation Angle)
太阳高度角指太阳光的入射方向和地平面之间的夹角,简称太阳高度(物理含义为角度)。其是决定地球表面获得太阳热能数量的最重要因素。其中太阳高度角和太阳天顶角 互为余角。

                  [转载]关于太阳(卫星)天顶角,太阳高度角,太阳方位角的整理

3.太阳方位角(Solar Azimuth Angle)
太阳方位角即太阳所在的方位,指太阳光线在地平面上的投影与当地子午线的夹角,可近似地看作是竖立在地面上的直线在阳光下的阴影与正南方向的夹角。其中方位角以正南方向为0,由南向东向北为负,有南向西向北为正。eg,太阳在正东方,则其方位角为-90度;在正东北方时,方位角为-135度;在正西方时,方位角是90度,在正西北方为135度;当然在正北方时方位角可以表示为正负180度。
[转载]关于太阳(卫星)天顶角,太阳高度角,太阳方位角的整理
从其他博文中转来了这两张图,描述的挺清晰的。
【注】参考:http://coldwillowqq.blog.163.com/blog/static/615177612008121114551375/

至于三者的计算可以通过日期时间及当地的经纬度进行推算得到,详细的步骤前人早已总结,可参考: 《根据日期、时间和当地经纬度计算太阳天顶角和方位角的原理》
http://mayumeide.blog.163.com/blog/static/4682167420091189045515/

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了计算太阳太阳高度顶角太阳方位角和剖面,我们需要使用一些数学公式和常数。以下是用Python编写的程序。 import math # 常数 DEG_TO_RAD = math.pi / 180.0 RAD_TO_DEG = 180.0 / math.pi DAYS_IN_YEAR = 365 # 输入 latitude = float(input("请输入纬度(单位:度):")) longitude = float(input("请输入经度(单位:度):")) date = input("请输入日期(格式:YYYY-MM-DD):") time = input("请输入时间(格式:HH:MM:SS):") # 计算儒略日 date_parts = date.split("-") time_parts = time.split(":") year, month, day = int(date_parts[0]), int(date_parts[1]), int(date_parts[2]) hour, minute, second = int(time_parts[0]), int(time_parts[1]), int(time_parts[2]) if month <= 2: year -= 1 month += 12 a = year // 100 b = 2 - a + a // 4 jd_day = int(365.25 * (year + 4716)) + int(30.6001 * (month + 1)) + day + b - 1524.5 jd_hour = hour + minute / 60.0 + second / 3600.0 jd = jd_day + jd_hour / 24.0 # 计算黄赤交 n = jd - 2451545.0 L = 280.460 + 0.9856474 * n g = 357.528 + 0.9856003 * n lamda = L + 1.915 * math.sin(g * DEG_TO_RAD) + 0.020 * math.sin(2 * g * DEG_TO_RAD) epsilon = 23.439 - 0.0000004 * n alpha = math.atan2(math.cos(epsilon * DEG_TO_RAD) * math.sin(lamda * DEG_TO_RAD), math.cos(lamda * DEG_TO_RAD)) * RAD_TO_DEG delta = math.asin(math.sin(epsilon * DEG_TO_RAD) * math.sin(lamda * DEG_TO_RAD)) * RAD_TO_DEG # 计算时 time_offset = longitude / 15.0 solar_noon = 12.0 - time_offset hour_angle = (jd_hour - solar_noon) * 15.0 if hour_angle > 180.0: hour_angle -= 360.0 elif hour_angle < -180.0: hour_angle += 360.0 # 计算太阳高度顶角 latitude_rad = latitude * DEG_TO_RAD delta_rad = delta * DEG_TO_RAD hour_angle_rad = hour_angle * DEG_TO_RAD cos_theta = math.sin(latitude_rad) * math.sin(delta_rad) + math.cos(latitude_rad) * math.cos(delta_rad) * math.cos(hour_angle_rad) theta = math.acos(cos_theta) * RAD_TO_DEG zenith = 90.0 - theta # 计算方位角 azimuth_cos = (math.sin(delta_rad) - math.sin(latitude_rad) * cos_theta) / (math.cos(latitude_rad) * math.sin(theta * DEG_TO_RAD)) azimuth_sin = math.sin(hour_angle_rad) * math.cos(delta_rad) / math.sin(theta * DEG_TO_RAD) azimuth = math.atan2(azimuth_cos, azimuth_sin) * RAD_TO_DEG if azimuth < 0.0: azimuth += 360.0 # 计算剖面 declination_cos = math.cos(delta_rad) latitude_cos = math.cos(latitude_rad) cos_alpha = math.sin(theta * DEG_TO_RAD) * math.sin((90.0 - zenith) * DEG_TO_RAD) / (declination_cos * latitude_cos) alpha = math.asin(cos_alpha) * RAD_TO_DEG # 输出结果 print("太阳:{:.4f} 度".format(hour_angle)) print("太阳高度:{:.4f} 度".format(theta)) print("顶角:{:.4f} 度".format(zenith)) print("太阳方位角:{:.4f} 度".format(azimuth)) print("剖面:{:.4f} 度".format(alpha)) 这个程序的输入包括纬度、经度、日期和时间。程序用输入的参数计算儒略日,并计算出黄赤交太阳的赤纬和赤经。然后程序计算出时太阳高度顶角太阳方位角和剖面,最后输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值