Przejdź do treści
AI Segmentation
QGIS
Poradnik

Obrysy budynków w QGIS: 3 metody

Opublikowano Zaktualizowano

Aby wykryć obrysy budynków w QGIS masz trzy drogi: pobierz otwarty zbiór danych, uruchom AI detection plugin na własnym obrazie albo zdigitalizuj ręcznie. Najszybsza jest druga. Zainstaluj plugin z menedżera plugin, wczytaj swój obraz, narysuj strefę, wpisz buildings, kliknij Detect, a polygon layer wyląduje w Twoim projekcie CRS.

Filtrowanie to druga połowa pracy. Duża część tego, co wraca, to nie budynki, więc przytnij surowy wynik według pewności i powierzchni. Uruchomiłem jedno przejście na centrum Paryża, dostałem 635 poligonów, a decyzja, które 82 zachować, zajęła dłużej niż sama detekcja.

0:00 / 0:00
One zone, one word, 848 buildings. Real run, sped up 3x, nothing cut.
Twoje dane wejścioweMetodaCzas
Obszar, który pokrywają już OpenStreetMap, Microsoft albo GoogleMetoda 1: pobierz otwarte obrysyMinuty
Setki do tysięcy budynków, na dokładnie tym obrazie, który dostałeśMetoda 2: automatyczna detekcja (nasza, w chmurze)848 budynków w 57 sekund, potem filtrowanie
Poniżej pięćdziesięciu budynków albo historyczne centrum, gdzie potrzebujesz jednego poligonu na adresMetoda 3: digitalizuj ręcznieTyle, ile Ci to zajmie

Otwarte dane najpierw, za każdym razem. Idziesz dalej tylko wtedy, gdy pokrycie ma dziury, rocznik jest zły albo obrysy muszą pasować do konkretnej ortofotomapy, którą dał Ci klient.

Metoda 1: Pobierz otwarte obrysy

Potrzebujesz QGIS 3.22 albo nowszego, jeden obraz, któremu ufasz, i połączenia z internetem do metody 2. Żadnej dedykowanej karty graficznej, w żadnej z trzech.

Do wielu zleceń nie musisz nic wykrywać. Trzy otwarte zbiory danych pokrywają między sobą większość planety, a na jednym osiedlu potrafią różnić się o tysiące budynków.

Pick the dataset for your area

OpenStreetMap jest świetny tam, gdzie maperzy są aktywni, a budynki niosą atrybuty. Microsoft Global ML Building Footprints ma ponad miliard budynków wyciągniętych maszynowo i jest najmocniejszy w Ameryce Północnej. Google Open Buildings pokrywa Globalne Południe, gdzie OSM jest najrzadszy.

Load one against your imagery

Dociągnij OSM narzędziem QuickOSM.

Zoom in and look at the edges

To jedno spojrzenie decyduje, czy kończysz tutaj, czy czytasz dalej.

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.

Użyj, gdy: obszar jest już dobrze zmapowany i pasują Ci rocznik zbioru i licencja.

Pomiń, gdy: pokrycie ma dziury, rocznik jest zły albo obrysy muszą zgrać się z jedną konkretną ortofotomapą.

Metoda 2: Automatyczna detekcja

Obrys budynku to linia budynku w miejscu, gdzie spotyka się z gruntem, jako płaski poligon. Nie dach, nie działka, nie punkt adresowy. To ważne tutaj, bo pionowe zdjęcie daje Ci dach: na pięciopiętrowym bloku haussmannowskim zdjętym prawie w nadirze przesunięcie jest małe, na wieżowcu już nie. Warto wiedzieć, zanim obiecasz komuś layer z obrysami, a dłuższa wersja jest w tekście co to jest obrys budynku.

Model automatycznej detekcji czyta Twój obraz i zwraca obrysy budynków jako poligony, każdy z wynikiem confidence. My budujemy jedno z takich narzędzi, AI Segmentation. Ta sekcja jest o naszym własnym narzędziu.

Instaluje się z menedżera plugin jak każde inne: bez pobierania ręcznie, bez środowiska Python, bez dedykowanej karty graficznej, bo model działa na naszych serwerach. Windows, macOS i Linux.

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
Przeciągnij, aby porównać
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.

Install it and pick your imagery layer

Plugin manager, install, open the panel, choose the raster you want read.

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.

Draw a zone and name the object

Narysuj strefę, wpisz buildings, kliknij Detect. To cały prompt, w Twoim języku, jeśli wolisz. Wyniki spływają kafelek po kafelku jako jeden polygon layer w projekcie CRS.

Set the precision when the objects are small

