Raster para vetor no QGIS: todos os métodos e quando cada um funciona

Para converter um raster em polígonos vetoriais no
, abra Raster > Conversion > Polygonize (Raster to Vector), escolha sua banda, dê um nome ao campo de saída e execute. Você obtém um polígono por grupo conectado de pixels que compartilham um valor, com esse valor gravado na tabela de atributos. Essa é a resposta certa para um raster classificado e a resposta errada para uma fotografia, e a maior parte dos problemas encontrados vem de não saber qual dos dois você tem.
Desenvolvemos um plugin do QGIS na TerraLab chamado AI Segmentation. Ele é uma linha na última tabela desta página, descrita como as demais.
O que significa raster para vetor
Um raster é uma grade de pixels. Um vetor é um conjunto de pontos, linhas e polígonos com coordenadas e atributos. Converter um no outro significa decidir onde fica um limite, e uma grade de pixels não tem limites próprios além das bordas de suas células.
Cada método abaixo difere apenas no que considera uma borda. O Polygonize usa qualquer lugar onde dois pixels vizinhos tenham valores diferentes, o contour usa uma elevação escolhida e um modelo de segmentação usa o ponto onde um objeto termina. Por isso, apenas o último funciona em uma fotografia.
Escolha seu método
| O que você tem | O método que funciona | O custo |
|---|---|---|
| Raster classificado ou temático (cobertura do solo, uma reclassificação de declividade, uma máscara) | Raster > Conversion > Polygonize (Raster to Vector) | Gratuito, no QGIS principal |
| Raster contínuo (NDVI, declividade, uma banda de reflectância) | Reclassify by table primeiro, depois polygonize | Gratuito, no QGIS principal |
| DEM ou qualquer superfície de elevação | Raster > Extraction > Contour, ou Contour Polygons | Gratuito, no QGIS principal |
| Mapa de papel digitalizado ou uma planta | GRASS r.thin mais r.to.vect, ou uma ferramenta de vetorização fora do QGIS. Nada no QGIS principal faz isso bem | Gratuito e lento. Existe vetorização por IA paga |
| Ortofoto, imagem de drone ou de satélite | Um modelo de segmentação. Polygonize não se aplica | Plugins gratuitos precisam de uma placa NVIDIA. Plugins na nuvem têm níveis gratuitos, depois uma assinatura |
A maioria dos leitores precisa da primeira linha e pode parar depois das duas próximas seções.
Polygonize, a resposta padrão
O algoritmo do QGIS é Polygonize (raster to vector), id gdal:polygonize, e ele envolve o utilitário GDAL gdal_polygonize. Ele cria um polígono para cada região conectada de pixels que compartilham um valor comum e grava esse valor em um atributo.

Open the tool
Raster > Conversion > Polygonize (Raster to Vector). Ele também está na Processing Toolbox, em GDAL, Raster conversion.
Pick the band
Banda 1, a menos que suas classes estejam em outro lugar. Apenas uma banda, então um raster RGB precisa ser reduzido a uma única banda de classes antes desta etapa.
Name the field
DN é o padrão. Renomeie para algo que você ainda entenderá daqui a seis meses, como landcover_code.
Decide on 8-connectedness
Desativado por padrão, então os pixels precisam compartilhar uma borda inteira para se unirem. Ative-o e pixels que se tocam diagonalmente também se unem. Em feições diagonais finas, deixá-lo desativado divide uma feição em uma cadeia de polígonos.
Save to a real file
O padrão é uma layer temporária. Em um raster grande, isso produz dezenas de milhares de feições, então grave diretamente em um GeoPackage.
![A janela Polygonize (Raster to Vector) do QGIS. A layer de entrada mostra Land cover 10 m [EPSG:32631], o número da banda é Band 1 (Palette), o campo a criar chama-se landcover_code, Use 8-connectedness está desmarcado e a saída é gravada em um GeoPackage.](/_next/image?url=%2Fblog%2Fraster-to-vector-qgis%2F02_polygonize_dialog.jpg&w=3840&q=75)
Duas coisas economizam seu tempo aqui.
Defina um valor NoData na classe que você não quer. O GDAL usa a máscara de validade da banda, então os pixels NoData são ignorados em vez de se tornarem um enorme polígono de fundo envolvendo todo o restante. Essa é a reclamação mais comum sobre a saída do polygonize, e é uma propriedade do raster, não uma configuração da ferramenta.

