Jak automatycznie wykrywać obrysy budynków w QGIS
Przeprowadziłem automatyczne wykrywanie nad strefą centralnego Paryża i w jednym przebiegu otrzymałem 635 poligonów. Decyzja, które 82 zachować, zajęła więcej czasu niż samo wykrywanie, a ten drugi etap pomija niemal każdy poradnik.


W skrócie. Aby automatycznie wykrywać obrysy budynków w
: zainstaluj plugin do wykrywania AI z menedżera pluginów, wczytaj zobrazowanie, narysuj strefę, nazwij obiekt i uruchom wykrywanie. Otrzymasz poligonowy layer w CRS projektu. Następnie przefiltruj surowy wynik według pewności i powierzchni, bo duża część tego, co wraca, nie przedstawia budynku.
Czym jest obrys budynku
Obrys budynku w miejscu, gdzie styka się on z gruntem, przedstawiony jako płaski poligon. Nie dach, nie działka, nie punkt adresowy.
To ma tu znaczenie, bo zobrazowanie wykonane pionowo pokazuje dach. W przypadku pięciopiętrowej kamienicy haussmannowskiej sfotografowanej niemal nadirowo przesunięcie jest niewielkie. W przypadku wieżowca już nie. Warto to wiedzieć, zanim obiecasz komuś layer obrysów.
Najpierw sprawdź otwarte zbiory danych
W wielu zadaniach nie musisz niczego wykrywać.
- OpenStreetMap jest świetny wszędzie tam, gdzie aktywnie działają mapujący, a budynki mają atrybuty. Wczytaj go za pomocą QuickOSM.
- Microsoft Global ML Building Footprints, ponad miliard budynków wyodrębnionych maszynowo, najlepszy w Ameryce Północnej.
- Google Open Buildings obejmuje kraje Globalnego Południa, gdzie OSM ma najsłabsze pokrycie.

Wczytaj jeden z nich na swoje zobrazowanie. Przechodzisz dalej dopiero, gdy pokrycie ma luki, aktualność danych jest niewłaściwa albo obrysy muszą pasować do konkretnej ortofotomapy przekazanej przez klienta.
Przy mniej niż pięćdziesięciu budynkach narysuj je
Zdigitalizuj je ręcznie. Za darmo, dokładnie i przy takiej liczbie nadal zrobiłbym to sam. Najpierw włącz przyciąganie (Project -> Snapping Options, wierzchołek i segment, włączona edycja topologiczna), bo spędzisz popołudnie na usuwaniu drobnych szczelin.
Około sześćdziesiątego budynku zaczynasz iść na skróty, których nigdy nie obrałbyś przy szóstym, i tego nie zauważasz. Jest już w layerze.
Sposób automatyczny
Pluginem jest tutaj AI Segmentation, który współtworzymy z moim wspólnikiem w TerraLab, więc czytaj ten fragment, pamiętając, czyje narzędzie opisuję. Instaluje się go z menedżera pluginów jak każdy inny: bez ręcznego pobierania, bez środowiska Pythona, bez dedykowanej karty graficznej, bo model działa na naszych serwerach. Windows, macOS i Linux.
Narysuj strefę, wpisz buildings, kliknij Detect. To cały prompt, w wybranym języku, jeśli wolisz. Wyniki napływają kafelek po kafelku jako jeden poligonowy layer w CRS projektu.

Jedynym ustawieniem, którego warto się nauczyć, jest precyzja, czyli rozmiar kafelka. Małe kafelki dają modelowi dokładny wgląd, którego potrzebują małe obiekty. Duże kafelki dają mu kontekst, którego potrzebuje działka rolna. Kafelki są też jednostką rozliczeniową: jeden kredyt za każdy. Każde konto otrzymuje co miesiąc darmowy limit, bez podawania karty, a Pro go zwiększa. Wykrywanie działa na europejskich serwerach, nie trenujemy na Twoim zobrazowaniu, a jeśli nic nie może opuścić Twojego komputera, dostępny jest mały model lokalny.
Następnie panel prowadzi Cię przez trzy kroki, zanim cokolwiek trafi do layera: filtruj to, co chcesz Keep, Correct to, co model pominął, i wybierz wynikowe Shapes. Kompletny przewodnik omawia wszystkie trzy. Pierwszy z nich decyduje o powodzeniu zadania, więc poświęcamy mu następną sekcję.
Filtrowanie to cała praca
Surowy wynik wykrywania to zbiór poligonów kandydujących z ocenami pewności. Na gęstym zobrazowaniu większość jest mała i niepewna. Ten paryski przebieg wyeksportowałem przy obu filtrach ustawionych bardzo szeroko, więc każdy kandydat trafił do layera: 635 poligonów na 1.18 km².
Połowa wyników jest mniejsza niż miejsce parkingowe: wywietrzniki, świetliki, obudowy klatek schodowych, szopy na dziedzińcach. Prawdziwe obiekty na zobrazowaniu, poprawnie obrysowane, ale nie to, co ktokolwiek ma na myśli, mówiąc o obrysie budynku.
Więc filtruj. Przesuń oba suwaki w panelu albo wykonaj tę samą pracę w tabeli atrybutów za pomocą Select by Expression:
"area_m2" >= 50 AND "score" >= 0.5
Pozostaje 82 poligony z 635, obejmujące 222,338 m² z łącznych 263,658 m². Zamiast wierzyć mi na słowo w sprawie progów, przesuń je samodzielnie. Zielone przetrwają Twój filtr, białe nie.

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.
Obserwuj drugą liczbę, gdy przesuwasz pierwszą. Odrzucenie 87% poligonów kosztuje 16% powierzchni. Reszta to szum, który i tak usunąłbyś ręcznie, jeden obiekt po drugim, zastanawiając się, czy narzędzie jest w ogóle dobre.
Dostosuj oba parametry do zadania. W przypadku przeglądu hal przemysłowych możesz podnieść minimalną powierzchnię do 200 m². Przy mapowaniu osiedli nieformalnych 50 m² odrzuca prawdziwe domy, więc zejdź do 15 i oprzyj się bardziej na ocenie pewności.
Jak wygląda czysty wynik
Paryż to trudny przypadek. To samo narzędzie w zabudowie jednorodzinnej około 10 km na zachód:

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 odrzucenia. Zmieniła się tkanka zabudowy, nie model.
Gdzie to się psuje: gęsta, ciągła zabudowa

