Eu tenho um shapefile de linhas e outro de polígonos. Quando duas ou mais linhas cruzam um polígono, elas devem ser conectadas (encaixadas), mas às vezes durante a digitalização manual isso não ocorre. Preciso encontrar e corrigir todos esses erros. Eu usei o v.clean
GRASS GIS e ele automaticamente quebrou muitos vértices, o que foi bom, mas algumas dessas linhas desconectadas estão mais longe da tolerância que eu forneci e, se eu aumentar muito a tolerância, começa a gerar outros tipos de erros.
Alguma ideia?
Respostas:
Meu entendimento do problema é o seguinte:
Se um ponto final da polilinha cruzar um polígono, será necessário conectar a polilinha (adicionando ou ajustando vértices) a todos os pontos adicionais da polilinha que cruzam o mesmo polígono.
Alguns pontos de extremidade da polilinha não cruzam um polígono, sendo abaixo dos limites, mas devem estar conectados como acima.
Esta resposta se baseia em algumas já fornecidas, mas não está completa, pois não conheço todos os comandos do QGIS - talvez alguém possa adicionar isso?
Para cada polilinha, extraia as coordenadas do nó de extremidade ( Vetor> Ferramentas de geometria> Extrair nós e depois arrume) e calcule se elas estão ou não dentro de um polígono ( Vetor> Ferramentas de pesquisa> Selecionar por local ).
Para pontos de extremidade da polilinha que estão dentro de um polígono, estenda essa extremidade da polilinha para o centro do polígono (Extraia o centro do polígono usando Vetor> Ferramentas de geometria> Centróide de polígono , não tenha certeza sobre a modificação da linha, embora você possa trabalhar com os vértices da polilinha como pontos e adicione outros com numeração apropriada antes de reconstruir a polilinha modificada usando o plug-in Points to Paths)
Você menciona que pode haver situações em que algumas ou todas as linhas foram conectadas corretamente; nessas situações (identificáveis por pontos finais polilíneos coincidentes), você pode optar por usar o local final coincidente em vez do centróide poligonal como o ponto a ser estendido quaisquer polilinhas não conectadas adicionais para esse polígono.
Para pontos finais de polilinha que estão fora de um polígono, estenda essa extremidade da polilinha até o centro do polígono mais próximo. Novamente, não tenho certeza sobre o cálculo do polígono mais próximo, embora o módulo GRASS v.distance pareça fazer o truque.
fonte
Eu acho que eu poderia fazê-lo com algum algoritmo personalizado ... Observe como você gostaria de implementá-lo, mas acho que funcionaria.
Para cada linha, para cada ponto final, faça um ponto no polígono para o vértice no ponto final e vincule-o ao polígono.
Então, para cada polígono, se houver mais de um ponto final de uma linha vinculada, eu os mesclaria (moveria) todos para a coordenada média, ou talvez para o centróide do polígono.
Isso é bem simples. Mas não está disponível em operadores padrão. Eu acho que isso poderia ser feito no ArcGIS com um tempo de codificação de dias.
Outra observação, na imagem que você postou, uma das linhas está fora do polígono ... Você pode lidar com isso de uma maneira mais simples, simplesmente encontrando o vértice mais próximo de cada vértice final, garantindo que a proximidade seja mútua (acho que é necessário, para que você tenha os vértices encaixados apenas de uma maneira), você pode movê-los para a posição média dos vértices.
fonte
Problema interessante! Não consigo pensar em uma maneira de executar o snap automaticamente, mas aqui está uma etapa na identificação de áreas para pelo menos procurar a correção manual:
Dependendo da situação (número de recursos, número que está nessa situação versus aqueles que não estão, etc.), isso pode economizar algum tempo.
EDIT: você também pode usar os polígonos com uma soma de 2 para criar um subconjunto de suas camadas de linha e, em seguida, execute a limpeza naquelas com uma tolerância maior para não alterar os outros recursos.
fonte
uma vez que você tenha os pontos finais, eu faria um diagrama de aranha tomando os centróides de polígonos como instalações e os pontos finais das linhas próximas como alvos. Você executa a análise do diagrama de aranha e, como resultado, teria um segmento para cada polilinha.
Isso funcionaria mesmo para aqueles que terminam fora dos polígonos. Como fazer isso no QGIS Não sei, desculpe, mas faria isso nos produtos da ESRI que conheço bem. Foi o que entendi quando whuber, na primeira resposta, sugeriu construir uma "estrela".
Tenho certeza de que há pessoas aqui que sabem como realizar essa análise no QGIS
fonte