Zonnepanelen detecteren in QGIS: 5 methoden
Gepubliceerd op Bijgewerkt op

Om zonnestroom op daken in QGIS te karteren, begin je met wat iemand al heeft gekarteerd. Open Vector > QuickOSM > QuickOSM…, zet generator:source in het key-vak en solar in het value-vak, en voer het uit op jouw gebied. OpenStreetMap bevat 6.143.024 objecten met die tag, gelezen op 3 september 2026, dus in een goed gekarteerde plaats ben je in twee minuten klaar. Waar de dekking dun is, detecteer je de arrays zelf, en de methode hangt af van je banden en je pixelgrootte.
| Jouw input | Methode | Wat het kost |
|---|---|---|
| Een gebied dat OpenStreetMap al goed dekt | Methode 1, QuickOSM | Gratis |
| Elk raster dat het kaartvenster toont, op elke machine | Methode 2, een cloudsegmentatiemodel | Gratis 1,5 km² per maand, daarna € 39 |
| Multispectrale beelden met een nabij-infraroodband | Methode 3, Raster > Rasterberekeningen… | Gratis, kern QGIS |
| Vier banden of meer, en tijd om trainingsgebieden te tekenen | Methode 4, Semi-Automatic Classification Plugin | Gratis plugin |
| Een RGB-orthofoto rond 20 cm, en een GPU of geduld | Methode 5, Deepness plus zijn Solar PV-model | Gratis |
Prijzen, plugin-versies en tag-aantallen gelezen op 3 september 2026.
Methode 1: Neem wat al is gekarteerd
QGIS schrapte zijn eigen OSM-downloader in 3.0 en verwees gebruikers naar QuickOSM, dus installeer die eerst.
Vraag de generatoren op
Vector > QuickOSM > QuickOSM…, key generator:source, value solar, uitvoeren op je kaartbereik of een benoemd gebied. Arrays op daken dragen power=generator en vaak generator:method=photovoltaic.
Vraag de parken apart op
Grondgebonden parken zijn getagd als power=plant met plant:source=solar, een andere query. Mis die en elk park ontbreekt in je laag.
Haal kilowatts uit het register
Het Duitse Marktstammdatenregister verschijnt dagelijks als XML, maar onderdrukt coördinaten voor elke eenheid van 30 kW of minder, dus een dak belandt op een postcode. Het Franse register stopt op IRIS-zoneniveau en vouwt alles onder 36 kW samen in geaggregeerde rijen.

Drie open datasets dienen als trainingsdata of benchmark. Bradbury et al., 19.863 geannoteerde PV-polygonen over vier Californische steden op 30 cm, CC0. BDAPPV, 28.807 Franse installaties met maskers, CC BY 4.0. DeepSolar telde 1,47 miljoen systemen in de aaneengesloten Verenigde Staten, maar publiceerde tellingen per census-tract, geen polygonen.
Gebruik het wanneer: iemand jouw gebied heeft gekarteerd, of je vermogen nodig hebt in plaats van vormen.
Sla het over wanneer: de dekking vlekkerig is, wat je alleen ontdekt door te kijken.
Methode 2: Een cloudsegmentatiemodel
Een segmentatiemodel heeft geleerd hoe een array eruitziet, dus het scheidt er een van een donker dak waar Methoden 3 en 4 dat niet kunnen. Wij bouwen er een van, AI Segmentation. Dit deel gaat over onze eigen tool.
Teken een zone over welk raster het kaartvenster ook toont, typ solar panel, en elk array komt terug als een polygoon in het project-CRS met een oppervlakte en een betrouwbaarheidsscore. Het model draait op onze servers in Europa, dus je hebt geen grafische kaart en geen Python-omgeving nodig.