Verifique se a banda é do tipo inteiro. gdal:polygonize sempre grava um campo inteiro, então converte uma banda float na entrada. Isso falha de duas formas diferentes, dependendo de como seu raster armazena os valores, e nenhuma delas gera um aviso. Float32 passa primeiro por Reclassify by table, que é a próxima seção.
O problema das escadas e como corrigi-lo
O Polygonize traça limites de pixels. Só isso. Portanto, uma borda diagonal de campo volta como uma sequência de degraus em ângulo reto, um por pixel, e uma classificação Sentinel de 10 m produz degraus de 10 m.

Essa é uma saída correta. A ferramenta está desenhando exatamente o que o raster diz. Ela apenas não parece um mapa, e nenhuma configuração dentro do polygonize muda isso. A correção consiste em quatro algoritmos de geometria vetorial, executados depois, nesta ordem.
1. Dissolve (native:dissolve). Defina o campo de dissolve como o campo de classe que você acabou de criar. Polígonos vizinhos da mesma classe se unem em uma feição por classe. Execute primeiro, enquanto a geometria ainda está exata, porque unir bordas simplificadas deixa estreitas faixas ao longo de cada limite compartilhado. Se quiser manter cada área separada em vez de uma única feição multipartes por classe, marque Keep disjoint features separate nos parâmetros avançados.
2. Filter by area (native:extractbyexpression, em Vector selection). Expressão:
$area > 500
As unidades são as unidades do CRS da layer, então use um CRS projetado ou o número não significará nada. Defina o limite conforme o tamanho de uma área real nos seus dados. Em uma classificação de 10 m, 500 m2 são cinco pixels, aproximadamente o ponto em que o ruído termina e as feições começam. A figura abaixo usou 2.000 m2 no mesmo raster, porque, com 500, as estreitas faixas restantes se cruzavam depois da simplificação. Observe o histograma das suas próprias áreas em vez de copiar qualquer um dos dois números. Se o raster deixar pixels únicos de outra classe dentro de uma área, native:deleteholes depois desta etapa os remove.
3. Simplify (native:simplifygeometries). A tolerância padrão é 1.0 nas unidades da layer. Defina-a aproximadamente como o tamanho de um pixel e os degraus colapsarão em trechos retos, com o limite se movendo menos do que um leitor consegue perceber. O menu de método oferece Douglas-Peucker (baseado em distância), Visvalingam (baseado em área) e snap to grid. Visvalingam preserva melhor o formato de feições pequenas quando você aumenta a tolerância.
4. Smooth (native:smoothgeometry). Apenas em elementos realmente curvos: cursos d'água, linhas costeiras, áreas de vegetação. Offset tem padrão 0.25, e as iterações controlam o quanto fica arredondado. Defina Maximum node angle to smooth como 90 e qualquer canto mais agudo que isso permanecerá agudo, evitando que a ferramenta arredonde os cantos de edifícios e parcelas.
Se você também quiser áreas sólidas sem lacunas internas, native:deleteholes remove buracos abaixo de uma área mínima, e 0.0 remove todos eles.

