Zwembaden detecteren in QGIS: 5 methoden

Om zwembaden te detecteren in
, controleer eerst OpenStreetMap: Vector > QuickOSM > QuickOSM…, key leisure, value swimming_pool. Waar de kaart dun is, drempel het blauw in de raster calculator of gebruik een segmentatiemodel. De grondresolutie beslist welke.
Waar het web het mis heeft
Drie antwoorden worden steeds herhaald op forums en in tutorials, en elk kost je een dag.
"Run NDWI on Sentinel-2 and count the pools." Green en NIR komen op 10 m en SWIR op 20 m, terwijl een nieuw ingegraven zwembad 29 tot 30 m² is. Dat is een derde van een pixel. MNDWI boven een buitenwijk geeft het reservoir aan de rand van de stad terug en niets in de tuinen.
"Threshold the blue and you have your pools." Een kleurregel leest kleur en niets anders. Een blauw metalen dak en een dekzeil over een houtstapel glippen erdoor, een zwembad met donkere liner en een algengroen zwembad vallen eruit, en een afgedekt zwembad staat helemaal niet in het beeld.
"The detection is the list." De Franse belastingdienst draaide dit op IGN-fotografie en stuurde alsnog elke eigenaar een brief. Een detectie is een kandidaat, en zodra je die koppelt aan een perceel en een naam wordt het persoonsgegevens.
Het korte antwoord
| Jouw input | Methode | Wat het kost |
|---|---|---|
| Elk gebied met actieve OSM-mappers | Methode 1, QuickOSM op leisure=swimming_pool | Gratis, één zoekopdracht |
| RGB-orthofoto van 5 tot 30 cm | Methode 2, kleurdrempel in de raster calculator | Gratis, in core QGIS |
| Beeldmateriaal met een nabij-infrarood- of SWIR-band | Methode 3, een waterindex, dan een drempel | Gratis, blind voor tuinzwembaden op satelliet |
| Multispectraal beeldmateriaal en een middag | Methode 4, SCP of dzetsaka | Gratis plugins, jouw tijd voor het intekenen van trainingsgebieden |
| RGB-orthofoto en honderden zwembaden | Methode 5, een segmentatiemodel | Gratis plugins willen je eigen model of een GPU. Cloud-plugins hebben gratis tiers, dan een abonnement |
Hoe ik ze heb vergeleken
Vijf criteria: input, of beeldmateriaal je machine verlaat, hoeveel output je handmatig controleert, kosten, installatie-inspanning. Elke versie, prijs en menupad is op 3 september 2026 gecontroleerd aan de hand van de QGIS 3.44-handleiding en de docs van elke tool. Ik heb de gratis methoden gedraaid op een Franse suburbane orthofoto en een Sentinel-2-scène van hetzelfde blok.
Wij bouwen een van de vijf, en dat is Methode 5. Voor een sweep waarbij iemand een gepubliceerd nauwkeurigheidscijfer aftekent, gebruik je beter Mapflow. Het levert een speciaal Swimming pools-model, on request, met een F1 boven 0.95 ernaast. Wij publiceren geen cijfer voor zwembaden.
Voor je begint
Werk in een geprojecteerde CRS, omdat drie stappen hieronder filteren op oppervlakte in layer-eenheden. Controleer daarna de resolutie. De Franse zwembadfederatie zet een nieuw ingegraven zwembad op 29 tot 30 m², 3.000 pixels op een orthofoto van 10 cm en een derde van één pixel op een Sentinel-2-band van 10 m.
De Franse belastingdienst draait dit op luchtfotografie van IGN. Zijn Foncier innovant-pilot belastte 20.356 zwembaden in negen departementen voor 2022, goed voor 9,8 miljoen euro, en de landelijke run van 2023 vond 150.000 belastbare zwembaden die op de rol ontbraken. Elk zwembad ging alsnog via een brief naar de eigenaar.
Methode 1: Haal de zwembaden op die iemand al heeft gemapt
OpenStreetMap bevat 3.036.801 objecten getagd met leisure=swimming_pool, waarvan 2.731.704 ways met echte geometrie, op taginfo op 3 september 2026.
Open QuickOSM and query
Vector > QuickOSM > QuickOSM…, die de Overpass API bevraagt. Key leisure, value swimming_pool, op de canvas-extent of een administratief gebied op naam.
Keep polygons, filter to gardens
Een zwembad gemapt als node heeft geen oppervlakte, dus neem de polygoon layer. 1.808.809 van deze zwembaden dragen ook access=private, de filter voor achtertuinzwembaden.
leisure=swimming_area is een ander object: een aangewezen plek om te zwemmen in een meer of de zee.