Jedyne ustawienie warte poznania to precision, czyli rozmiar kafelka. Małe kafelki dają modelowi bliskie spojrzenie, którego potrzebują małe obiekty. Duże kafelki dają kontekst, którego potrzebuje działka rolna.

Filter what came back

Panel prowadzi Cię przez trzy kroki, zanim cokolwiek stanie się layer: odfiltruj, co Keep, popraw Correct to, co model pominął, i wybierz wyjściowe Shapes. Pierwszy krok wygrywa pracę i dostaje własną sekcję poniżej.

Clean the geometry

Uruchom Simplify, orthogonalize i delete holes, w tej kolejności i tylko tam, gdzie każde zasługuje na miejsce. Te trzy narzędzia i powód kolejności są poniżej.

Przebieg liczy pokryty teren. Każde konto dostaje darmowy limit co miesiąc, bez pytania o kartę, a Pro go podnosi. Detekcja działa na serwerach europejskich, nie trenujemy na Twoim obrazie i jest mały lokalny model, jeśli nic nie może opuścić Twojej maszyny. Kompletny przewodnik opisuje w całości Keep, Correct i Shapes.

Filtrowanie to cała praca

Surowy wynik detekcji to zbiór kandydujących poligonów z wynikami confidence. Na gęstym obrazie większość jest mała i niepewna. Ten paryski przebieg wyeksportowałem z oboma filtrami szeroko otwartymi, więc każdy kandydat trafił do layer: 635 poligonów na 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.

Połowa tego, co wróciło, jest mniejsza niż miejsce parkingowe: wywietrzniki, świetliki, obudowy klatek schodowych, szopy na dziedzińcach. Prawdziwe rzeczy na obrazie, poprawnie obrysowane, i nie to, co ktokolwiek ma na myśli, mówiąc obrys budynku.

Więc filtruj. Przesuń dwa suwaki w panelu albo zrób tę samą pracę z tabeli atrybutów poleceniem Select by Expression:

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

Zostaje 82 poligony z 635, o powierzchni 222,338 m² z 263,658 m² całości. Zamiast wierzyć mi na słowo co do progów, przesuń je sam. Zielony przeżywa Twój filtr, biały nie.

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.

Patrz na drugą liczbę, gdy ciągniesz pierwszą. Wyrzucenie 87% poligonów kosztuje 16% powierzchni, a reszta to szum, który i tak kasowałbyś ręcznie, jeden po drugim, zastanawiając się, czy narzędzie jest coś warte.

Dostrój oba do zadania. Inwentaryzacja hal przemysłowych może podnieść próg powierzchni do 200 m². Przy mapowaniu nieformalnej zabudowy 50 m² wyrzuca prawdziwe domy, więc zejdź do 15 i oprzyj się na wyniku confidence.

Jak wygląda czysty wynik

Paryż to trudny przypadek. To samo narzędzie na zabudowie jednorodzinnej około 10 km na zachód:

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.

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

To samo narzędzie, to samo miasto, nic do wyrzucenia. Zmieniła się tkanka zabudowy, nie model.

Gdzie się łamie: gęste ciągłe kwartały

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.

Każdy poligon kreśli zabudowaną powłokę całego kwartału, trzyma się linii ulicy i poprawnie wycina dziedzińce. Dobre do powierzchni zabudowanej albo powierzchni nieprzepuszczalnej, złe, jeśli potrzebujesz poligonu na adres. Żaden model czytający pionowe zdjęcie nie znajdzie ściany między dwoma stykanymi budynkami, bo z góry nie ma tam nic do zobaczenia.

Czyszczenie geometrii

Trzy natywne narzędzia QGIS porządkują layer z obrysami, a kolejność ma znaczenie, bo simplify przesuwa wierzchołki, które właśnie wyprostowałeś.

  1. Simplify, tolerancja 0.5 m na zdjęciu lotniczym. Mocno tnie liczbę wierzchołków, nie przesuwając granicy nigdzie, gdzie byś to zauważył.
  2. Orthogonalize. Dociąga prawie proste kąty do kąta prostego. Sięgnij po nie przy otwartych danych albo pracy odrysowanej ręcznie, gdzie nic ich jeszcze nie wyprostowało.
  3. Delete holes, tylko jeśli chcesz pełnych obrysów. Nie na wyniku paryskim: te dziury to dziedzińce i są poprawne.

Na wykrytym layer krok 2 jest prawie no-op. Zmierzyłem to, zamiast zakładać, uruchamiając Orthogonalize na 190 wykrytych budynkach i porównując wszystkie 1,845 narożników przed i po.

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.