Tussen 5 juli en 1 september 2026 draaiden 47 mensen buiten ons team solar panel 104 keer, en 15,6% van de tegels kwam leeg terug. Over 96 geëxporteerde uitvoeringen vond het model 40.088 kandidaten en behielden ze er 14.245, of 35,5%, goed voor 496.931 m² aan paneel.
Typ solar panel, niet solar farm. Het tweede vraagt om de installatie, en het model antwoordt met één uniform vlak of niets. Op de weinige uitvoeringen die we hebben, liet het 21 van de 24 tegels leeg.
Beste voor: arrays op daken in een hele wijk, op elke machine.
Niet voor: een moduletelling. Een dicht array komt terug als één vlak, dus splits het in QGIS of deel door de oppervlakte van een module die je kent. Een residentiële module is ruwweg 1,7 m bij 1,1 m.
Prijs: gratis voor 1,5 km² per maand, geen creditcard. Pro is € 39 per maand exclusief btw. Probeer Pro 7 dagen gratis: voeg een creditcard toe, zeg op vóór het einde en er wordt niets in rekening gebracht.
Draait op: onze servers, in Europa.
Installatie: Plug-ins > Plug-ins beheren en installeren..., QGIS 3.22 of later, log je daarna in vanuit het paneel.
Methode 3: Drempelen met Rasterberekeningen
Werk in een geprojecteerd CRS, omdat twee stappen hieronder een oppervlakte in laageenheden nemen.

