Hoe je automatisch gebouwcontouren detecteert in QGIS
Ik draaide automatische detectie over een zone in het centrum van Parijs en kreeg in één keer 635 polygonen terug. Bepalen welke 82 ik moest houden duurde langer dan de detectie zelf, en juist dat tweede deel laat bijna elke handleiding weg.


De korte versie. Om automatisch gebouwcontouren te detecteren in
: installeer een AI-detectieplugin via de pluginmanager, laad je beeldmateriaal, teken een zone, geef het object een naam en start de detectie. Je krijgt een polygon layer in de CRS van je project. Filter die ruwe output vervolgens op betrouwbaarheid en oppervlakte, want een groot deel van wat terugkomt is geen gebouw.
Wat een gebouwcontour is
De omtrek van een gebouw waar het de grond raakt, als een vlakke polygon. Niet het dak, niet het perceel, niet het adrespunt.
Dat is hier belangrijk, omdat verticale beelden je het dak geven. Bij een Haussmann-blok van vijf verdiepingen, bijna recht van boven gefotografeerd, is de verschuiving klein. Bij een toren is dat niet zo. Goed om te weten voordat je iemand een footprint layer belooft.
Controleer eerst de open datasets
Voor veel opdrachten hoef je helemaal niets te detecteren.
- OpenStreetMap is uitstekend waar mappers actief zijn, en gebouwen hebben attributen. Haal het binnen met QuickOSM.
- Microsoft Global ML Building Footprints, meer dan een miljard door machines geëxtraheerde gebouwen, het sterkst in Noord-Amerika.
- Google Open Buildings dekt het Mondiale Zuiden, waar OSM het minst volledig is.

Laad er één naast je beeldmateriaal. Ga pas verder wanneer de dekking gaten vertoont, de opnamedatum niet klopt of de footprints moeten overeenkomen met de specifieke orthofoto die een klant je heeft aangeleverd.
Onder de vijftig gebouwen, teken ze
Digitaliseer ze met de hand. Gratis, exact, en op die schaal zou ik het nog steeds zelf doen. Zet snapping eerst aan (Project -> Snapping Options, vertex and segment, topological editing on), anders ben je de middag kwijt aan het verwijderen van slivers.
Rond het 60e gebouw begin je hoeken af te snijden die je bij het 6e nooit zou hebben afgesneden, en je merkt het niet. Het zit dan al in de layer.
De automatische manier
De plugin hier is AI Segmentation, die mijn medeoprichter en ik bij TerraLab bouwen, dus lees dit gedeelte met in gedachten wiens tool het is. Hij installeert vanuit de pluginmanager zoals elke andere: geen handmatige download, geen Python-omgeving, geen speciale grafische kaart, omdat het model op onze servers draait. Windows, macOS en Linux.
Teken een zone, typ buildings en klik op Detect. Dat is de volledige prompt, in je eigen taal als je dat liever hebt. Resultaten komen tegel voor tegel terug als één polygon layer in de CRS van het project.

De ene instelling die je moet leren kennen is precision, oftewel de tegelgrootte. Kleine tegels geven het model een nauwkeurige blik, wat kleine objecten nodig hebben. Grote tegels geven context, wat een landbouwperceel nodig heeft. Tegels zijn ook wat je betaalt: één credit per stuk. Elk account krijgt elke maand een gratis tegoed, zonder dat er om een kaart wordt gevraagd, en Pro verhoogt dat. Detectie draait op Europese servers, we trainen niet op je beeldmateriaal en er is een klein lokaal model als er niets van je machine af mag.
Daarna leidt het paneel je door drie stappen voordat er iets een layer wordt: filter wat je wilt Keep, Correct wat het model heeft gemist en kies de uitvoer-Shapes. De complete handleiding behandelt ze alle drie. De eerste stap bepaalt of de opdracht slaagt, dus die krijgt de volgende sectie.
Filteren is de hele klus
Ruwe detectie-output is een verzameling kandidaatpolygonen met betrouwbaarheidsscores. Op dicht beeldmateriaal zijn de meeste klein en onzeker. Ik exporteerde deze Parijse run met beide filters volledig open, zodat elke kandidaat in de layer terechtkwam: 635 polygonen over 1.18 km².
De helft van wat terugkwam is kleiner dan een parkeerplaats: ventilatieopeningen, dakramen, trappenhuiskappen, schuurtjes op binnenplaatsen. Echte dingen op het beeldmateriaal, correct omlijnd, maar niet wat iemand met een gebouwcontour bedoelt.
Dus filteren. Verschuif de twee sliders in het paneel, of doe hetzelfde vanuit de attributentabel met Select by Expression:
"area_m2" >= 50 AND "score" >= 0.5
Dat laat 82 polygonen van de 635 over, goed voor 222,338 m² van de totale 263,658 m². Neem de drempelwaarden dus niet zomaar van me aan, maar verschuif ze zelf. Groen blijft over na je filter, wit niet.

