Pular para o conteúdo
Voltar ao blog
QGIS
Tutorial
GeoAI

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

Três painéis: um raster de cobertura do solo desenhado como uma grade de pixels coloridos, o mesmo limite traçado pelo polygonize como uma escada e o mesmo limite novamente como uma linha verde suave após dissolve, um filtro de área, simplificação e suavização.
Três painéis: um raster de cobertura do solo desenhado como uma grade de pixels coloridos, o mesmo limite traçado pelo polygonize como uma escada e o mesmo limite novamente como uma linha verde suave após dissolve, um filtro de área, simplificação e suavização.

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ê temO método que funcionaO 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 polygonizeGratuito, no QGIS principal
DEM ou qualquer superfície de elevaçãoRaster > Extraction > Contour, ou Contour PolygonsGratuito, no QGIS principal
Mapa de papel digitalizado ou uma plantaGRASS r.thin mais r.to.vect, ou uma ferramenta de vetorização fora do QGIS. Nada no QGIS principal faz isso bemGratuito e lento. Existe vetorização por IA paga
Ortofoto, imagem de drone ou de satéliteUm modelo de segmentação. Polygonize não se aplicaPlugins 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.

A página da documentação do QGIS 3.44 para conversão de raster do GDAL, mostrando a entrada Polygonize (raster to vector), seu menu padrão e a tabela de parâmetros com INPUT, BAND, FIELD e EIGHT_CONNECTEDNESS
A referência para todos os padrões citados abaixo: a documentação do QGIS 3.44 para gdal:polygonize, capturada em 23 de agosto de 2026. Menu padrão, Raster e depois Conversion.

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.
Os quatro parâmetros importantes em um recorte de 10 m do ESA WorldCover no vale do Drome. O campo foi renomeado de DN para landcover_code e a saída vai diretamente para um GeoPackage, em vez de uma layer temporária.

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.

A página de referência do gdal_polygonize em gdal.org, mostrando a sinopse e as opções -8, -nomask e -mask
O utilitário GDAL por baixo do algoritmo do QGIS, capturado em 23 de agosto de 2026. A flag -nomask é de onde vem o comportamento da máscara de validade.

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.

Saída do Polygonize sobre um raster de cobertura do solo de 10 m, aproximadamente em 1:1.500. Uma área de cultivo em rosa fica entre cobertura arbórea em verde e pastagem em amarelo, e todo limite diagonal é uma sequência de degraus quadrados com a largura de um pixel.
Saída bruta do gdal:polygonize, com 3.551 polígonos, sobre o raster ESA WorldCover de origem. Conte os degraus ao longo de qualquer diagonal: cada um é um pixel 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.

A mesma extensão de cobertura do solo após a limpeza. Os contornos dos polígonos agora percorrem a grade de pixels como curvas suaves, que ainda permanece visível por baixo, e os pequenos polígonos de ruído desapareceram.
Mesma extensão, mesma simbologia, após Dissolve, um filtro de área em 2.000 m2, deleteholes, Simplify em 10 m e Smooth com ângulo máximo de nó 90. A quantidade cai de 3.551 para 724 e os degraus passam a ser lidos como curvas.

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.

Uma vista aproximada de um raster NDVI em torno de 1:1.000 sobre áreas agrícolas, com uma área arborizada verde-escura contra campos claros. Cada pixel de 10 m tem seu próprio contorno de polígono, então o quadro parece uma grade. A entrada do painel de layers mostra ndvi_polygonized com 39801 feições.
NDVI de uma cena Sentinel-2 de 11 de agosto de 2025, armazenado como números inteiros escalados da forma como os produtos de NDVI são distribuídos, depois polygonized diretamente. 39.801 polígonos em 40.000 pixels, porque quase nenhum par de pixels contém o mesmo valor.

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ínimoMáximoValor
-inf0.21
0.20.52
0.5inf3
A janela Reclassify by Table do QGIS com o raster NDVI Float32 como entrada e Advanced Parameters aberto, mostrando Range boundaries definidos como min less than value less than or equal to max e Output data type definido como Byte. O editor de tabela fixa aparece sobre a janela com três linhas: menos infinito a 0.2 resulta em 1, 0.2 a 0.5 resulta em 2, 0.5 a infinito resulta em 3.
A máscara de vegetação de três linhas, digitada na tabela fixa. Os dois padrões que vale a pena alterar ficam na seção avançada por trás dela: Output data type, definido aqui como Byte, e Range boundaries.

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.

A janela Contour do QGIS com Copernicus DEM 30 m como layer de entrada, intervalo entre linhas de contorno definido como 10, nome do atributo ELEV e Advanced Parameters aberto mostrando Produce 3D vector desmarcado.
gdal:contour em um tile Copernicus DEM 30 m sobre o Drome. Intervalo 10 nas unidades do raster, elevação gravada em ELEV e Produce 3D vector desativado.

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.

Dois painéis da mesma extensão montanhosa. À esquerda, linhas de contorno marrons a cada 10 m sobre um hillshade cinza, com as linhas de 50 m mais espessas e rotuladas 400, 450, 500, 550, 600 e 650. À direita, o mesmo terreno como faixas preenchidas que vão do verde nos vales ao marrom nos topos.
Mesmo DEM, mesmo intervalo de 10 m, dois algoritmos. gdal:contour fornece linhas que você rotula a partir de ELEV. gdal:contour_polygon fornece faixas preenchidas com ELEV_MIN e ELEV_MAX, que é o que um mapa hipsométrico precisa.

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.

FerramentaO que você instalaGPUContaA imagem sai da sua máquinaO que é produzidoCusto
Deepness (código-fonte)Plugin manager, depois os pacotes Python e um modelo ONNXOpcional, CPU funcionaNãoNãoLayer de polígonos, caixas delimitadoras ou um rasterGratuito
Geo-SAMPlugin manager, depois as dependências e os pesos do modelo na própria janela de configuraçõesOpcional, os cliques rodam na CPUNãoNãoLayer de polígonos, no nível dos pixels ou simplificadaGratuito
samgeoUm pacote Python no seu próprio ambiente, sem painel do QGISRecomendadoNãoNãoGeoJSON, Shapefile ou GeoPackage que você carrega por conta própriaGratuito
Mapflow (site)Plugin managerNãoSimSim, seu upload GeoTIFF ou o serviço de tiles que você indicarLayer de polígonosCréditos, pago
Bunting Labs AI VectorizerPlugin managerNãoSimSim, em trechos de rasterVértices na layer que você está digitalizandoTeste, depois 29 dólares por mês
AI Segmentation, nossoPlugin managerNãoSimSim nos dois modos na nuvem, não para o pequeno modelo localLayer de polígonos no CRS do projeto, com label, class, score, area_m2 e perimeter_mFranquia 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.

Uma rua suburbana em uma imagem do Google Satellite no QGIS. Seis telhados de casas à direita da estrada estão contornados e preenchidos em vermelho, e polígonos adicionais em cores variadas cobrem as casas à esquerda.
Extração baseada em modelo no QGIS sobre uma imagem do Google Satellite, capturada em 23 de agosto de 2026. Cada telhado é seu próprio polígono, editável como qualquer outra feição vetorial. O Polygonize não consegue produzir isso, porque nada nos valores dos pixels separa um telhado de uma entrada de garagem.

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

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.