Gebruik dit wanneer: je openbare en commerciële zwembaden nodig hebt.
Sla over wanneer: de klus is vinden wat niemand heeft aangegeven.
Methode 2: Drempel het blauw in de raster calculator
Het dichtstbijzijnde in core QGIS. Open Raster > Raster Calculator…, waar bands layer_name@band_number zijn. Op een RGB-orthofoto houdt dit helder, verzadigd blauw over:
("ortho@3" > 90) AND ("ortho@3" - "ortho@1" > 25) AND ("ortho@3" - "ortho@2" > 10)
Die getallen zijn van mij, van een orthofoto van 20 cm. Sample twintig zwembadpixels en twintig dakpixels en schuif ze daarna bij.
Polygonize met Raster > Conversion > Polygonize (Raster to Vector), filter daarna met native:extractbyexpression: $area > 6 AND $area < 400 voor grootte, en mijn eigen ratio 4 * pi() * $area / ($perimeter ^ 2) > 0.5 voor vorm, omdat QGIS geen compactheidsfunctie meelevert.

RGB-waarden schuiven met zonshoek en belichting, dus een drempel afgesteld op één vlieglijn breekt op de volgende. Hue en saturatie houden het beter vol, via de Processing Toolbox-module i.rgb.his, die "transforms raster maps from RGB (Red-Green-Blue) color space to HIS (Hue-Intensity-Saturation) color space".
Geen van beide regels weet wat het blauwe ding is.
- Schaduw. Beschaduwde dakhellingen lezen als donkerblauw. Verhoog de ondergrens en je verliest zwembaden onder bomen.
- Blauwe daken en dekzeilen. Helder, blauw, vaak de juiste vorm.
- Zwembaden met donkere bodem en groene zwembaden. Een zwarte liner leest als asfalt, algen als gazon. Mijn regel miste beide.
- Afgedekte zwembaden. Helemaal niet in het beeld.

Gebruik dit wanneer: één consistente orthofoto die je met de hand controleert.
Sla over wanneer: een mozaïek van meerdere vluchten.
Methode 3: Een waterindex, op beeldmateriaal met de banden
Water absorbeert nabij-infrarood bijna volledig, dus het wordt zwart in NIR terwijl een blauw dak helder blijft.
- NDWI, McFeeters 1996:
(Green - NIR) / (Green + NIR). Op Sentinel-2,(B3 - B8) / (B3 + B8). - MNDWI, Xu 2006:
(Green - SWIR) / (Green + SWIR). Op Sentinel-2,(B3 - B11) / (B3 + B11). Wissel NIR in voor SWIR om bebouwd gebied te onderdrukken, het punt boven een buitenwijk.
Drempel boven nul, polygonize, filter zoals in Methode 2. Rodríguez-Cuenca en Alonso hebben hiervoor in 2014 een Normalized Difference Swimming Pools Index afgesteld.
Sentinel-2 levert B3 en B8 op 10 m en B11 op 20 m, dus een zwembad van 30 m² komt nooit los van de tuin. MNDWI boven een woonblok geeft het reservoir aan de rand van de stad terug en verder niets.

Gebruik dit wanneer: je orthofoto een NIR-band heeft van 50 cm of fijner. Het verslaat kleur ronduit.
Sla over wanneer: driebandige RGB, of Sentinel-2 en je tuinzwembaden wilt.
Methode 4: Train een classifier op je eigen beeldmateriaal
Een classifier leert je zwembadpixels van voorbeelden die je intekent, dus hij overleeft een mozaïek dat een vaste drempel breekt.
Semi-Automatic Classification Plugin van Luca Congedo is de gebruikelijke keuze. Maak een training input (.scpx) in het SCP-dock, teken ROI's, en draai daarna SCP > Band processing > Classification in het hoofdvenster. Zes algoritmen, van Minimum Distance tot Random Forest. Versie 9.0.4 verscheen 11 juli 2026 maar declareert een QGIS-minimum van 3.99, dus QGIS 3.x installeert nog 8.5.0.
dzetsaka 5.0.11, van Nicolas Karasiak, is lichter: elf classifiers, en zijn Gaussian Mixture Model draait zonder scikit-learn.
Teken ook een blauw-dakklasse en een schaduwklasse in. Een classifier wijst alleen af wat je hem hebt laten zien.

Gebruik dit wanneer: meerdere vluchten of seizoenen, en je de workflow gaat hergebruiken.
Sla over wanneer: één orthofoto, één run. Beide classificeren pixels, geen objecten, dus je polygonizet en filtert alsnog.
Methode 5: Een segmentatiemodel
Een segmentatiemodel leest vorm en context, en zo onderscheidt het een zwembad van een dekzeil in dezelfde kleur. Wij bouwen er een van, AI Segmentation. Dit deel gaat over onze eigen tool.
Install and sign in
Plugin manager, QGIS 3.22 or later. Geen GPU, geen modelgewichten. Een account, een gratis tegoed, daarna 39 euro per maand exclusief btw.
Draw a zone, type the word, filter
Typ swimming pool en draai. Polygonen komen terug in de project-CRS met oppervlakte, perimeter en een confidence-score. Sorteer en verwijder wat fout is.
Twee getallen uit onze tuning-tabel, gelezen at runtime. Een zwembadrun vraagt ruwweg 0,13 m per pixel in tiles van hooguit 300 m, omdat een zwembad bij grover vervaagt in zijn terras. De review opent op 0,20 confidence voor swimming pool tegen 0,30 voor building, omdat zwembadmaskers lager scoren dan daken.