Reclassifique primeiro quando o raster for contínuo
O Polygonize em um raster contínuo dá errado de uma de duas formas, e qual delas você obtém depende de como os valores estão armazenados.
Armazenado como números inteiros escalados, que é como os produtos de NDVI são realmente distribuídos, você obtém um polígono para quase todos os pixels, porque quase nenhum par de pixels compartilha um valor. Medimos 39.801 polígonos em 40.000 pixels em uma cena Sentinel-2.
Armazenado como floats brutos entre -1 e 1, a conversão para inteiro achata todos os valores para -1, 0 ou 1 antes de o traçado começar. A mesma cena voltou como 238 polígonos em duas classes. Isso parece um resultado limpo, mas não é: seus dados desapareceram.
O mesmo vale para declividade, elevação, temperatura ou uma banda de reflectância bruta. A ferramenta não falhou em nenhum dos dois casos. Ela traça limites entre valores inteiros, e um raster contínuo não tem valores inteiros úteis para traçar.

Transforme primeiro a superfície contínua em classes com Reclassify by table, id native:reclassifybytable. A tabela de reclassificação recebe três colunas, mínimo, máximo e o novo valor, e aceita -inf, inf e nan para NoData. Uma máscara de vegetação tem três linhas:
| Mínimo | Máximo | Valor |
|---|---|---|
| -inf | 0.2 | 1 |
| 0.2 | 0.5 | 2 |
| 0.5 | inf | 3 |

Dois padrões devem ser alterados nos parâmetros avançados. Output data type tem Float32 como padrão, então defina Byte ou Int16 e o polygonize funcionará. Range boundaries tem min < value <= max como padrão, o que decide de que lado de 0.2 um pixel exatamente em 0.2 ficará.
Depois faça o polygonize do raster reclassificado e execute a limpeza acima.
Contornos para um DEM
Para elevação, não use polygonize. Use Contour em Raster > Extraction > Contour, id gdal:contour. O intervalo padrão é 10.0 nas unidades do raster, e a elevação vai para um campo chamado ELEV por padrão.

Marque Produce 3D vector se quiser a altura em cada vértice. Deixe desmarcado para um mapa impresso, pois muitos softwares removem o Z silenciosamente.
Seu equivalente gdal:contour_polygon fornece faixas preenchidas entre duas elevações em vez de linhas, com ELEV_MIN e ELEV_MAX em cada polígono. É isso que você quer para um mapa hipsométrico ou uma extensão de inundação, e evita polygonizar manualmente um DEM reclassificado.

