Pular para o conteúdo
Voltar ao blog
AI Segmentation
QGIS
Tutorial

Como detectar automaticamente a implantação de edifícios no QGIS

0:00 / 0:00
Uma área, uma palavra, 848 edificações. Execução real, acelerada em 3x, sem cortes.

Executei uma detecção automática sobre uma zona do centro de Paris e obtive 635 polígonos em uma única execução. Decidir quais 82 manter levou mais tempo do que a detecção, e essa segunda parte é o que quase todo tutorial deixa de fora.

Dense Parisian city blocks before and after automatic building detection (after)
Dense Parisian city blocks before and after automatic building detection (before)
ImageryDetected
Arraste para comparar
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.

A versão curta. Para detectar automaticamente a implantação de edifícios no : instale um plugin de detecção por AI pelo plugin manager, carregue suas imagens, desenhe uma zona, nomeie o objeto e execute. Você obtém uma layer de polígonos no CRS do projeto. Depois filtre essa saída bruta por confiança e área, porque uma grande parte do resultado não é um edifício.

O que é a implantação de um edifício

O contorno de um edifício onde ele encontra o solo, como um polígono plano. Não o telhado, não o lote, não o ponto do endereço.

Isso importa aqui porque as imagens verticais mostram o telhado. Em um bloco haussmanniano de cinco andares fotografado quase no nadir, o deslocamento é pequeno. Em uma torre, não. Vale saber disso antes de prometer a alguém uma layer de implantação.

Confira primeiro os conjuntos de dados abertos

Em muitos trabalhos, você não precisa detectar nada.

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.

Carregue um deles sobre suas imagens. Só avance quando a cobertura tiver lacunas, a época estiver errada ou as implantações precisarem corresponder à ortofoto específica que o cliente lhe entregou.

Com menos de cinquenta edifícios, desenhe-os

Faça a vetorização manualmente. É grátis, exato, e eu ainda faria isso sozinho nesse tamanho. Ative o snapping primeiro (Project -> Snapping Options, vértice e segmento, edição topológica ativada) ou você passará a tarde apagando slivers.

Por volta do 60º edifício, você começa a cortar cantos que jamais teria cortado no 6º, e não percebe. Ele já está na layer.

O modo automático

O plugin desta seção é o AI Segmentation, que meu cofundador e eu desenvolvemos na TerraLab, então leia esta seção sabendo de quem é a ferramenta. Ele é instalado pelo plugin manager como qualquer outro: sem download manual, sem ambiente Python, sem placa de vídeo dedicada, porque o modelo roda em nossos servidores. Windows, macOS e Linux.

Desenhe uma zona, digite buildings e clique em Detect. Esse é o prompt inteiro, no seu próprio idioma se preferir. Os resultados chegam tile a tile como uma única layer de polígonos no CRS do projeto.

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.

A única configuração que vale a pena aprender é precision, que corresponde ao tamanho do tile. Tiles pequenos dão ao modelo uma visão de perto, necessária para objetos pequenos. Tiles grandes dão contexto, necessário para um lote agrícola. Tiles também são o que você paga: um crédito por tile. Toda conta recebe uma cota gratuita por mês, sem cartão, e o Pro aumenta essa cota. A detecção roda em servidores europeus, não treinamos com suas imagens e há um modelo local pequeno se nada puder sair da sua máquina.

Depois, o painel guia você por três etapas antes de qualquer coisa virar uma layer: filtre o que deve ser Keep, Correct o que o modelo deixou passar e escolha os Shapes de saída. O guia completo cobre as três. A primeira é onde o trabalho é ganho, então ela recebe a próxima seção.

A filtragem é o trabalho todo

A saída bruta da detecção é um conjunto de polígonos candidatos com pontuações de confiança. Em imagens densas, a maioria é pequena e incerta. ExporteI essa execução de Paris com os dois filtros totalmente abertos, então todos os candidatos foram parar na layer: 635 polígonos em 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.

Metade do que voltou é menor do que uma vaga de estacionamento: saídas de ventilação, claraboias, casas de escada, galpões de pátio. Coisas reais nas imagens, delineadas corretamente, mas não o que alguém quer dizer com implantação de edifício.

