Como arrumar geometrias inválidas em polígonos no QGIS 3.X

Colegas pesquisadores e entusiastas de SIG de código-livre,

Bem-vindos ao meu blog!

Gostaria de começar com um aviso - posso ser uma pesquisadora desta área, mas isso não significa que tudo o que faço ou escrevo aqui funcionará para você, em suas próprias configurações de desktop e versões de packages. Não tenho nenhuma responsabilidade se você perder dados ou estragar sua instalação. Eu também não autorizo nenhuma cópia do meu conteúdo.

Hoje, vou falar sobre 1) um erro simples de ser evitado quando estamos desenhando polígonos e 2) como consertar geometrias inválidas de polígonos no QGIS.

Na maioria das vezes, é só usar a funcionalidade criada para consertar geometrias “quebradas”, chamada de “Fix geometries” (Consertar geometrias), mas se ela não funcionar, a boa notícia é que há uma solução alternativa!

Primeiro, vou criar, de propósito, uma geometria inválida para aplicar a correção. Em seguida, mostrarei duas maneiras de consertá-la. Em uma delas, simplesmente aplica-se a ferramenta nativa “Fix geometries” do QGIS. A outra é usando a ferramenta Buffer. Em um truque simples, vou mostrar como criar um buffer infinitesimal em torno da minha geometria inválida, o que acaba arrumando a mesma, mas tem suas desvantagens.

Meu amigo Iporã Possanti, que também escreve sobre SIG foi quem me ensinou esse truque no QGIS 2, nos velhos tempos pré-pandêmicos, me salvando de uma dor de cabeça por causa de um polígono teimoso!

Para os exemplos aqui mostrados, estarei usando o QGIS 3.16 Hannover, a versão estável atual.

Como desenhar um polígono com geometria inválida

Crie uma nova camada vetorial e ligue o modo de edição

QGIS create new vector

Com o modo de edição ligado, clique em “Add Polygon Feature”.

QGIS add polygon vector

Comece a desenhar o seu polígono.

QGIS add polygon vector

Ops! Você acidentalmente clicou duas vezes em um vértice. Sem problema, certo? CERTO?

QGIS add polygon vector

Digamos que você ignorou esse pequeno erro e continuou desenhando o polígono. Já passei por isso.

QGIS add polygon vector

Aqui está o seu polígono!

Agora, o próximo passo é gerar pontos aleatórios para uma análise no Oceano Atlântico. Usando a ferramenta “Random Points inside Polygons” (pontos aleatórios dentro de polígonos), tento criar 50 pontos distribuídos aleatoriamente dentro desta área.

QGIS add random points

QGIS add random points

Mas quando clico em Run, obtenho um erro:

Feature (-28) from “bad_polygon” has invalid geometry. Please fix the geometry or change the Processing setting to the “Ignore invalid input features” option.
Execution failed after 0.02 seconds

Minha reação automática seria ir lá e marcar “Ignore invalid input features” (ignorar atributos de entrada inválidos), mas se eu fizer isso, neste caso, o algoritmo irá ignorar o único polígono que eu tenho. Existem soluções melhores para este problema.

Ok, como eu evito este erro, então?

Ao gerar seu polígono, evite criar interseções entre as linhas. Isto é uma interseção:

QGIS polygon intersection

E isso é a principal causa de problemas em geometrias.

E como consertar uma geometria em que o erro acima já foi cometido?

Eu tenho duas opções para você. Provavelmente, você deve começar com o algoritmo clássico “Fix geometries” (Corrigir geometrias). Se isso não resolver o problema, ou se você quiser pular para a outra solução, uma alternativa é usar o “Buffer”. Ambos são descritos detalhadamente abaixo.

Usando a ferramenta QGIS “Fix geometries”

QGIS fix geometries

QGIS fix geometries

Sem delongas, “Fix geometries” corrigirá a maioria dos problemas de geometria que você possa encontrar. Quando aplicado ao meu polígono criado anteriormente, ele gera este resultado:

QGIS fix geometries result

E ainda é um polígono único, como pode ser visto na tabela de atributos:

QGIS fix geometries result

Porém, quando eu ligo o modo de edição e tento editar os vértices, vejo que um novo vértice foi criado na interseção entre as linhas. Este vértice não existia anteriormente.

QGIS fix geometries result

Depois de fazer este ajuste, o QGIS executou “Random Points inside polygons” sem problemas.

QGIS fix geometries result

Buffer com distância=0

Você também pode resolver esse problema usando a ferramenta nativa “Buffer”.

QGIS buffer tool

A única propriedade que alterei foi a distância do buffer, que preenchi com “0” graus.

QGIS buffer tool

Depois de clicar em “Run”, obtive o seguinte:

QGIS fixed geometry

A segunda parte do polígono, que ficava do lado direito da interseção, foi eliminada por este procedimento.

Com este polígono, eu também pude executar “Random Points inside polygons” sem problemas.

QGIS fixed geometry

O uso do algoritmo “Buffer” pode alterar fundamentalmente a geometria do polígono, mas é uma alternativa válida à ferramenta “Fix geometries”. Na minha experiência, usar um buffer com distância de 0m sempre funcionou para corrigir até as geometrias mais difíceis.

Luísa Vieira Lucchese
Luísa Vieira Lucchese
Pós-doutoranda

Pós-doutoranda na Universidade de Pittsburgh

Relacionados