Cortando polígonos no QGIS a uma distância específica de um recurso em outra camada


8

Gostaria de poder cortar polígonos como o abaixo, no QGIS, a uma distância definida de cada lado de um recurso especificado em outra camada, neste caso, uma linha de caminho do OS Mastermap.

Dessa forma, eu teria efetivamente um buffer ao longo das linhas que poderiam representar uma rede de passeio na floresta, por exemplo. Nesse caso, é um recurso linear muito simples, mas geralmente é muito mais complexo e pode ser muito demorado. Idealmente, preciso reter o polígono original, pois ele também será usado.

É possível cortar um polígono dessa maneira, ou eu teria que criar os novos polígonos como buffers ao longo da linha e depois cortá-los do polígono existente?

Screengrab do polígono a ser cortado

Respostas:


3

Neste fluxo de trabalho, você precisará do plug- in refFunctions para usar geomintersects().

  1. Abra a tabela de atributos da sua camada de polígono.
  2. Ative a calculadora de campo.
  3. Marque Update existing fielde selecione <geometry>no menu suspenso.
  4. Forneça esta expressão: difference($geometry, buffer(geom_from_wkt(geomintersects( 'Your_LineLayerName', '$geometry')), 20))

Modifique Your_LineLayerNamequal é a sua camada (caminho) e 20(tamanho do buffer) conforme necessário.

NB. Como a alteração é feita instantânea e irreversivelmente, tenha cuidado e mantenha uma cópia do seu arquivo Polygon original.


1
Obrigado Kazuhito, que funciona muito bem, mas parece cortar E remover a linha em buffer do polígono existente - é possível retê-la como um novo polígono?
JIMS-W

@ JimS-W Se você usar em intersection()vez de difference(), ele fornecerá a parte do buffer. Mas receio que não ajude você a obter as duas geometrias (diferença e interseção) em uma única ação.
Kazuhito 20/09

1
Tudo bem, eu deveria conseguir o que eu precisava combinando os 2 em uma camada de rascunho, eu acho. Mais uma vez obrigado
JIMS-W

4

Você precisará bufferda linha selecionada (caminho) à distância desejada e, em seguida, cortá-las do outro polígono usando difference.

Se fosse uma operação que você precisasse realizar com muita frequência, valeria a pena escrever um script python para realizar as duas operações juntas.


Obrigado, pensei que poderia ser o caso. Eu tenho que fazer isso regularmente, mas eu realmente não sei por onde começar escrevendo scripts, além de apenas consultas básicas. Seria bastante direto, você acha?
JIMS-W

Eu tenho tentado repetir esta operação usando a diferença de expressão ($ geometry, buffer (geom_from_wkt (geomintersects ('Your_LineLayerName', '$ geometry'))), 20)), no QGIS 3.2.1, mas parece não funcionar mais . Ele retorna o erro "Erro de avaliação: o objeto 'QgsGeometry' não tem atributo 'exportToWkt'" ou apenas indica que a camada com a qual estou tentando cortar não existe. Alguma sugestão @Kazuhito? Eu instalei o plugin refFunctions.
JIMS-W

Por favor, faça uma nova pergunta em vez de usar um comentário
Ian Turton

Vai fazer @Ian Turton. Descobri que a função Ativar rastreamento -> deslocamento abrange a maior parte do que preciso fazer agora, em qualquer caso.
JIMS-W

0

Nas versões mais recentes do QGIS (estou usando o 3.2.1), agora é possível fazer isso de maneira muito mais rápida e fácil usando a função 'Offset' na barra de ferramentas Snapping (no menu suspenso ao lado de 'Ativar rastreamento'):

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.