Zum Inhalt springen
AI Segmentation
QGIS
Tutorial

Gebäudegrundrisse in QGIS automatisch erkennen

0:00 / 0:00
Ein Bereich, ein Wort, 848 Gebäude. Ein echter Durchlauf, 3x beschleunigt, nichts herausgeschnitten.

Ich habe eine automatische Erkennung über einem Gebiet im Zentrum von Paris ausgeführt und in einem Durchlauf 635 Polygone erhalten. Zu entscheiden, welche 82 ich behalten sollte, dauerte länger als die Erkennung, und genau diesen zweiten Teil lässt fast jedes Tutorial aus.

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
Zum Vergleichen ziehen
One automatic pass over central Paris, on Google Satellite imagery. Every polygon gets its own colour so neighbours stay separate. Drag the handle to compare.

Die Kurzfassung. Um Gebäudegrundrisse in automatisch zu erkennen: Installiere ein plugin zur AI-Erkennung über den plugin manager, lade deine Bilddaten, zeichne eine Zone, benenne das Objekt und starte die Erkennung. Du erhältst einen Polygon-Layer im CRS deines Projekts. Dann filterst du diese Rohdaten nach Konfidenz und Fläche, denn ein großer Teil der Ergebnisse ist kein Gebäude.

Was ein Gebäudegrundriss ist

Der Umriss eines Gebäudes dort, wo es auf den Boden trifft, als flaches Polygon. Nicht das Dach, nicht das Grundstück, nicht der Adresspunkt.

Was hier wichtig ist, denn senkrechte Bilddaten zeigen das Dach. Bei einem fünfstöckigen Haussmann-Block, der nahezu senkrecht von oben aufgenommen wurde, ist der Versatz gering. Bei einem Turm ist er das nicht. Gut zu wissen, bevor du jemandem einen Gebäudegrundriss-Layer versprichst.

Prüfe zuerst die offenen Datensätze

Für viele Aufgaben musst du überhaupt nichts erkennen.

Three panels of the same dense Luanda neighbourhood on Google Satellite imagery, with building footprints in green. OpenStreetMap shows none, Microsoft covers most, Google Open Buildings covers nearly all.
The same 1 km² of Luanda, on Google Satellite imagery. OpenStreetMap maps no buildings here, Microsoft finds 3,140, Google Open Buildings 4,468. Over a dense African neighbourhood the dataset you reach for decides whether you get everything or nothing.

Lade einen davon zusammen mit deinen Bilddaten. Erst wenn die Abdeckung Lücken hat, der Erfassungszeitpunkt nicht stimmt oder die Grundrisse zum konkreten Orthofoto passen müssen, das ein Kunde dir gegeben hat, machst du weiter.

Bei weniger als fünfzig Gebäuden zeichnest du sie

Digitalisiere von Hand. Kostenlos, exakt, und bei dieser Größe würde ich es trotzdem selbst machen. Aktiviere zuerst das Snapping (Project -> Snapping Options, vertex and segment, topological editing on), sonst verbringst du den Nachmittag damit, Splitter zu löschen.

Beim etwa 60. Gebäude beginnst du, Abkürzungen zu nehmen, die du beim 6. niemals genommen hättest, und bemerkst es nicht. Es steckt schon im Layer.

Der automatische Weg

Das plugin hier ist AI Segmentation, das mein Mitgründer und ich bei TerraLab entwickeln, also lies diesen Abschnitt mit dem Wissen, wessen Tool es ist. Es wird wie jedes andere aus dem plugin manager installiert: kein manueller Download, keine Python-Umgebung, keine spezielle Grafikkarte, denn das Modell läuft auf unseren Servern. Windows, macOS und Linux.

Zeichne eine Zone, gib buildings ein und klicke auf Detect. Das ist der gesamte prompt, auf Wunsch in deiner eigenen Sprache. Die Ergebnisse kommen Kachel für Kachel als ein Polygon-Layer im CRS des Projekts zurück.

The AI Segmentation panel in QGIS with the Semi-Auto and Automatic switch
Automatic mode: pick the imagery layer, draw a zone, name the object.

