Generalizando arquivo de polígono, mantendo a topologia no QGIS?

35

Eu tenho um polígono Shapefile, que eu preciso generalizar. Como posso generalizar os polígonos e garantir que não haja erros topológicos como "lascas".

Eu já tentei:

  1. Vector -> Ferramentas de geometria -> polígonos para linhas
  2. Vector -> Geometry Tools -> geometrias simplfy ... aqui já posso ver na tela que estou produzindo sobreposições e lacunas, no entanto, agora eu tento
  3. Vector -> Ferramentas de geometria -> linhas para polgones

e aqui o programa mostra um erro e trava

insira a descrição da imagem aqui

Kurt
fonte
Há notícias sobre esse assunto?
Oystein
infelizmente: não
Kurt

Respostas:

16

O GRASS reconhece a topologia. Você pode usar v.generalize na caixa de ferramentas Processing para simplificar polígonos e, se os dados de entrada estiverem topologicamente corretos, a saída também será.

insira a descrição da imagem aqui

underdark
fonte
usando o instalador do windows, estou recebendo um erro (falta de dependência), quando tento executar o v.generalize. Precisa de uma configuração especial?
Kurt
@Kurt: O instalador autônomo? Não tenho certeza de qual versão do GRASS ela inclui. Nas configurações de processamento, você pode especificar se o GRASS 6.x ou 7.xe onde está instalado. Tente ajustar essas configurações para a sua instalação.
underdark
sim, eu uso o instalador stanalone. Seguindo seu conselho, desativei a grama 7 por meio das opções de processamento e configurei o caminho para o qrass 6 corretamente. esse caminho não estava correto, sobra de um qgis mais antigo. Agora eu posso executar o v.generalize, mas no final recebo um novo erro: A camada de saída não pôde ser aberta e, finalmente, a mensagem diz que a grama parece estar corretamente instalada e configurada. você poderia me dar alguma sugestão ou sugestão?
Kurt #
Normalmente, esse erro significa que o geoprocessamento falhou em algum estágio. Você deve examinar o log gerado enquanto as ferramentas são executadas para ver onde o erro ocorre.
underdark
7

Isso pode ser visto como uma preliminar à resposta do @ Underdark, na qual você pode limpar a topologia da camada vetorial antes de generalizar. O GRASS possui uma função v.clean que contém várias ferramentas para reparar a camada, como:

  • snap que 'encaixa' as linhas no vértice mais próximo
  • rmdangle que remove quaisquer oscilações irritantes
  • rmdupl que remove os recursos duplicados da geometria

e vários outros mostrados na imagem abaixo:

v.clean

Você também pode definir o limite, dependendo da sensibilidade que deseja que as ferramentas executem. Pessoalmente, costumo usar o recurso Verificar geometria da validade no QGIS ( Vetor > Ferramentas de geometria > Verificar validade da geometria ) para verificar se há erros e, se houver algum, use a ferramenta apropriada no v.clean . Depois que os erros forem removidos, você deverá estar em uma posição melhor para generalizar.

Espero que isto ajude!

Joseph
fonte
3
E se uma simples redução de vértice for suficiente, v.generalize não será necessário, pois a ferramenta de remoção pode fazer isso.
Gabor Farkas
obrigado pela sua resposta preliminar à resposta do @ Underdark, que contém informações valiosas. embora eu não tenha dito explicitamente, é claro que o arquivo poligonal, que eu queria generalizar, é topologicamente limpo [porque; lixo - lixo fora :-)]
Kurt
@Kurt, isso faz sentido :)
Joseph
2

Você já tentou usar o MapShaper ? Eu descobri que essa é uma boa maneira de generalizar polígonos; também há uma versão offline, se você deseja fazer o download do código.

Uma alternativa pode ser convertida para GeoJson e, em seguida, para o TopoJson, que suporta "simplificação de forma que preserva a topologia" https://github.com/mbostock/topojson

djq
fonte
Já experimentou Mapshaper, é realmente uma grande ferramenta
Kurt
11
mais um comentário: Como o título diz: Estou procurando uma solução com qgis. O Mapshaper imho não preserva a topologia (faça uma prova geral, fazendo uma generalização muito forte!). Topojson: este é um monte de javascript-sourcecode, que é imho só é útil para programadores
Kurt
Opa, perdeu o único aspecto do QGIS. O QGIS lida com o geojson; Pergunto-me se não faria sentido para o trabalho na funcionalidade topojson simplificação em um plugin QGIS para torná-lo acessível a não-programadores
DJQ
Eu continuo a linha fora do tópico: O OpenJUMP possui uma ferramenta "Simplificar a cobertura de polígonos" para essa finalidade.
user30184
0

Acabei de fazer um teste rápido e a ferramenta "Simplificar geometrias" no menu Vetor parece respeitar a topologia. Tentei com e sem a opção "Ativar edição topológica" marcada em Opções de encaixe. Você já tentou isso?

EDIT: Isso foi feito diretamente no arquivo de polígono - por que você converteria primeiro em linhas?

Darren Cope
fonte
Oi Darren, obrigado pela dica eu vou experimentá-lo com enablr topológica edição
Kurt
11
Oi Darren, imho não respeita a topologia. não há diferença com "ativar edição topológica". Suponho que isso ocorre porque a generalização gera uma nova camada, enquanto "ativar a edição topológica" parece funcionar apenas com as camadas existentes selecionadas. Você poderia fazer uma generalização muito forte e verificar novamente, se você tem uma topologia correta agora? graças
Kurt
11
Kurt; Interessante. Parece que você está certo quando faz uma generalização forte! Desculpe!
Darren Cope
11
Esta caixa de seleção desapareceu no QGIS 2.2 (talvez mais cedo), caso alguém faça uma pesquisa.
lynxlynxlynx
0

Há a mesma discussão aqui , minha resposta final é que a SAGA faz o trabalho para você.

Niculita Mihai
fonte
Após sua resposta nessa discussão, parece que o SAGA não preserva a topologia. Pelo menos não mais.
Oystein