Eén grens: een afgedekt zwembad bereikt het model nooit, dus het komt als gemist terug. Beide cloudmodi sturen beeldmateriaal naar onze servers in de Europese Unie.

Vier andere doen dit werk, gelezen op 3 september 2026.
| Tool | Wat je installeert | GPU | Account | Verlaat beeldmateriaal je machine | Zwembadondersteuning | Kosten |
|---|---|---|---|---|---|---|
| Deepness | Plugin manager, zijn Python-packages, een ONNX-model | Optioneel, CPU werkt | Nee | Nee | Welk model je ook aanlevert | Gratis |
| Geo-SAM | Plugin manager, dependencies, modelgewichten | Optioneel | Nee | Nee | Eén object per klik of box | Gratis |
| samgeo | Een Python-package, geen QGIS-paneel | Aanbevolen | Nee | Nee | Scriptbaar, geen zwembadklasse | Gratis |
| Mapflow | Plugin manager | Nee | Ja | Ja | Een Swimming pools-model, on request | Credits, betaald |
| AI Segmentation (van ons) | Plugin manager | Nee | Ja | Ja in beide cloudmodi, nee voor het lokale model | Typ swimming pool | Gratis tegoed, daarna 39 euro per maand exclusief btw |
Gebruik dit wanneer: meer zwembaden dan je met de hand zou omtrekken.
Sla over wanneer: het beeldmateriaal je machine niet mag verlaten. Gebruik Deepness of Geo-SAM.
De vijf methoden naast elkaar
| Wat je hebt | Methode |
|---|---|
| Een goed gemapte stad, openbare zwembaden volstaan | Methode 1, QuickOSM |
| Eén RGB-orthofoto fijner dan 30 cm | Methode 2, kleurdrempel, daarna filteren |
| Een orthofoto met een NIR-band | Methode 3, NDWI |
| Sentinel-2 of iets anders op 10 m | Geen ervan voor tuinzwembaden. Haal fijner beeldmateriaal |
| Meerdere vluchten, een workflow die je herhaalt | Methode 4, SCP of dzetsaka |
| Honderden zwembaden en geen geduld voor false positives | Methode 5, een segmentatiemodel |
Wat te onthouden
Resolutie beslist eerst, dan de banden, dan hoeveel handmatige controle je aankunt.
Een zwembad van 30 m² komt op 10 m nooit los van zijn tuin, dus Sentinel-2 is de verkeerde sensor voor achtertuinzwembaden, welke index je ook draait.
Een kleurdrempel geeft elk blauw ding in het blok terug, dus filter op oppervlakte en compactheid voor je naar het resultaat kijkt.
Een afgedekt zwembad ontbreekt in het beeldmateriaal, dus geen enkele methode op deze pagina vindt het en geen enkele prijs verandert daaraan.
Een detectie is een kandidaat. Wat je ook draait, open de tien polygonen met de laagste confidence voor iemand handelt op basis van de layer.
Try it free in QGIS, no card needed
Vragen die mensen stellen
Kan QGIS zelf zwembaden detecteren?
Niet als functie. Core QGIS geeft je de raster calculator, polygonize en de vectorfilters, oftewel Methode 2. Een zwembad als object herkennen vraagt een plugin.
Kan ik achtertuinzwembaden vinden in Sentinel-2-beeldmateriaal?
Nee. Green en NIR zijn banden van 10 m en SWIR is 20 m, dus een zwembad van 30 m² is een derde van een pixel. Gebruik luchtfoto's van 30 cm of beter.
Waarom komen blauwe daken steeds terug als zwembaden?
Een geschilderd metalen dak is helderder en blauwer dan zwembadwater, en een kleurregel leest alleen kleur. Filter op oppervlakte en compactheid, stap over op NDWI, of gebruik een model.
Is zwembaden detecteren uit luchtfoto's legaal?
Koppel een detectie aan een perceel en een eigenaarsnaam en het wordt persoonsgegevens, waarvoor je in de EU een rechtsgrond onder de GDPR nodig hebt. Een belastingdienst heeft er een in de wet staan. Een privébedrijf meestal niet, dus vraag je data protection officer om advies vóór de join, en laat de output van een model nooit de laatste stap vóór een aanslag zijn.
Welke nauwkeurigheid kan ik verwachten?
Eén getal zou onjuist zijn, omdat het meebeweegt met je beeldmateriaal en het seizoen. Open zwembaden op 20 cm komen goed terug, afgedekte zwembaden worden hier door alles gemist, en blauwe daken zijn wat je met de hand verwijdert.
Voor de volledige filterstap, lees gebouwvoetafdrukken detecteren in QGIS. Voor het opschonen achter elk masker, raster naar vector in QGIS. De QGIS AI hub heeft de rest.
Verder lezenAI Segmentation voor QGIS: complete gids