Contornos de um DEM lidar ficam ruidosos porque a superfície é ruidosa. Suavize o raster antes da etapa de contorno, não as linhas depois. Suavizar as linhas faz com que elas se cruzem.
Mapas de papel digitalizados: o QGIS não tem ArcScan
Se você veio do ArcGIS procurando o equivalente do QGIS para ArcScan, ele não existe. A vetorização interativa de raster, em que você clica em uma linha digitalizada e a ferramenta a acompanha, é uma lacuna real, e prefiro dizer isso a deixar você procurar o menu.
O que as pessoas realmente usam, em uma ordem aproximada de eficiência:
- GRASS, incluído na maioria dos instaladores do QGIS. Aplique um limite ao mapa digitalizado para criar um raster binário, afine-o com r.thin, depois execute r.to.vect com o tipo de feição
line. A documentação do GRASS avisa que isso cria nós excessivos em junções e ramificações pendentes, então reserve tempo para a limpeza. Gratuito e funciona em trabalhos lineares limpos. - Potrace ou AutoTrace, fora do QGIS. Bitmap para vetor, depois importe o resultado e georreferencie-o. Bom em digitalizações de alto contraste, mas não entende nada sobre geografia.
- Bunting Labs AI Vectorizer (listagem no repositório do QGIS). Um plugin do QGIS que completa automaticamente uma linha enquanto você digitaliza, voltado diretamente para mapas geológicos, as-builts e plantas. A limitação: ele envia trechos do raster para os servidores deles, não há nível gratuito além de um teste e os preços publicados começam em 29 dólares por mês, conforme verificado em 23 de agosto de 2026.
Para algumas feições em uma única folha, a vetorização manual com snapping ativado ainda vence. Eu não criaria um fluxo de vetorização para menos de aproximadamente cinquenta feições.
Quando polygonize é a ferramenta errada
Aponte o polygonize para uma ortofoto e você obterá ruído, porque não há nada para classificar por limite. Um telhado vermelho e um carro vermelho têm valores de pixel semelhantes. Um telhado cinza e uma estrada cinza têm valores de pixel semelhantes. As classes existem na sua cabeça, não no arquivo.
Extrair objetos de imagens fotográficas precisa de um modelo que tenha aprendido como os objetos se parecem. Essas ferramentas gravam vetores diretamente, então o polygonize nunca entra na operação. Veja o que instalar e o que cada ferramenta exige.
| Ferramenta | O que você instala | GPU | Conta | A imagem sai da sua máquina | O que é produzido | Custo |
|---|---|---|---|---|---|---|
| Deepness (código-fonte) | Plugin manager, depois os pacotes Python e um modelo ONNX | Opcional, CPU funciona | Não | Não | Layer de polígonos, caixas delimitadoras ou um raster | Gratuito |
| Geo-SAM | Plugin manager, depois as dependências e os pesos do modelo na própria janela de configurações | Opcional, os cliques rodam na CPU | Não | Não | Layer de polígonos, no nível dos pixels ou simplificada | Gratuito |
| samgeo | Um pacote Python no seu próprio ambiente, sem painel do QGIS | Recomendado | Não | Não | GeoJSON, Shapefile ou GeoPackage que você carrega por conta própria | Gratuito |
| Mapflow (site) | Plugin manager | Não | Sim | Sim, seu upload GeoTIFF ou o serviço de tiles que você indicar | Layer de polígonos | Créditos, pago |
| Bunting Labs AI Vectorizer | Plugin manager | Não | Sim | Sim, em trechos de raster | Vértices na layer que você está digitalizando | Teste, depois 29 dólares por mês |
| AI Segmentation, nosso | Plugin manager | Não | Sim | Sim nos dois modos na nuvem, não para o pequeno modelo local | Layer de polígonos no CRS do projeto, com label, class, score, area_m2 e perimeter_m | Franquia gratuita, depois 39 euros por mês sem IVA |
Uma limitação de cada ferramenta.
- Deepness executa o modelo que você fornecer, então você precisa encontrar ou treinar um primeiro.
- Geo-SAM recebe cliques e caixas, um objeto por vez.
- samgeo não tem interface do QGIS. Você escreve Python.
- Mapflow oferece um catálogo fixo de modelos, para edifícios, florestas, estradas e canteiros de obras, então não consegue encontrar um objeto para o qual ninguém o treinou.
- Bunting Labs AI Vectorizer acompanha linhas enquanto você digitaliza. Ele não encontra todos os objetos em uma zona.
- AI Segmentation, nosso, envia imagens para um servidor nos dois modos na nuvem. Apenas o pequeno modelo local permanece na sua máquina.
Custos e níveis gratuitos verificados em 23 de agosto de 2026.

A saída bruta de qualquer um deles precisa ser filtrada, assim como a saída do polygonize precisa ser limpa. Em uma execução sobre o centro de Paris, mantivemos 82 polígonos de 635, e esses 82 ainda continham 84% da área construída. O guia de áreas ocupadas por edifícios explica essa etapa de filtragem do início ao fim, e o post sobre SAM no QGIS mostra quais objetos esses modelos encontram bem.
Try it free in QGIS, no card needed
Leia a seguirAI Segmentation para QGIS: o guia completo
A versão de dois minutos
Abra as propriedades do seu raster e observe o tipo da banda e o intervalo de valores. Inteiro com menos de cem valores distintos significa ir diretamente para Raster > Conversion > Polygonize (Raster to Vector), depois Dissolve, filtro por área e Simplify. Float com milhares de valores distintos significa usar Reclassify by table primeiro. Uma fotografia significa que nada disso se aplica, e a comparação de plugins de IA para QGIS é a próxima página que você quer.
Se tudo o que você precisa são edifícios, nossa ferramenta gratuita de áreas ocupadas por edifícios os obtém a partir de dados abertos no navegador, sem nenhum plugin.