Te 12%, które nie są proste, to szeregowce w zabudowie zwartej. Spójrz na schodkową krawędź biegnącą przez środek kwartału. Żadne narzędzie do narożników tego nie naprawi, bo te stopnie idą za prawdziwą linią dachu, a nie za błędem modelowania.

Użyj, gdy: setki do tysięcy budynków, na obrazie, do którego musisz się dopasować, albo gdy kilka osób musi zrobić ten sam layer w ten sam sposób.

Pomiń, gdy: potrzebujesz poligonu na adres w historycznym centrum miasta. Ja nie użyłbym tam automatycznej detekcji, a wygrywają dane katastralne plus korekta ręczna.

Try it free in QGIS, no card needed

Metoda 3: Digitalizuj ręcznie

Poniżej pięćdziesięciu budynków, narysuj je. Za darmo, dokładnie i sam nadal bym tak zrobił przy tym rozmiarze.

Turn on snapping

Project -> Snapping Options, wierzchołek i segment, edycja topologiczna włączona. Pomiń to, a popołudnie spędzisz na kasowaniu sliverów.

Trace, and watch yourself drift

Około 60. budynku zaczynasz obcinać rogi, których nigdy nie obciąłbyś przy 6., i tego nie zauważasz. To już jest w layer.

Użyj, gdy: poniżej około pięćdziesięciu budynków albo gdy potrzebujesz jednego poligonu na adres w gęstym historycznym centrum.

Pomiń, gdy: liczba idzie w setki albo kilka osób musi zrobić ten sam layer w ten sam sposób.

Co zapamiętać

Otwarte zbiory danychAutomatyczna detekcjaDigitalizacja ręczna
KosztZa darmoDarmowy limit, potem płatnyZa darmo
StartMinutyMinutyBrak
Dobre doObszarów już dobrze pokrytychSetek do tysięcyPoniżej ~50 budynków
Pasuje do Twojego obrazuNieTakTak
Powtarzalne w zespoleTakTakNie
Gęste ciągłe kwartałyRóżnieTylko powłoki kwartałówTak
Proweniencja do podaniaZbiór i rocznikTwój obraz, z wynikiem confidenceTy

Najpierw sprawdź otwarte zbiory danych. Na jednym osiedlu różnią się o tysiące budynków, więc jedno spojrzenie na ich krawędzie na tle Twojego obrazu decyduje, czy idziesz dalej.

Obrysy, które muszą zgrać się z ortofotomapą klienta, wykluczają otwarte zbiory danych, niezależnie od pokrycia.

Filtrowanie detekcji to większość pracy: 82 poligony z 635 w centrum Paryża, z 84% powierzchni zabudowanej.

Pionowe zdjęcie nie da Ci jednego poligonu na adres tam, gdzie budynki się stykają, za żadną cenę. Dołącz dane katastralne.

Powyżej około pięćdziesięciu budynków digitalizacja ręczna dryfuje, nie mówiąc Ci o tym.

Częste pytania

Czy działa na zdjęciach z drona?

Lepiej niż na satelicie. Rozdzielczość terenowa znaczy więcej niż źródło: ortofotomapa 5 cm daje czystsze granice i wyższe confidence niż scena satelitarna 30 cm.

Czy potrzebuję GPU?

Nie. Oba tryby działają domyślnie na naszych serwerach, a mały lokalny model działa na Twoim własnym CPU, wolniej i mniej dokładnie. Jeśli wszystko ma zostać na Twojej maszynie, Geo-SAM i samgeo są darmowe i dobre, i chcą karty NVIDIA.

Ile kosztuje przebieg?

Automatyczny liczy pokryty strefą teren, a Cloud AI liczy jeden obiekt na zapis. Semi-Auto na własnej maszynie jest darmowy. Każde konto dostaje darmowy limit co miesiąc.

Czy dostanę jeden poligon na adres?

Nie z pionowego zdjęcia, w centrum miasta, gdzie budynki się stykają. Model zwraca zabudowaną powłokę całego kwartału, z wyciętymi dziedzińcami, co jest dobre do powierzchni zabudowanej, a złe do adresów. Dołącz dane katastralne.

Od którego otwartego zbioru zacząć?

Od OpenStreetMap, jeśli Twój obszar ma aktywnych maperów. Gdzie ich nie ma, luka jest ostra: na tym 1 km² Luandy OSM nie mapuje żadnych budynków, a Microsoft znajduje 3,140, a Google Open Buildings 4,468.

Pełną różnicę dach-grunt przeczytasz w tekście co to jest obrys budynku. Do przypadku sklasyfikowanego raster, gdzie polygonize bije każdy model, przeczytaj raster na wektor w QGIS. Hub QGIS AI zbiera resztę tego, co budujemy.

Try it free in QGIS, no card needed