PVGIS vs custom CSV
When the default PVGIS weather data is enough, and how to attach your own hourly CSV.
SolarLayout uses PVGIS by default — the European Commission's public satellite-derived solar resource dataset. It's free, covers most of the world, and is fine for early-stage feasibility and screening.
If the PVGIS API can't be reached, SolarLayout automatically falls back to NASA POWER irradiance data and labels the source chip accordingly (Irradiance: NASA POWER (fallback)).
For bankable submissions, lenders typically require commercial weather data (Solargis, Meteonorm) or on-site pyranometer measurements. You can attach either as a custom hourly CSV pinned to the project.
When PVGIS is fine
- Early-stage feasibility — first-pass screening of a parcel.
- Internal sensitivity studies — comparing tilt or GCR options on the same site.
- Pre-bid feasibility memos for tenders that don't require a specific weather data source.
- C&I / open-access projects where the offtaker isn't a regulated lender.
When you'll need a custom CSV
- Bankable submissions to any commercial bank or lender.
- Lender technical advisor (LTA) review — they'll usually ask for Solargis or Meteonorm data with at least 10 years of history.
- On-site pyranometer data when you have 12+ months of measurements from the actual site.
- Bid responses where the tender specifies a weather source.
How to attach a custom CSV
Weather files are attached at the project level — once attached, every new layout you generate for that project can use the file.
Open Project Settings
From an open project, open Project Settings and scroll to the Site environment section.

Upload your file
Click Upload CSV and pick your hourly file. SolarLayout parses the file on upload — see the format requirements below.
If the file is rejected, you'll see a plain-language message explaining what's wrong. If the columns aren't recognised, it reads "That CSV doesn't have the required columns. Make sure it has a Time column and a GHI column…"; if there isn't enough data, it reads "That CSV doesn't have enough hourly data — we expect at least 8760 rows (one row per hour for a full year)." Fix the file and upload again.
On success, the section shows the attached file with the number of hours and the parsed annual GHI (and GTI / average temperature if those columns were present).

Turn on "Use weather file" in the Energy modeling tab
Open the Energy modeling tab in the project and expand Site & Climate. At the bottom of that section, flip the Use weather file switch on. The switch is only enabled when a CSV is attached to the project.
The switch is per-layout: you can attach one CSV to the project and still generate one layout with PVGIS (switch off) and another with the custom file (switch on), for an apples-to-apples comparison.

Generate
Click Generate. The new layout's energy result uses your custom weather data instead of PVGIS.
CSV format requirements
SolarLayout expects a CSV with a time column and a GHI column. Two more columns are optional but improve the result.
| Column | Required | Format | Notes |
|---|---|---|---|
| Time | Yes | ISO 8601 (YYYY-MM-DD HH:MM), PVGIS native (YYYYMMDD:HHMM), DD/MM/YYYY HH:MM, Excel serial, or several other common variants | One row per hour |
| GHI | Yes | W/m² | Global horizontal irradiance |
| GTI | Optional | W/m² | In-plane (plane-of-array) irradiance. If present, used directly; otherwise SolarLayout derives it from GHI using the site's tilt and a transposition model. |
| Ambient temperature | Optional | °C | If present, used for the monthly performance ratio breakdown instead of the sinusoidal seasonal fallback. |
Column names are matched case-insensitively from a list of common
aliases — GHI also matches G(h), GlobHor, irradiance,
ALLSKY_SFC_SW_DWN; GTI also matches G(i), GlobInc,
Plane of array; temperature matches T2m, Temp, T_amb, T(°C)
and similar. PVGIS seriescalc, PVGIS TMY and other industry-standard
hourly exports all parse without renaming.
If your file's column names aren't recognised, the upload is rejected with "That CSV doesn't have the required columns…" — rename the columns in Excel or a CSV editor and upload again.
Near-full-year input. A full year is 8760 rows (one per hour), and that's the normal input — the on-screen rejection message asks for at least 8760 rows. Under the hood the hard floor is lower: the parser only rejects a file outright once it has fewer than 365 valid rows. In practice, attach a complete annual file.
One row per hour. Sub-hourly granularity is not aggregated — the parser treats each row as one hour of data. If your source is 15- minute, average to hourly before upload.
Solargis and Meteonorm exports
Solargis and Meteonorm both export CSVs with column names that the
parser already recognises — usually no renaming needed. PVGIS
seriescalc and TMY exports work as-is; the same is true of other
industry-standard hourly exports that use GlobHor for GHI and
GlobInc for GTI.
If your dataset uses a non-standard column name, rename the column in Excel or a CSV editor before upload.
What changes downstream
When Use weather file is on:
- The hourly GHI from your file replaces the PVGIS API call.
- GTI is either taken from your file's GTI column, or derived from GHI using a Hay-Davies transposition (fixed-tilt) or HSAT tracking geometry (single-axis trackers).
- If your file includes a temperature column, monthly ambient temperatures come from the file; otherwise they fall back to a sinusoidal seasonal model around the Avg. ambient temp. you set in Site & Climate.
- The PDF energy report's monthly Performance Ratio breakdown reads from these file-derived values, so it directly reflects your weather source.