Każdy poligon odwzorowuje obrys zabudowy całego kwartału, przylegając do linii ulicy i prawidłowo wycinając dziedzińce. Dobrze sprawdza się przy powierzchni zabudowanej lub powierzchni nieprzepuszczalnej, ale nie wtedy, gdy potrzebujesz jednego poligonu na adres. Żaden model czytający pionowe zobrazowanie nie znajdzie wspólnej ściany między dwoma połączonymi budynkami, bo z góry nie ma tam nic, co można zobaczyć.
Dlatego nie użyłbym automatycznego wykrywania do layera z jednym poligonem na adres w historycznym centrum miasta. Dane katastralne i ręczna korekta sprawdzają się tam lepiej.
Czyszczenie geometrii
Trzy natywne narzędzia QGIS porządkują layer obrysów, a kolejność ma znaczenie, bo Simplify przesuwa wierzchołki, które właśnie wyprostowałeś.
- Simplify, tolerancja 0.5 m na zobrazowaniu lotniczym. Mocno ogranicza liczbę wierzchołków, nie przesuwając granicy w sposób, który dałoby się zauważyć.
- Orthogonalize. Prostuje kąty zbliżone do prostych. Sięgnij po nie przy otwartych danych lub pracy odrysowanej ręcznie, gdy nic wcześniej ich nie wyprostowało.
- Delete holes, tylko jeśli chcesz mieć pełne obrysy. Nie w wyniku paryskim: te otwory to dziedzińce i są prawidłowe.
Na wykrytym layerze krok 2 prawie nic nie zmienia. 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

Te 12%, które nie są prostopadłe, to dołączone tarasy. Spójrz na schodkową krawędź biegnącą środkiem kwartału. Żadne narzędzie do prostowania narożników tego nie naprawi, bo te uskoki odwzorowują prawdziwą linię dachu, a nie błąd modelowania.
Którą metodę wybrać
| Otwarte zbiory danych | Ręczna digitalizacja | Automatyczne wykrywanie | |
|---|---|---|---|
| Koszt | Bezpłatnie | Bezpłatnie | Darmowy poziom, potem płatny |
| Konfiguracja | Kilka minut | Brak | Kilka minut |
| Dobre do | Obszarów z dobrym pokryciem | Mniej niż ~50 budynków | Od setek do tysięcy |
| Pasuje do Twojego zobrazowania | Nie | Tak | Tak |
| Spójne w całym zespole | Tak | Nie | Tak |
| Gęsta, ciągła zabudowa | Różnie | Tak | Tylko obrysy kwartałów |
| Źródło, które możesz wskazać | Zbiór danych i data wykonania | Ty | Twoje zobrazowanie, z oceną pewności |
Pytania, które słyszę
Czy działa na zobrazowaniu z drona? Lepiej niż na zobrazowaniu satelitarnym. Rozdzielczość terenowa ma większe znaczenie niż źródło: ortofotomapa 5 cm daje czystsze granice i wyższą pewność niż scena satelitarna 30 cm.
Czy potrzebuję GPU? Nie. Oba tryby domyślnie działają na naszych serwerach, a mały model lokalny działa na własnym CPU, wolniej i mniej dokładnie. Jeśli chcesz, żeby wszystko zostało na Twoim komputerze, Geo-SAM i samgeo są bezpłatne i dobre, ale wymagają karty NVIDIA.
Ile kosztuje jedno uruchomienie? Jeden kredyt na kafelek w trybie automatycznym, jeden kredyt na zapisany obiekt w trybie półautomatycznym. Każde konto otrzymuje co miesiąc darmowy limit, a model lokalny nie kosztuje absolutnie nic.



