You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

solartime R包computeSunPosition计算悉尼太阳位置输出结果异常问题

问题排查与修复方案

1. 核心问题:时区设置错误

你当前传入的DateTime字段被强制标记为UTC时区,但实际时间为澳大利亚悉尼的当地时间。你所在的经度对应东十区,比UTC早10小时,错误的时区标记会导致函数计算的太阳时完全偏离实际值,是方位角曲线异常、达不到0的主要原因。
修复代码如下:

latdeg<--33.611627
longdeg<-150.745147

NewDat<-as.data.frame(C3$DateTime)
colnames(NewDat)<-c("DateTime")
# 修正DateTime时区为悉尼当地时区
NewDat$DateTime <- as.POSIXct(NewDat$DateTime, tz = "Australia/Sydney")
# 重新计算太阳位置
sunposition<-as.data.frame(computeSunPosition(timestamp = NewDat$DateTime,latDeg = latdeg,longDeg = longdeg))
sunposition$DateTime<-NewDat$DateTime

2. 方位角单位与定义适配

computeSunPosition返回的azimuth默认单位为弧度,范围为[-π, π],如果你需要使用0~360°的角度值,可以增加转换代码:

# 弧度转角度,负值转换为0~360°范围
sunposition$azimuth_deg <- sunposition$azimuth * 180 / pi
sunposition$azimuth_deg <- ifelse(sunposition$azimuth_deg < 0, sunposition$azimuth_deg + 360, sunposition$azimuth_deg)

该包默认方位角定义为正北为0、顺时针递增,由于你处于南半球南回归线以南,全年正午太阳都在正北天区,修正时区后正午(悉尼当地时间12点左右)的方位角会接近0/360°,时间-方位角曲线也会变为平滑的U型。

3. 结果验证

修正后可以校验正午数据:4月太阳赤纬接近0,当地正午太阳高度应该在56°左右,和计算值匹配即可确认结果正确。

内容的提问来源于stack exchange,提问作者ChelseaRae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:48:05