Mesclando linhas com pontos de extremidade ligeiramente diferentes no QGIS

22

No QGIS, eu tenho duas linhas. Os pontos de extremidade estão próximos um do outro, mas não totalmente alinhados. Gostaria de transformar as duas linhas em uma, com os dois pontos finais mesclados em pontos médios.

O mais próximo que pude chegar é com "Mesclar recursos selecionados". Isso me dá um recurso, mas é composto por duas linhas separadas - não há linha entre os pontos de extremidade.

Estou procurando algo que se comporte de maneira semelhante ao recurso Join Paths do Illustrator (Object> Paths> Join).

O QGIS faz isso?

Evan
fonte

Respostas:

12

Resposta rápida: não! Não existe uma ferramenta como essa para fazer essa operação diretamente na camada (o plug-in "Join Two Lines" requer interseção).

Você poderia fazer isso para uma camada muito simples, transformando as linhas em pontos (extrair nós) e depois juntar-se ao points2one (saída de linha), mas isso seria MUITO mais lento do que apenas editar manualmente:

  1. Verifique se o snap (Configurações | Opções de snap ...) está ativado na camada de linha (5 pixels funcionam bem para mim).
  2. Crie uma nova linha de um ponto final para o outro.
  3. Selecione todas as três linhas (as duas linhas originais + a nova) e mescle-as (Editar | Mesclar recursos selecionados ou botão da barra de ferramentas).
Simbamangu
fonte
1
Obrigado. Eu só tinha algumas linhas para mesclar, então isso foi rápido e fácil. (A resposta de @ Michael Markieta parecia mais adequado para situações complexas.)
Evan
14

Você pode fazer isso com uma combinação de QGIS e GRASS.

  1. Importe sua camada vetorial para um conjunto de mapas GRASS (Grass | File> Import Vector Data)
  2. Abra seu conjunto de mapas no QGIS (QGIS | Plugins> GRASS> Abrir conjunto de mapas)
  3. Adicione uma camada vetorial do seu conjunto de mapas GRASS ao seu projeto QGIS (QGIS | Plugins> GRASS> Adicionar camada vetorial GRASS)
  4. Use v.clean.snap (QGIS | Plugins> GRASS> Ferramentas Open GRASS> Lista de módulos> v.clean.snap)

Ajuste o 'limiar' do v.clean.snap para obter o encaixe correto do vértice em toda a área de estudo.

Michael Markieta
fonte
10

Suponho que você deseja unir dois segmentos de linha em uma linha. insira a descrição da imagem aqui

Foi assim que eu fiz ...

  • Ative a edição.
  • Ativar o encaixe (Configurações -> Opções de encaixe ...) insira a descrição da imagem aqui
  • Selecione a ferramenta do nó do nó.insira a descrição da imagem aqui
  • Clique duas vezes perto do final de uma das linhas para adicionar um nó. insira a descrição da imagem aqui
  • Arraste o nó no final para encaixar no final da outra linha insira a descrição da imagem aqui
  • Selecione as duas linhas
  • Mesclar seus atributos (você não pode criar uma linha térmica se eles tiverem atributos diferentes)insira a descrição da imagem aqui
  • Mesclar os dois recursosinsira a descrição da imagem aqui

Isso deve resultar em uma linha. insira a descrição da imagem aqui

DickShinnery
fonte
Tudo bem. Mas que tal um conjunto de dados de 22.000 linhas? Eu não posso ir sobre como fazer isso manualmente ...
FaCoffee
3

Se você quer dizer que seu recurso único consiste em uma MULTILINESTRING em vez de uma única LINESTRING, você pode facilmente corrigir isso se estiver usando um banco de dados Postgis:

update your_table set your_geo_column = ST_LineMerge(your_geo_column);

Se você deseja que apenas a 1 linha faça isso, adicione WHERE id = your_row_id, é claro.

mrg
fonte
2

Também alguém poderia tentar:

  1. salve .shp como .dxf
  2. abra o .dxf com o DraftSight
  3. juntar peças de polilinha
  4. reabra .dxf com qgis e salve como .shp
  5. no menu Vetor -> Ferramentas de geometria -> Linhas para polígonos
chamin
fonte
2

Acabei de fazer isso com o QGIS 3.4.0, usando o plug-in Join Multiple Lines mencionado por tnagel acima (instala no menu Vetor> Join Multiple Lines). Funcionou bem para unir cerca de 60 fragmentos de linha de trilha em cerca de 20 linhas de trilha. Quanto mais fragmentos você possui e quanto maior a área que eles cobrem, menos prático é, pois você deve observar os resultados dos problemas (o tnagel pode ter tido um dos problemas que descrevi).

Você seleciona as linhas que deseja unir, clica no item de menu e ele as une (você pode selecionar quantas linhas quiser, mas ...), mesmo que as extremidades estejam a uma milha de distância, você obtém uma linha reta do fim de um para o outro, conectando-os; portanto, verifique se os fins estão próximos o suficiente para que você fique feliz com os resultados (usei a dica em outro post para marcar os fins das minhas linhas com marcadores, para que fossem fáceis para ver (Propriedades> Simbologia> adicionar uma linha de marcador e tornar o símbolo grande o suficiente para ser visto com facilidade>> selecione o botão de opção "somente no último vértice" (e, se desejar, adicione outra linha de marcador com um símbolo diferente e selecione "primeiro apenas vértice ")).

Além disso, as linhas podem aparentemente ser direcionais. Portanto, você deve observar (por exemplo) que o extremo sul da linha A não se uniu ao extremo sul da linha B abaixo dele (outra linha reta longa onde você não o deseja).

Descobri que, quando isso aconteceu, eu poderia "desfazer" e usar "Linha reversa" na barra de ferramentas de processamento avançado para inverter a direção de uma linha de uma extremidade à outra (não muda onde a linha está, apenas vira o início da linha no final da linha) e junte as linhas novamente.

Uma coisa boa disso é que suas alterações / edições são salvas na camada existente, portanto, não é necessário salvar os resultados como um novo shapefile (faça um backup primeiro).

Fico constantemente impressionado com o trabalho realizado pelos desenvolvedores principais e de plugins do QGIS. Mostra o que humanos construtivos inteligentes podem fazer quando decidem trabalhar juntos. Obrigado!

JJD
fonte
0

Usando o OpenJUMP (edição Plus):

  1. Arquivo> Abrir arquivo
  2. Plugins> Topologia> Limpeza de topologia de rede ...
  3. Clique com o botão direito do mouse na nova camada (fixa): Salvar conjunto de dados como ....

Este é o resultado: insira a descrição da imagem aqui

Fabiog
fonte
0

No meu caso, as linhas estavam em camadas diferentes e com atributos diferentes. Mesclei as camadas com mmqgis e depois as linhas no próximo passo com a técnica de encaixar e mesclar linhas.

Herr Eichert
fonte