Unir atributos da camada de ponto e linha por localização (distância mais próxima) no QGIS

13

Meu problema é o seguinte: Eu tenho uma linha shp (camada de destino) e um ponto shp (camada de junção). o segundo (camada de ponto) possui um atributo que eu quero associar a uma camada de linha com base na distância mais próxima da linha. Pontos e linhas não estão se cruzando

Eu posso fazer isso com ArcGIS e junção espacial (opção de correspondência: mais próxima), mas não sei como conseguir isso no QGIS.

Miha Požauko
fonte
3
Existe uma ferramenta para fazer a associação por local, mas ela não tem a opção "mais próxima". Não sei se existe alguma solução alternativa. Em geral, avalie para apoiar o desenvolvimento de suas opções / ferramentas favoritas ausentes, e também é dessa maneira que os usuários podem ajudar esse software a crescer.
Giovanni Manghi 16/10

Respostas:

8

Eu não acho que exista uma função QGIS 'essencial' para isso. No entanto, instale o plug-in MMQGIS e use a ferramenta 'distância do hub'. Escolha seus pontos como a camada "Pontos de origem" e suas linhas como "Camada de hubs de destino" e defina "Tipo de forma de saída" como "Linha para o hub". Isso fornecerá um arquivo de forma de linhas (com comprimento) que une os recursos mais próximos. Convenientemente, também adiciona o ID do recurso mais próximo à tabela de atributos.

Editar / Comentar: Essa abordagem funciona bem se houver menos pontos do que linhas ou uma situação de linha a ponto individual. Ter mais pontos do que linhas complica as coisas. A ferramenta 'Distância do hub' adiciona o ID do recurso de linha à tabela de atributos do ponto como 'HubName' junto com a distância entre o ponto e o centro da linha como 'HubDist'. Se houver mais pontos do que linhas, será necessário trabalho adicional para determinar dentro de cada subconjunto de pontos (os vários registros vinculados a cada hub de linha) qual deles é o mais próximo de cada linha e / ou qual é o conjunto de atributos para ingressar na linha.

Darren Cope
fonte
isso deve ser marcado como resposta, sujeito a pequenas edições de "linhas" v "pontos"
Willy
1
"Distância do cubo" não é a ferramenta certa se "a distância mais próxima da linha" for o critério. O código mmqgis revela que a distância do cubo usa uma aproximação da geometria do "cubo". Os cálculos de distância (mmqgis_distance) recebem dois pontos como parâmetros. Aqui está o código que faz a aproximação da geometria do hub em mmqgis_library.py: "feature.geometry (). BoundingBox (). Center ()". Isso significa que o centro da caixa delimitadora da geometria é usado em vez da geometria real. Portanto, se a "distância mais próxima da linha" for o critério, GRASS v.distance ou o plugin NNJoin são mais adequados.
Håvard Tveite
5

A função GRASS v.distance pode ser usada para isso. No QGIS, você pode acessar a função através do plug-in GRASS (a versão Processing atualmente não está funcionando). O plugin NNJoin QGIS pode ser uma alternativa mais simples.

Håvard Tveite
fonte
3

O plug-in NNJoin nunca me decepcionou e funciona bem com grandes conjuntos de dados .

Plugins> Instalar: NNJoin> NNJoin> escolha a camada de entrada e junte a camada> Em seguida, clique em ingressar.

Examine os resultados da nova camada de saída com a tabela de atributos. Aviso: verifique se as duas camadas estão usando a mesma projeção espacial, caso contrário seus resultados ficarão em branco.

Matthew Bayly
fonte
2

Em 2019, isso pode ser possível com a ferramenta QGIS 3 Zanzibar 'Associar atributos pelo mais próximo'. Essa ferramenta permite encontrar o recurso mais próximo e associar atributos selecionados. Também é possível fazer uma associação um para muitos, se você especificar a distância máxima e o número máximo de vizinhos mais próximos.

mauegraus
fonte