光伏超短期预测:0–4 小时云团外推临近预报

做光伏功率预测的人都知道,最难啃的不是明天后天,而是未来 0–4 小时这一段。数值天气预报(NWP)在这个时间尺度上还没"反应过来"——它的更新周期和空间分辨率决定了它对一团正在飘过电站的积云无能为力;而真正决定光伏瞬时出力的,恰恰就是这团云挡没挡住太阳。于是行业把目光投向了一类专门方法:云团外推临近预报(nowcasting)。它不解物理方程,而是直接从连续的卫星云图或地基全天空图像里"看"云往哪走、走多快,再把云场向前平移几十分钟到几小时,反推到地面的太阳辐照。本文核实这一方向的几篇关键文献,把云外推、晴空指数、超短期适用范围与误差量级讲清楚。
关键要点
- 0–4 小时光伏临近预报的主力方法是云团外推:直接从卫星云图或地基全天空图像估计云移动矢量(CMV),把云场向前平移再反推地面太阳辐照,而非求解 NWP 物理方程。
- 在 0–4 小时短临窗口,云外推显著优于数值天气预报(NWP);但优势随时效衰减,超过约 4–6 小时后 NWP 反而占优。
- 晴空指数(clear-sky index)是统一历史与实时的"通用货币":先把辐照换算成晴空指数再建模,可剥离太阳高度角的日变化,让模型聚焦在"云"这个真正的不确定性来源上。
- 红外夜间云指数让预报起点提前到日出前数小时:用 SEVIRI 的 10.8 µm 与 3.9 µm 亮温差弥补可见光通道夜间失效的盲区。
- 深度学习可在卫星外推上再挤出约 10% 量级的提升(Straub 等 2024 的 HelioNet 相对经典 CMV 基线),但所有 RMSE 数字都强依赖站点、年份与基线,不能直接当成交付承诺。
背景与定位
云团外推临近预报的方法体系,奠基性工作之一是 Lorenz、Hammer 与 Heinemann 在 2004 年欧洲太阳能大会(EuroSun)上发表的 Short term forecasting of solar radiation based on satellite data。这篇会议论文系统提出了用 Meteosat 卫星序列图像、通过类似块匹配(block matching,思路接近粒子图像测速 PIV)的统计方法估计云结构位移,进而把云场外推到未来、覆盖 30 分钟到 6 小时时效的框架。
在此基础上,德国奥尔登堡大学(University of Oldenburg)与德国航空航天中心(DLR)一脉的研究持续推进。一个代表性成果是 Hammer、Kühnert、Weinreich 与 Lorenz 于 2015 年发表在 Remote Sensing 的 Short-Term Forecasting of Surface Solar Irradiance Based on Meteosat-SEVIRI Data Using a Nighttime Cloud Index——它解决了一个很实际的痛点:传统可见光通道在日出前无法获取云信息,而该文用 SEVIRI 红外通道(10.8 µm 与 3.9 µm)的亮温差(BTD)构造"夜间云指数",让预报链路在日出前几小时就能起步。
地基一侧的权威坐标,则可参考 Logothetis 等人 2022 年发表在 Renewable Energy 的全天空成像仪(all-sky imager, ASI)临近预报基准评测;而把深度学习引入卫星外推、试图替代经典云移动矢量的代表,是 Straub、Karalus、Herzberg 与 Lorenz 于 2024 年发表在 Solar RRL 的工作。这几篇覆盖了"经典外推—红外补盲—地基基准—深度学习"四个维度,构成了理解这一方向的核心地图。
方法 / 它做了什么
云外推临近预报的核心逻辑可以拆成三步,工程上非常直观。
第一步,把图像变成晴空指数(或云指数)。 无论卫星还是地基相机,原始像素值受太阳几何、地表反照率影响很大,不能直接用。Heliosat 类方法的做法是:先估计每个像元的"晴空参考值",再用实测反射率与之比较,得到一个 0 到 1 之间的云指数(cloud index)——越接近晴空越小,云越厚越大。它的补集就是晴空指数(clear-sky index, kt*),即"当前辐照 / 同时刻理论晴空辐照"。这一步的意义在于把"看天气"变成了一个尺度统一、可外推的标量场。
第二步,估计云怎么动。 对前后两帧云指数图像,用块匹配或光流(optical flow)求出每个区域的位移,得到一张**云移动矢量(cloud motion vector, CMV)**场。Lorenz 2004 用的就是块匹配:在当前帧取一个矩形窗,到上一帧的搜索区里找相似度最高的位置,位移即矢量。
第三步,外推并落地。 在"云团形态短时间内不变"的冻结云假设(frozen cloud hypothesis)下,把当前云场按 CMV 平移到未来时刻,得到预测的云指数图,再经辐照模型还原为地面 GHI/DNI。地基全天空成像仪走的是同一套思路,只是视场只覆盖电站头顶几公里,时效短但分辨率极高;卫星视场大、时效长,但分辨率粗。Straub 2024 则把第二、三步换成卷积神经网络(HelioNet,UNet 架构),直接从历史云指数序列学习未来云场,绕开了显式的矢量估计。
关键结论
把已核实的要点提炼出来,最值得记住的有这么几条(均带边界限定,不夸大):
- 经典 CMV 外推在 0–4 小时窗口内显著优于 NWP。 Lorenz/Hammer 一脉的研究反复验证:在数小时以内的短临时效,基于卫星云移动矢量的辐照预报技巧明显高于数值天气预报系统——这正是云外推存在的理由。但优势随时效衰减,超过约 4–6 小时后 NWP 反而占优。
- 红外夜间云指数把预报起点提前到日出前。 Hammer 等 2015 用 SEVIRI 的 10.8 µm 与 3.9 µm 亮温差构造夜间云指数,使预报链路可在日出前数小时启动,弥补了可见光通道夜间失效的盲区(Remote Sensing, 7, 9070–9090)。
- 地基全天空成像仪在分钟级窗口可达个位数百分比 RMSE。 Logothetis 等 2022 在 IEA PVPS Task 16 框架下,于西班牙南部用 4 套 ASI 系统、1–20 分钟时效、约 28 天多云条件评测:GHI 临近预报 RMSE 落在约 6.9%–18.1% 区间;多云时所有 ASI 均跑赢持续法,晴空时则有 3 套优于持续法。该结论限定在该试验场地与时段口径下。
- 深度学习可在卫星外推上再挤出约 10% 量级的提升。 Straub 等 2024 的 HelioNet 在 2023 整年、时效至 4 小时的评测中,云指数图层面 RMSE 较经典 CMV 降低 15% 以上,并传导到 GHI 预报、带来 10% 以上的 RMSE 改善(Solar RRL, 8, 2400475)。这是相对经典外推基线的相对提升,并非绝对误差水平。
需要强调:以上 RMSE 数字都强烈依赖站点气候、天气年份、时间分辨率与基线选择,不能直接当成对外交付承诺,只能作为方法论的量级参考。
对新能源 / 运梦平台的意义
把这些落到风光功率预测的实际工作流,至少有三层用法。
第一,超短期段必须以云外推为主、NWP 为辅。 光伏的"两个细则"超短期考核(未来 0–4 h,15 min 步长)正卡在云外推的甜区。实践中合理的做法是:0–4 h 以卫星/地基云外推为主导,向 NWP 做平滑过渡,而不是全程吃 NWP。关于超短期 RMSE 的工程量级,可参考光伏功率预测准确率中的实测分布。
第二,晴空指数是统一历史与实时的"通用货币"。 无论做回测还是在线预测,把辐照先换算成晴空指数再建模,能剥离掉太阳高度角的强日变化,让机器学习模型聚焦在"云"这个真正的不确定性来源上。这要求历史辐照(如 ERA5)与预报辐照字段口径一致、可换算。
第三,云外推产物是偏差订正的好特征。 即便你不自建外推链路,把"未来 1–4 h 的晴空指数趋势"作为特征喂给 LightGBM/XGBoost 偏差订正模型,往往比单纯堆 NWP 字段更有效——它直接编码了短临云演变信息。落地参考光伏功率预测产品页。
在运梦气象 API 上手
南京运梦科技的运梦气象 API 同时提供 ERA5(历史回测)与德国气象局(预报)双数据源,字段统一通过 downloadSync 接口按 dataSourceId 与 fields 拉取,刚好对应云外推研究里"历史训练晴空指数模型 + 实时预报驱动"两类需求。
做云外推/晴空指数建模时,先用 ERA5 拉一段长历史辐照,构造晴空指数标签:
import os, requests
API = "https://console.yun-meng.top/api/energy-weather/search/weather/action/downloadSync"
payload = {
"dataSourceId": "era5", # 历史回测:构造晴空指数 / 训练样本
"lat": 31.5, "lon": 118.5, # 光伏场址单点
"stime": "2019-01-01 00:00",
"etime": "2021-12-31 23:00", # 多年序列,覆盖不同天气年份
"fields": ["rsds", "dni", "dhi", "tas"],
"timezone": "8"
}
resp = requests.post(
API,
headers={"Authorization": f"Bearer {os.environ['YUNMENG_TOKEN']}"},
json=payload, timeout=600
)
resp.raise_for_status()
result = resp.json()
if not result.get("success"):
raise RuntimeError(result.get("msg", "查询失败"))
data = result["data"]
print(len(data["timeList"]), data["rsds"][0], data["dni"][0])
切到预报场景时,把 dataSourceId 换成 ger(德国气象局),并把时间窗调整到未来时效即可,字段名保持一致,方便历史与预报口径打通。字段含义与单位见数据要素解释,接口参数以 API 参考文档为准;预报源详情见德国气象局预报。
一点工程提醒:云外推方法的天花板由"云指数图像质量 + 时间分辨率"决定,超短期段不要指望 NWP 字段单打独斗,先把辐照的晴空指数口径在历史与实时之间统一好,再谈模型,比急着上深度学习更划算。
常见问题
Q:光伏 0–4 小时超短期预测为什么不直接用数值天气预报(NWP)? A:NWP 的更新周期和空间分辨率决定了它对一团正飘过电站的积云"反应不过来",而这团云挡没挡住太阳恰恰决定了光伏瞬时出力。在 0–4 小时短临窗口,基于卫星云移动矢量的辐照预报技巧明显高于 NWP;只有超过约 4–6 小时后 NWP 才反而占优。
Q:云团外推(云移动矢量)临近预报具体怎么工作? A:分三步——先把卫星或地基图像换算成 0 到 1 的云指数(其补集即晴空指数),再对前后两帧用块匹配或光流求出云移动矢量场,最后在"云团形态短时间内不变"的冻结云假设下把云场按矢量平移到未来时刻,经辐照模型还原为地面 GHI/DNI。
Q:地基全天空成像仪(ASI)的临近预报精度有多高? A:Logothetis 等 2022 在 IEA PVPS Task 16 框架下、于西班牙南部用 4 套 ASI、1–20 分钟时效、约 28 天多云条件评测,GHI 临近预报 RMSE 落在约 6.9%–18.1% 区间;该结论限定在该试验场地与时段口径下,不能直接外推到其他站点。
Q:什么是晴空指数,为什么云外推建模都要先算它? A:晴空指数(clear-sky index, kt*)是"当前辐照 / 同时刻理论晴空辐照"。先把辐照换算成晴空指数再建模,能剥离太阳高度角带来的强日变化,让模型聚焦在"云"这个真正的不确定性来源上,并统一历史与实时数据口径。
Q:在运梦气象 API 上怎么同时拿到历史和预报辐照来做云外推建模?
A:运梦气象 API 通过 downloadSync 接口按 dataSourceId 与 fields 拉取,历史回测用 era5 构造晴空指数标签,切到预报场景把 dataSourceId 换成 ger(德国气象局)并调整时间窗即可,字段名保持一致,方便历史与预报口径打通。
引用与原文
Lorenz, E., Hammer, A., & Heinemann, D. (2004). Short term forecasting of solar radiation based on satellite data. In Proceedings of EuroSun 2004 (ISES Europe Solar Congress), Freiburg, Germany, pp. 841–848.
Hammer, A., Kühnert, J., Weinreich, K., & Lorenz, E. (2015). Short-Term Forecasting of Surface Solar Irradiance Based on Meteosat-SEVIRI Data Using a Nighttime Cloud Index. Remote Sensing, 7(7), 9070–9090. DOI: 10.3390/rs70709070
Logothetis, S.-A., Salamalikis, V., Wilbert, S., Remund, J., Zarzalejo, L. F., Xie, Y., Nouri, B., et al. (2022). Benchmarking of solar irradiance nowcast performance derived from all-sky imagers. Renewable Energy, 199, 246–261. DOI: 10.1016/j.renene.2022.08.127
Straub, N., Karalus, S., Herzberg, W., & Lorenz, E. (2024). Satellite-Based Solar Irradiance Forecasting: Replacing Cloud Motion Vectors by Deep Learning. Solar RRL, 8(24), 2400475. DOI: 10.1002/solr.202400475