OpenPVMapper: A Multi-source, Nationwide Database of Rooftop Photovoltaic Systems in France
Authors/Creators
Description
Summary
OpenPVMapper is an open, multi-source database of rooftop photovoltaic installations in mainland France. It aggregates DeepPVMapper detections (AI pipeline on IGN BD ORTHO imagery), OpenStreetMap, FRPV (per-cadastral-parcel probability), and manual corrections, resolved via a fixed hierarchy (correction > OSM > DeepPVMapper > third-party detections).
1,135,850 installations, ~15.0 GWp estimated installed capacity. Coverage : metropolitan France
CRS: EPSG:4326 (WGS84) for all files.
Format: GeoJSON, packaged as .zip.
Licence: CC-BY.
Last update: July 2026.
The full data descriptor is available here : https://arxiv.org/abs/2607.25153
Data validation
Precision was assessed via manual review of 1,862 installations (two independent stratified samples: by source combination and by power class). Global precision, weighted by true stratum population: ~74-75%. Corroboration across sources matters a lot: precision goes from 71.5% (single source) to 96.9% (2 sources) to 98.2% (3 sources). 430,940 installations (~38% of the database) are corroborated by 2 or more independent sources.
File organization
raw.zip
├── D001_2020/
│ └── arrays_characteristics_D001_2020.geojson
├── D001_2022/
│ └── arrays_characteristics_D001_2022.geojson
├── ... (one folder per département × available vintage)
└── index.json # {"D001": [2020, 2022], "D002": [2021], ...}
enriched.zip
├── enriched-national.geojson # 1,135,850 installations
└── regions/
├── ile-de-france.geojson
├── ... (12 mainland regions)
latest-dpvm.geojson.zip
└── latest-dpvm.geojson # 593,671 installations
Attributes
raw/ — raw detections by département and vintage
One row = one DeepPVMapper detection for a given département and vintage, before any cross-source matching.
| Field | Description |
|---|---|
array_id |
Unique detection identifier |
insee |
INSEE commune code |
dpt |
Département |
rnb_id |
Building identifier (Référentiel National des Bâtiments), if matched |
surface |
Polygon surface area (m²) |
tilt |
Estimated tilt (degrees) |
azimuth |
Estimated azimuth (degrees) |
kWp |
Estimated installed capacity |
year (vintage) is not a column in the file itself — it is carried by the folder/file name (D0xx_20xx) and by index.json, not duplicated on every row.
raw/index.json: {"D0xx": [year, year, ...], ...} — availability index to navigate without unpacking all of raw.zip.
enriched/ — resolved national database, all sources
One row = one installation, after cross-source matching (IoU / centroid distance) and resolution to a single reference geometry. Schema shared by enriched-national.geojson and the regional exports.
| Field | Description |
|---|---|
array_id |
Unique installation identifier |
insee |
INSEE commune code |
dpt |
Département |
rnb_id |
Building identifier, if matched |
sources |
List of contributing sources (DPVM, OSM, FRPV, correction) |
surface |
Polygon surface area (m²), rounded to 2 decimals |
tilt |
Tilt (degrees), integer |
azimuth |
Azimuth (degrees), integer |
kWp |
Estimated installed capacity, rounded to 2 decimals |
frpv_proba |
FRPV probability (0–1, floored to 2 decimals), if available |
first_seen / last_seen |
First / last vintage in which the installation is detected |
false_positive_source |
Manual validation status (normal / false / unknown), if reviewed |
Note: nom (commune name) was dropped — redundant with insee.
latest-dpvm.geojson.zip — single-vintage export, DPVM only
Simplified export: one row per installation detected by DeepPVMapper on its latest available vintage only (no multi-source merge, no history). This is the export used in the upcoming analysis of grid connection data paper.
| Field | Description |
|---|---|
array_id |
Unique identifier |
insee |
INSEE code |
nom |
Commune name |
dpt |
Département |
rnb_id |
Building identifier (RNB), if matched |
surface |
Polygon surface area (m²) |
tilt |
Estimated tilt (degrees) |
azimuth |
Estimated azimuth (degrees) |
kWp |
Estimated installed capacity |
year |
Detection vintage |
dpt_source |
Source département (3-digit code, e.g. "001") |
The yield_kwh / kwp_approx fields from the previous release have been dropped.
Record counts
| File | Number of rows |
|---|---|
enriched-national.geojson |
1,135,850 |
latest-dpvm.geojson |
593,671 |
raw/ (total, all départements × vintages) |
not counted — see index.json for the per-département breakdown |
Sources & citation
- DeepPVMapper: detection pipeline built for this project. Source code: https://github.com/gabrielkasmi/deeppvmapper/. The code used to build this database (multi-source aggregation, geometry resolution) will be released soon.
- OpenStreetMap: © OpenStreetMap contributors.
- FRPV: NEROT, Boris; THEBAULT, Martin, 2024, "FRPV - Presence of Rooftop Photovoltaic (RPV) systems on French buildings.", https://doi.org/10.57745/BXXYW4, Recherche Data Gouv, V3.
Code availability
DeepPVMapper source code (detection, segmentation, characterization): https://github.com/gabrielkasmi/deeppvmapper/. The code used to build this database (source aggregation, resolution, export) will be released separately, soon.
Files
enriched.zip
Additional details
Related works
- Continues
- Thesis: https://theses.hal.science/tel-04909303/ (URL)
- Is described by
- Preprint: arXiv:2607.25153 (arXiv)
- Is new version of
- Conference paper: arXiv:2207.07466 (arXiv)
Software
- Repository URL
- https://github.com/gabrielkasmi/deeppvmapper
- Development Status
- Active