Como preencher buracos nos polígonos automaticamente?

12

Existe uma opção no QGIS para preencher automaticamente os orifícios nos polígonos, definindo parâmetros, por exemplo, área máxima, distância entre linhas de contorno? Quero excluir / preencher buracos que sejam muito "finos" / pequenos.

J-Man
fonte
1
Você está interessado em orifícios (anéis dentro de polígonos) ou na redução de espaços entre polígonos separados?
Simbamangu 26/09/15
Isso precisa ser uma solução baseada em QGIS? Eu escrevi anteriormente sobre como fazer isso usando SQL espacial no PostGIS ( geospatial.commons.gc.cuny.edu/2013/11/04/… ). Se você não está executando o PostGIS, provavelmente poderia adaptá-lo ao SpatiaLite, que, suponha, se você estiver usando o QGIS, talvez já tenha o SpatiaLite em sua cadeia de ferramentas.
Lee Hachadoorian

Respostas:

11

Usando o QGIS 2.10.1-Pisa com Processing versão 2.10.2, existem algumas ferramentas disponíveis na Processing Toolbox :

  • Ferramenta de preenchimento de furos , que você pode especificar a área máxima .
  • Excluir ferramenta de furos que seria aplicada a toda a camada de entrada.

Espero que isto ajude!

Joseph
fonte
1
Apenas para verificar, o parâmetro max area, que é o tamanho máximo de um furo a ser preenchido? Assim, em um projeto UTM de metro, se o máximo fosse 10.000, isso significaria que o maior buraco a ser preenchido seria um hectare e qualquer tamanho maior que isso permaneceria?
BillW
1
@BillW - Sim, acredito que é exatamente o que faz :)
Joseph
10

Eu enfrentei o mesmo problema que o seu com este shapefile, tendo muitas lacunas entre polígonos.

Arquivo original com lacunas

Para resolver o problema, você pode usar uma ligeira modificação no método de tshiffle:

  1. Primeiro, faça a diferença entre seu arquivo e um polígono, cobrindo toda a extensão.

Extent_polygon

Difference_tool

Essa ação criará um novo shapefile que consiste em apenas um polígono, portanto você deve explodi-lo em partes únicas. Para isso, você pode usar Vector / Geometry Tools / Multipart to singleparts tool.

Resultado da diferença

Multi_to_single

Depois disso, exclua a entidade externa. Agora você tem, em um novo arquivo de forma, vários polígonos que cobrem as lacunas da sua cobertura original.

gaps_covered

  1. Faça uma união entre os dados iniciais e as partes únicas. Use a ferramenta SAGA, porque a opção QGIS padrão cria duplicatas no banco de dados.

União

  1. Todas as lacunas agora aparecerão como registros vazios no banco de dados (por exemplo, 72 linhas). Classifique sua tabela usando um campo de área e use o valor do menor polígono no arquivo original. Para este caso, 0,13645 hectares.

base de dados

  1. Por fim, use a ferramenta "Eliminar polígonos da tira", com as configurações mostradas na imagem.

insira a descrição da imagem aqui

  1. O resultado final não possui lacunas.

insira a descrição da imagem aqui

gtapko
fonte
Você poderia adicionar mais informações sobre a escolha dos parâmetros? Qual é o "valor"? A página de documentação do QGIS é muito curta em detalhes. Resposta muito elegante, pena que o usuário inicial não tenha aceitado nenhuma das respostas!
precisa saber é o seguinte
1
'Valor' é a magnitude que você usa para a comparação. No exemplo, o campo usado 'área' foi definido em hectares, então 0,1 significa: eliminar polígonos menores ou iguais a 0,1 hectares.
Gtapko
gtapko, você pode fornecer mais detalhes sobre a fase 3? Eu não consigo entender isso, obrigado
newGIS
4

Pode haver soluções mais elegantes por aí, mas isso sempre funcionou para mim.

1) Crie polígonos de "preenchimento de furos". Para fazer isso, desenhe um polígono gigante maior que o original e use a ferramenta "diferença". Se você desenhou um polígono muito maior, terá todos os polígonos de "preenchimento de furos", além de um único polígono maior que contorna a forma original. Exclua esse polígono grande, mantendo os polígonos de "preenchimento de furos".

2) Mesclar os polígonos de "preenchimento de furos" com o arquivo de forma original. Se você deseja preencher apenas os furos que atendem a um determinado critério (ou seja, abaixo do número X de quilômetros quadrados), é possível filtrar isso aqui.

3) Dissolva o polígono recém-mesclado em um campo comum.

tshiffle
fonte
Não está claro sobre o passo 3, como alguém encontrará o campo comum?
IRfAn 28/09
Nesta etapa, o campo comum pode ser qualquer coisa, o objetivo é simplesmente dissolver os limites entre os polígonos. Você pode usar um campo existente ou apenas adicionar um.
tshiffle
4

Em python / shapely, isso pode preencher seu polígono:

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)
mszel
fonte
2

Vi algumas explicações seguindo o mesmo caminho que as de gtapko e tshiffle, mas nenhuma funcionou para mim porque as geometrias inválidas tornaram a ferramenta de diferença disfuncional. Então, eu vim com uma solução própria que não é 100% automatizada, mas é gerenciável. Provavelmente alguém já descobriu isso, mas vou me arriscar:

1) Crie um ID na camada danificada original

Criar um atributo de ID é simples, mas a minha solução também é, então eu vou falar sobre isso.

Primeiro, você precisa abrir sua tabela de atributos e depois acessar a Calculadora de Campo , que é um botão praticamente como um ábaco. Lá, você terá a opção de criar um novo campo ou atualizar um campo existente. Na foto acima, estou criando um novo chamado "ID". A fórmula está no final da imagem. (Desculpe por ter meu QGIS configurado em um idioma diferente. Como o design e as fórmulas são exatamente as mesmas nas versões de idiomas, acho que não vai atrapalhar aqui.)

2) Converta os polígonos em linhas

Esta etapa está localizada na seção Vetor> Geometria no menu. Sua forma convertida deve ficar assim:

Logo após converter os polígonos em linha, você terá que fazer exatamente o oposto, que é ...

3) Converter linhas em polígonos

As opções estão próximas uma da outra. Novamente, não vamos nos importar com a barreira do idioma aqui.

4) Alegra-se O motivo pelo qual você executou as etapas 2 e 3 é porque agora você tem certeza de que essas linhas serão consideradas polígonos, o que significa que agora elas têm sua própria linha na Tabela de Atributos. Se você der uma olhada, ficará assim:

O primeiro é SEMPRE o polígono inteiro (acredite, eu apaguei algumas centenas de linhas hoje ...) e o resto são as linhas soltas no meio. Você pode ativar a edição e se preparar para a ação. Se você decidir tentar isso, duas coisas que você deve ter em mente são: organize sua tabela em termos de ID , dessa maneira você tem certeza de que não está perdendo nada e use shift para selecionar agrupamentos de dados, como qualquer outro programa .

Estou ciente de que este não é o crème de la crème da solução de problemas do QGIS, mas se você estiver enfrentando uma situação em que as ferramentas não estão funcionando por causa da geometria inválida que essas linhas criam (tentei dissolver pelo ID, mas não funcionou), então isso pode ser uma saída.

Eric Lino
fonte
Você pode atualizar suas imagens? Os links estão quebrados!
Simbamangu
Ei. Sinto muito, mas aparentemente o Photobucket sequestrou minhas imagens, perdi o acesso a elas. Eu já abri um ticket e estou tentando recuperar o acesso. Eu voltarei para você sempre que possível.
Eric Lino