Die eine Einstellung, die du kennen solltest, ist die Präzision, also die Kachelgröße. Kleine Kacheln geben dem Modell einen genauen Blick, was kleine Objekte brauchen. Große Kacheln geben Kontext, was ein landwirtschaftliches Flurstück braucht. Für Kacheln bezahlst du ebenfalls: ein Guthaben pro Kachel. Jedes Konto erhält jeden Monat ein kostenloses Kontingent, ohne dass eine Karte nötig ist, und Pro erhöht es. Die Erkennung läuft auf europäischen Servern, wir trainieren nicht mit deinen Bilddaten, und es gibt ein kleines lokales Modell, wenn nichts deinen Rechner verlassen darf.

Danach führt dich das Panel durch drei Schritte, bevor irgendetwas zu einem Layer wird: filtere, was du Keep möchtest, Correct was das Modell übersehen hat, und wähle die Ausgabe-Shapes. Der vollständige Leitfaden deckt alle drei ab. Der erste entscheidet über den Erfolg, deshalb folgt jetzt der nächste Abschnitt.

Filtern ist die eigentliche Arbeit

Die rohe Erkennungsausgabe ist eine Menge von Kandidatenpolygonen mit Konfidenzwerten. Bei dichten Bilddaten sind die meisten klein und unsicher. Ich habe diesen Paris-Durchlauf mit weit geöffneten Filtern exportiert, sodass jeder Kandidat im Layer gelandet ist: 635 Polygone auf 1.18 km².

1 m²101001 00010 000 m²50 m²
Every one of the 635 detections, binned by area on a log scale. Two humps: noise under 5 m², real buildings above 160 m². The 50 m² line falls in the valley between them, which is why it is not an arbitrary number. Median 3.2 m², largest 13,528 m², median confidence 0.26.

Die Hälfte der Ergebnisse ist kleiner als ein Parkplatz: Lüftungsöffnungen, Dachfenster, Treppenhausaufbauten, Schuppen in Innenhöfen. Echte Dinge auf den Bilddaten, korrekt umrissen, und nicht das, was jemand mit einem Gebäudegrundriss meint.

Also filtern. Verschiebe die beiden Schieberegler im Panel oder erledige dasselbe über die Attributtabelle mit Select by Expression:

"area_m2" >= 50 AND "score" >= 0.5

Damit bleiben 82 Polygone von 635 übrig, die 222,338 m² der insgesamt 263,658 m² abdecken. Statt mir die Schwellenwerte einfach zu glauben, verschiebe sie selbst. Grün bleibt bei deinem Filter, Weiß nicht.

Aerial imagery of dense Parisian blocks with detected building polygons drawn over it

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.

Beobachte die zweite Zahl, während du die erste verschiebst. 87% der Polygone wegzuwerfen kostet 16% der Fläche. Der Rest ist Rauschen, das du ohnehin von Hand gelöscht hättest, eines nach dem anderen, während du dich gefragt hättest, ob das Tool überhaupt etwas taugt.

Passe beide an die Aufgabe an. Bei einer Erfassung von Industriehallen kannst du die Flächenuntergrenze auf 200 m² setzen. Bei der Kartierung informeller Siedlungen wirft 50 m² echte Häuser weg, also gehe auf 15 herunter und stütze dich stattdessen stärker auf den Konfidenzwert.

Wie ein sauberes Ergebnis aussieht

Paris ist ein schwieriger Fall. Dasselbe Tool bei freistehenden Häusern etwa 10 km westlich:

Detached and semi-detached houses in a Paris suburb, each house filled with its own colour
Detached housing, review filter on. One polygon per house, almost nothing to throw away.

85

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

Dasselbe Tool, dieselbe Stadt, nichts wegzuwerfen. Geändert hat sich die Bebauungsstruktur, nicht das Modell.

Wo das scheitert: dichte zusammenhängende Blöcke

Close view of Haussmann blocks, each block one coloured polygon following the street edge with courtyards cut out
The outline follows the street edge precisely and cuts out the courtyards. What it does not do is split the block into individual addressed buildings.