82 / 635polygons kept (13%)
84%of the built area (222,338 m²)
The same 635 detections the attribute table holds. Drop the confidence to zero and the courtyard sheds and skylights come back.
Let op het tweede getal terwijl je het eerste verschuift. Door 87% van de polygonen weg te gooien, verlies je 16% van de oppervlakte. De rest is ruis die je anders toch met de hand had verwijderd, één voor één, terwijl je je afvroeg of de tool wel goed was.
Stem beide af op de opdracht. Bij een inventarisatie van industriële loodsen kun je de ondergrens voor de oppervlakte naar 200 m² verhogen. Bij het in kaart brengen van informele nederzettingen gooit 50 m² echte huizen weg, dus verlaag je die naar 15 en leun je meer op de betrouwbaarheidsscore.
Hoe een schoon resultaat eruitziet
Parijs is een lastig geval. Dezelfde tool op vrijstaande woningen, ongeveer 10 km naar het westen:

85m²
median polygon area
Paris run: 3.2 m²
0.79
median confidence
Paris run: 0.26
251polygons
kept, out of 251 returned
Paris run: 82 out of 635
Dezelfde tool, dezelfde stad, niets om weg te gooien. De bebouwingsstructuur is veranderd, niet het model.
Waar dit misgaat: dichte aaneengesloten blokken

Elke polygon volgt de bebouwde omtrek van een heel blok, strak langs de straatlijn en met de binnenplaatsen er correct uit gesneden. Goed voor bebouwde oppervlakte of verhard oppervlak, maar verkeerd als je één polygon per adres nodig hebt. Geen enkel model dat een verticale afbeelding leest kan de scheidingsmuur tussen twee aaneengesloten gebouwen vinden, omdat er van bovenaf niets te zien is.
Ik zou automatische detectie dus niet gebruiken voor een layer met één polygon per adres in een historisch stadscentrum. Kadastrale data plus handmatige correctie wint daar.
De geometrie opschonen
Drie ingebouwde QGIS-tools maken een footprint layer netjes, en de volgorde is belangrijk omdat simplify de hoekpunten verplaatst die je net haaks hebt gemaakt.
- Simplify, tolerantie van 0.5 m bij luchtbeelden. Vermindert het aantal hoekpunten sterk zonder de grens merkbaar te verplaatsen.
- Orthogonalize. Maakt hoeken die bijna recht zijn haaks. Gebruik dit bij open data of handmatig overgetrokken werk, waar nog niets haaks is gemaakt.
- Delete holes, alleen als je volle footprints wilt. Niet bij het Parijse resultaat: die gaten zijn binnenplaatsen en ze kloppen.
Bij een gedetecteerde layer is stap 2 bijna overbodig. Ik heb dat gemeten in plaats van het aan te nemen, door Orthogonalize uit te voeren op 190 gedetecteerde gebouwen en alle 1,845 hoeken voor en na te vergelijken.
87.9%
corners already within 1° of square
before running anything
87.9%
after Orthogonalize
the same 1,845 corners
1.7cm
median vertex shift
9.1 cm at the worst

De 12% die niet haaks zijn, zijn de aaneengesloten terrassen. Kijk naar de getrapte rand die door het midden van het blok loopt. Geen enkele hoekentool lost dat op, omdat die stappen een echte daklijn volgen en geen modelleringsfout zijn.
Welke methode je gebruikt
| Open datasets | Handmatig digitaliseren | Automatische detectie | |
|---|---|---|---|
| Kosten | Gratis | Gratis | Gratis niveau, daarna betaald |
| Instellen | Minuten | Geen | Minuten |
| Geschikt voor | Gebieden die al goed gedekt zijn | Minder dan ~50 gebouwen | Honderden tot duizenden |
| Komt overeen met je beeldmateriaal | Nee | Ja | Ja |
| Consistent binnen een team | Ja | Nee | Ja |
| Dichte aaneengesloten blokken | Verschilt | Ja | Alleen blokomtrekken |
| Herkomst die je kunt vermelden | Dataset en opnamedatum | Jij | Jouw beeldmateriaal, met een betrouwbaarheidsscore |
Vragen die ik krijg
Werkt het op dronebeelden? Beter dan op satellietbeelden. Grondresolutie is belangrijker dan de bron: een orthofoto van 5 cm geeft duidelijkere grenzen en een hogere betrouwbaarheid dan een satellietbeeld van 30 cm.
Heb ik een GPU nodig? Nee. Beide modi draaien standaard op onze servers en het kleine lokale model draait op je eigen CPU, trager en minder nauwkeurig. Als alles op je machine moet blijven, zijn Geo-SAM en samgeo gratis en goed, maar ze hebben wel een NVIDIA-kaart nodig.
Wat kost een run? Eén credit per tegel in de automatische modus, één credit per opgeslagen object in de semi-automatische modus. Elk account krijgt elke maand een gratis tegoed en het lokale model kost helemaal niets.