Raster > Rasterberekeningen…, algoritme-id native:rastercalc. Panelen zijn donker, en in het nabij-infrarood veel donkerder dan een donker dak, dus een genormaliseerde index tussen de rode en NIR-banden scheidt ze in de meeste scènes. Daarna verwijdert gdal:sieve de spikkels en maakt gdal:polygonize er polygonen van.
Op drie RGB-banden mislukt dit, omdat een donker dak en een paneel dezelfde waarden delen. Textuur is de gebruikelijke redding. grass:r.texture berekent dertien GLCM-maten, en arrays scoren hoog op contrast en laag op inverse difference moment. GRASS wordt meegeleverd met de Windows-installer en niet met de macOS-bundel.
Gebruik het wanneer: je een nabij-infraroodband hebt en één schone scène.
Sla het over wanneer: de beelden RGB zijn, of de drempels moeten standhouden over een mozaïek dat op verschillende dagen is opgenomen.
Methode 4: Gesuperviseerde classificatie met SCP
De Semi-Automatic Classification Plugin voegt een SCP-menu en een SCP Dock toe. Bouw een Band set, teken ROI's over panelen en over elke lookalike, en classificeer dan met Maximum Likelihood, Minimum Distance, Spectral Angle Mapping, Random Forest, Support Vector Machine of een multilayer perceptron. Versie 8.5.0 is wat QGIS 3.x installeert, GPL v3, 2.644.482 keer gedownload.
De eigen FAQ sluit de input uit die de meeste mensen hebben. "You cannot use orthophotos with less than 4 bands", omdat de algoritmen onder de vier de klassen niet kunnen scheiden.
Gebruik het wanneer: je vier banden of meer hebt en een herhaalbare, gedocumenteerde classificatie wilt.
Sla het over wanneer: je input een RGB-orthofoto of een basiskaart is.
Methode 5: Een lokaal model in Deepness
Grondresolutie beslist alles. Bradbury et al. bouwden hun referentie-PV-dataset op 30 cm omdat "zonnepanelen doorgaans tussen 1 en 2 meter lang zijn", wat meerdere pixels op elk paneel zet. Dat lost het array op, niet de modules erin. Clark en Pacifici vonden afzonderlijke panelen "moeilijk te onderscheiden, zelfs bij 15,5 cm resolutie". Gepubliceerd werk over PV op daken zit tussen 10 cm en 31 cm. Sentinel-2 op 10 m is voor parken, nooit voor daken.
Deepness draait ONNX-modellen binnen QGIS, gratis en Apache 2.0, en zijn modelzoo levert een Solar PV Segmentation-model op 20 cm/px, getraind door Kleebauer et al. en gehost door Fraunhofer. Richt het op je orthofoto en je krijgt een panelenmasker, geen account, niets verlaat je machine.
Snelheid is het addertje. Een gebruiker mat datzelfde model op "80+ minutes for a digital Orthophoto tile (20 cm resultion, 5000 points in each direction)" op een CPU, en de issue staat nog open. Voorbij dit ene is er geen goed onderhouden open PV-model voor daken.
Gebruik het wanneer: er niets de machine mag verlaten, en je ortho rond 20 cm zit.
Sla het over wanneer: je geen NVIDIA-kaart hebt en een hele wijk moet dekken.
De vijf methoden naast elkaar
| QuickOSM | AI Segmentation | Rasterberekeningen | SCP | Deepness | |
|---|---|---|---|---|---|
| Benodigde banden | Geen | Drie | NIR helpt | Vier of meer | Drie |
| Beelden blijven lokaal | Ja | Nee | Ja | Ja | Ja |
| GPU | Nee | Nee | Nee | Nee | Aanbevolen |
| Resultaat | OSM-polygonen | Polygoon per array | Rastermasker | Geclassificeerd raster | Panelenmasker |
| Kosten | Gratis | Gratis tier, daarna € 39 | Gratis | Gratis | Gratis |
Wat te onthouden
Bevraag OpenStreetMap vóór al het andere, want een gekarteerde plaats is in twee minuten klaar en geen detectie verslaat een mapper die er is geweest.
Als de beelden de machine niet mogen verlaten, houden Deepness en zijn lokale Solar PV-model alles op je machine.
Op een RGB-basiskaart vallen Rasterberekeningen en SCP af, omdat geen van beide een paneel van een donker dak scheidt op waarde alleen.
Rond 30 cm lost een array op en niets lost de modules erin op, dus karteer oppervlakten en tel nooit panelen vanaf beeldmateriaal.
Kilowatts komen uit een utiliteitsregister, nooit uit een foto, en zowel het Franse als het Duitse register vervagen de locatie van kleine dakinstallaties.
Probeer het gratis in QGIS, geen creditcard nodig
Vragen die mensen stellen
Kan QGIS zelf zonnepanelen detecteren?
Nee. Kern-QGIS heeft drempelen en polygoniseren, waarvoor een spectraal verschil nodig is, dus een RGB-basiskaart levert je niets op. Detectie komt uit een plugin, Deepness lokaal of die van ons in de cloud.
Welke beeldresolutie heb ik nodig?
Rond 30 cm lost een array op, volgens Bradbury et al. Afzonderlijke modules zijn moeilijk, zelfs bij 15,5 cm, dus reken op het karteren van arrays en oppervlakten in plaats van panelen tellen.
Hoe onderscheid ik een zonnepaneel van een donker dak?
Dat kan niet, op drie banden, op waarde alleen. Gebruik een nabij-infraroodband, een textuurmaat zoals grass:r.texture, of een model dat heeft geleerd hoe een array eruitziet.
Vindt het ook grondgebonden zonneparken?
Ja, en in OpenStreetMap zijn ze een aparte query, power=plant met plant:source=solar. Typ met een model ook voor het park solar panel, omdat het elk paneel detecteert en niet de site.
Kan ik tellen hoeveel panelen er zijn geïnstalleerd?
Niet vanaf beeldmateriaal. Detectie geeft omtrekken en oppervlakte. De moduletelling en de kilowatts komen uit een register, en in Frankrijk stopt dat op IRIS-zoneniveau.
De gids voor gebouwcontouren doorloopt de filterstap volledig, en de SAM in QGIS-post behandelt welke objecten deze modellen goed vinden. Wil je de detectie en de oppervlaktetelling als één opdracht laten uitvoeren in plaats van de plugin met de hand te doorlopen, dan doet AI Agent dat in hetzelfde QGIS-project. De QGIS AI-hub vergelijkt de plugins, en de productpagina is AI Segmentation.
te karteren, begin je met wat iemand al heeft gekarteerd. Open 