Jedes Polygon zeichnet die bebaute Hülle eines ganzen Blocks nach, folgt eng der Straßenlinie und schneidet die Innenhöfe korrekt aus. Gut für bebaute Fläche oder versiegelte Fläche, falsch, wenn du ein Polygon pro Adresse brauchst. Kein Modell, das ein vertikales Bild liest, kann die Brandmauer zwischen zwei aneinandergebauten Gebäuden finden, denn von oben gibt es dort nichts zu sehen.

Deshalb würde ich die automatische Erkennung nicht für einen Layer mit einem Polygon pro Adresse in einem historischen Stadtzentrum verwenden. Katasterdaten plus manuelle Korrektur sind dort besser.

Die Geometrie bereinigen

Drei native QGIS-Werkzeuge können einen Gebäudegrundriss-Layer aufräumen, und die Reihenfolge ist wichtig, weil Simplify die Vertices verschiebt, die du gerade rechtwinklig gemacht hast.

  1. Simplify, Toleranz 0.5 m über Luftbildern. Reduziert die Anzahl der Vertices stark, ohne die Grenze merklich zu verschieben.
  2. Orthogonalize. Bringt annähernd rechte Winkel ins Lot. Greife darauf bei offenen Daten oder von Hand nachgezeichneten Arbeiten zurück, bei denen noch nichts rechtwinklig gemacht wurde.
  3. Delete holes, nur wenn du solide Gebäudegrundrisse willst. Nicht beim Paris-Ergebnis: Diese Löcher sind Innenhöfe und korrekt.

Bei einem erkannten Layer ist Schritt 2 fast wirkungslos. Ich habe das gemessen, statt es anzunehmen, indem ich Orthogonalize auf 190 erkannte Gebäude angewendet und alle 1,845 Ecken davor und danach verglichen habe.

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

Close view of detected building outlines on aerial imagery, corners meeting at right angles
The same detections, close in. The corners arrive square, so the cleanup step has nothing left to snap.

Die 12%, die nicht rechtwinklig sind, sind die angebauten Terrassen. Schau dir die abgestufte Kante an, die mitten durch den Block läuft. Kein Eckenwerkzeug behebt das, denn diese Stufen folgen einer echten Dachlinie und sind kein Modellierungsfehler.

Welche Methode du verwenden solltest

Offene DatensätzeDigitalisierung von HandAutomatische Erkennung
KostenKostenlosKostenlosKostenloses Kontingent, danach kostenpflichtig
EinrichtungMinutenKeineMinuten
Geeignet fürBereiche mit guter AbdeckungUnter ca. 50 GebäudeHunderte bis Tausende
Passt zu deinen BilddatenNeinJaJa
Einheitlich im TeamJaNeinJa
Dichte zusammenhängende BlöckeUnterschiedlichJaNur Blockhüllen
Angegebene HerkunftDatensatz und ErfassungszeitpunktDuDeine Bilddaten, mit einem Konfidenzwert

Fragen, die mir gestellt werden

Funktioniert das mit Drohnenbildern? Besser als mit Satellitenbildern. Die Bodenauflösung ist wichtiger als die Quelle: Ein 5-cm-Orthofoto liefert sauberere Grenzen und höhere Konfidenz als eine 30-cm-Satellitenaufnahme.

Brauche ich eine GPU? Nein. Beide Modi laufen standardmäßig auf unseren Servern, und das kleine lokale Modell läuft auf deiner eigenen CPU, langsamer und ungenauer. Wenn alles auf deinem Rechner bleiben soll, sind Geo-SAM und samgeo kostenlos und gut, und sie brauchen tatsächlich eine NVIDIA-Karte.

Was kostet ein Durchlauf? Ein Guthaben pro Kachel im automatischen Modus, ein Guthaben pro gespeichertem Objekt im halbautomatischen Modus. Jedes Konto erhält jeden Monat ein kostenloses Kontingent, und das lokale Modell kostet überhaupt nichts.

Try it free in QGIS, no card needed