Solar Radiation & Climate Projection Pipeline¶
This document describes the solar radiation subsystem. Because solar radiation is not part of the native Météo-France SYNOP (Surface Synoptic Observations) feed, it must be sourced externally.
This pipeline details how historical irradiance is collected from satellite and reanalysis databases, how it is attached to the existing SYNOP station coordinates, and how future climate-shifted irradiance is projected using the Delta-Change method. By linking this data to the station coordinates, the radiation metrics seamlessly plug into the multi-barycenter spatial aggregation described in METEO.md.
Nomenclature and Physical Quantities¶
All radiation columns follow a strict naming convention: radiation_{plane}_{source}_wm2.
The pipeline differentiates between two distinct physical measurements:
POA (Plane-of-Array): The amount of solar radiation hitting a tilted surface (e.g., a solar panel).
GHI (Global Horizontal Irradiance): The total amount of shortwave radiation received from above by a surface horizontal to the ground.
Plane |
Source |
Raw Column |
Aggregated (National, Solar-Weighted) |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
(Stored in |
Part 1: PVGIS (Historical Baseline, Primary Source)¶
Module: collectors/collect_radiation.py · CLI: energy-collect · Table: raw_meteo.synop_radiation
The primary source for solar data is the Photovoltaic Geographical Information System (PVGIS), utilizing the SARAH-3 satellite database [JRC, 2017].
Quantity: Plane-of-array (POA) irradiance. The data assumes a 35° tilt, south-facing orientation, and includes horizon adjustments (using a 90 m Digital Elevation Model, or DEM) to account for terrain shadows. This closely mimics the real-world conditions of fixed photovoltaic panels.
Extraction Strategy: The collector iterates over the latitude/longitude of each SYNOP station, querying the PVGIS point API.
Units: Watts per square meter (W/m²). The direct (
poa_direct), sky-diffuse (poa_sky_diffuse), and ground-diffuse (poa_ground_diffuse) components are summed to calculate the global POA if thepoa_globaltotal is absent.Timestamps: UTC, floored to the hour. Night values are deterministic zeros.
Security: The PVGIS endpoint often sits behind corporate TLS interception. Verification is securely managed via the OS trust store (
truststore) rather than disabling SSL.
Schema: synop_radiation¶
Column |
Type |
Description |
|---|---|---|
|
|
UTC, hourly. |
|
|
Foreign key to |
|
|
Global plane-of-array irradiance (W/m²). |
|
|
Direct (beam) component. |
|
|
Sky-diffuse component. |
Note on coverage: The dataset spans 2012 to the end of 2023 (the current limit of the SARAH-3 dataset), covering ~6.3 million rows across 60 of the 62 stations (excluding two polar stations outside the metropolitan grid).
Part 2: ERA5 (Complementary Reanalysis)¶
Module: collectors/collect_radiation_era5.py · CLI: energy-collect-radiation-era5 · Table: raw_meteo.synop_radiation_era5
To complement PVGIS and extend coverage to the present day, the pipeline utilizes ERA5, the fifth-generation atmospheric reanalysis provided by the Copernicus Climate Data Store (CDS) [Hersbach et al., 2020].
Quantity: Global Horizontal Irradiance (GHI). ERA5 natively provides
ssrd(Surface Solar Radiation Downwards) as accumulated Joules per square meter (J/m²). The pipeline converts this to a mean W/m² (by dividing by 3600).Spatial Lookup: The module utilizes
xarrayto find the nearest grid point for each SYNOP station, avoiding heavy external dependencies like GDAL.Scientific Rationale: Because POA (at a 35° tilt) and GHI are different physical quantities, ERA5 does not overwrite PVGIS. They are stored side-by-side in separate tables to allow for comparative analysis, while PVGIS remains the primary driver for the pipeline.
Schema: synop_radiation_era5¶
Column |
Type |
Description |
|---|---|---|
|
|
UTC, hourly. |
|
|
Foreign key to |
|
|
Global horizontal irradiance from ERA5 (W/m²). |
(Execution requires a Copernicus CDS account with the ERA5 license accepted).
Part 3: Climate Projection (Delta-Change Method)¶
Package: force/climate/ · CLI: energy-project-radiation · Table: raw_meteo.synop_radiation_projected
To anticipate future solar generation, this module projects irradiance for the horizons 2030, 2050, and 2080. It utilizes climate projections from CMIP6 (Coupled Model Intercomparison Project Phase 6) [Eyring et al., 2016] and the French DRIAS portal.
It evaluates two Shared Socioeconomic Pathways (SSPs):
SSP2-4.5: A “middle-of-the-road” moderate emissions scenario.
SSP5-8.5: A highly fossil-fuel driven “worst-case” scenario.
The Delta-Change Algorithm¶
Future irradiance is generated by applying a monthly shifting factor (\(\Delta_{month}\)) to the highly-granular historical PVGIS baseline. This preserves the realistic hourly variance (cloud cover fluctuations, day/night cycles) while shifting the overall monthly mean to match climate model predictions.
(Note: The Delta factor is physically clipped to [0.5, 1.5] to prevent mathematical instability, and night zeros are strictly preserved).
Architecture¶
extractors.py: Provides a pluggable interface for climate sources.CdsCmip6Extractor: Fetches CMIP6rsdsviacdsapi.DriasEdrExtractor: Fetches Météo-France DRIAS data via OGC EDR (Environmental Data Retrieval) position queries.
projection.py: Calculates the monthly deltas between the baseline window [2015-2025] and the target future windows (e.g., 2050 utilizes [2040-2060]).
Part 4: Source Comparison and Audit¶
Script: scripts/audit/gen_pvgis_vs_era5.py
The pipeline includes an automated auditing tool to compare the two radiation sources. It joins the synop_radiation and synop_radiation_era5 tables and generates a comprehensive visual report (Outputs/audit/comparison/pvgis_vs_era5.png).
The audit renders a 4-panel comparison featuring monthly climatology, monthly-mean time series, a POA-vs-GHI scatter plot (correlation, regression, and ratio), and a per-station bias map. Because POA and GHI are physically distinct, the audit focuses on reporting correlation and ratio distributions rather than pure mathematical equality.
Data Coverage and Requirements¶
Component |
Coverage |
Output |
|---|---|---|
PVGIS Baseline |
2012-2023 across 60 stations |
~6.3 M rows. POA mean: 185.6 W/m² |
ERA5 Reanalysis |
2012-Present across 62 stations |
~7.86 M rows. GHI mean: 168 W/m² |
CMIP6 Projections |
2030, 2050, 2080 (SSP2-4.5 & SSP5-8.5) |
~26.5 M rows across 42 stations (coarse grid drops some stations) |
Comparison Audit |
6.31 M paired hours evaluated |
Correlation (\(r=0.71\)), POA/GHI Ratio (\(1.09\)) |
Execution Guide¶
Command |
Action |
|---|---|
|
Runs PVGIS radiation natively as part of standard data collection. |
|
Collects ERA5 GHI (Requires |
|
Executes Delta-Change projection (Requires |