Então filtre. Mova os dois controles deslizantes no painel ou faça o mesmo trabalho na tabela de atributos com Select by Expression:

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

Isso deixa 82 polígonos de 635, cobrindo 222,338 m² dos 263,658 m² totais. Em vez de aceitar minha palavra sobre os limites, mova-os você mesmo. O verde sobrevive ao seu filtro, o branco não.

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.

Observe o segundo número enquanto arrasta o primeiro. Descartar 87% dos polígonos custa 16% da área. O restante é ruído que você teria apagado manualmente de qualquer forma, um por vez, enquanto se perguntava se a ferramenta era boa mesmo.

Ajuste os dois ao trabalho. Um levantamento de galpões industriais pode elevar o limite de área para 200 m². Ao mapear assentamentos informais, 50 m² descarta casas reais, então reduza para 15 e apoie-se na pontuação de confiança.

Como é um resultado limpo

Paris é um caso difícil. A mesma ferramenta em moradias isoladas cerca de 10 km a oeste:

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

A mesma ferramenta, a mesma cidade, quase nada para descartar. O que mudou foi o tecido construído, não o modelo.

Onde isso falha: blocos densos e contínuos

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.

Cada polígono traça o envelope construído de um quarteirão inteiro, acompanhando o alinhamento da rua e recortando corretamente os pátios internos. Bom para área construída ou superfície impermeável, errado se você precisa de um polígono por endereço. Nenhum modelo que leia uma imagem vertical consegue encontrar a parede divisória entre dois edifícios geminados, porque, vistos de cima, não há nada ali para ver.

Por isso, eu não usaria detecção automática para uma layer por endereço em um centro histórico. Ali, dados cadastrais mais correção manual levam a melhor.

Limpando a geometria

Três ferramentas nativas do QGIS organizam uma layer de implantação, e a ordem importa porque a simplificação move os vértices que você acabou de esquadrejar.

  1. Simplify, tolerância de 0.5 m sobre imagens aéreas. Reduz bastante a contagem de vértices sem mover o limite de uma maneira perceptível.
  2. Orthogonalize. Ajusta ângulos quase retos para deixá-los retos. Recorra a ele em dados abertos ou trabalho traçado à mão, onde nada ainda os deixou retos.
  3. Delete holes, somente se você quiser implantações sólidas. Não no resultado de Paris: aqueles buracos são pátios internos e estão corretos.

Em uma layer detectada, a etapa 2 quase não faz nada. Eu medi isso em vez de presumir, executando Orthogonalize sobre 190 edifícios detectados e comparando os 1,845 cantos antes e depois.

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.

Os 12% que não são quadrados são terraços anexos. Observe a borda em degraus que desce pelo meio do quarteirão. Nenhuma ferramenta de cantos corrige isso, porque esses degraus seguem uma linha de telhado real, e não um erro de modelagem.

Qual método usar

Conjuntos de dados abertosVetorização manualDetecção automática
CustoGrátisGrátisPlano gratuito, depois pago
ConfiguraçãoMinutosNenhumaMinutos
Bom paraÁreas já bem cobertasMenos de ~50 edifíciosCentenas a milhares
Corresponde às suas imagensNãoSimSim
Consistente em toda a equipeSimNãoSim
Blocos densos e contínuosVariaSimApenas envelopes de quarteirão
Proveniência que você pode declararDataset e épocaVocêSuas imagens, com uma pontuação de confiança

Perguntas que recebo

Funciona com imagens de drone? Melhor do que com satélite. A resolução no solo importa mais do que a fonte: uma ortofoto de 5 cm produz limites mais limpos e maior confiança do que uma cena de satélite de 30 cm.

Preciso de uma GPU? Não. Os dois modos rodam em nossos servidores por padrão, e o modelo local pequeno roda na sua própria CPU, mais lentamente e com menos precisão. Se você quiser manter tudo na sua máquina, Geo-SAM e samgeo são gratuitos e bons, e eles precisam de uma placa NVIDIA.

Quanto custa uma execução? Um crédito por tile no modo automático, um crédito por objeto salvo no modo semiautomático. Toda conta recebe uma cota gratuita por mês, e o modelo local não custa absolutamente nada.

Try it free in QGIS, no card needed