Identifique pontos em um shapefile que não tem outro ponto dentro de x km com o QGIS

11

Esta é provavelmente uma pergunta ingênua, mas estou lutando como um novo usuário do QGIS.

Eu tenho um arquivo shapefile muito grande (275.000 pontos, mas posso dividi-lo em cerca de 10 sub-regiões, se necessário, para um processamento mais rápido).

Quero identificar todos os pontos que não têm outro ponto a menos de 200 metros e, em seguida, codificar cada um deles com o valor "exclusivo" em um campo do arquivo.

Para todos os outros pontos que fazem parte de clusters locais, desejo codificá-los como "agrupados".

Tendo conseguido isso, desejo selecionar apenas um para cada cluster aleatoriamente para reter no conjunto de dados, descartando os outros.

Atualmente, não estou conseguindo realizar a etapa 1, portanto qualquer assistência seria bem-vinda.

Leigh Bettenay
fonte

Respostas:

0

Você também pode tentar se auto-associar usando o plug- in NNJoin no QGIS.

Para cada recurso da camada de entrada, ele encontrará o recurso mais próximo (excluindo-se no caso de uma junção automática) e inclui a distância e todos os atributos do recurso mais próximo no conjunto de dados gerado. Levaria algum tempo para o seu conjunto de dados (tentei com um ponto com cerca de 175000 recursos, e isso leva alguns minutos ...).

Håvard Tveite
fonte
9

Você pode usar Vector> Ferramentas de análise> Matriz de distância e uma junção para conseguir o que pede.

Vou usar qgis dados de amostra camada do aeroporto para exemplificar. Este é um pequeno conjunto de dados, então não tenho certeza de como será o shapefile de 275000 pontos.

1. Crie uma matriz de distância usando sua camada como destino e destino.

Não se esqueça de marcar "Use apenas os pontos-alvo mais próximos (k)" e defina-o como 1.

insira a descrição da imagem aqui

2. Abra o CSV com adicionar camada de texto delimitada

Escolha "Vírgula" como delimitador e defina a definição de geometria como nenhuma geometria.

insira a descrição da imagem aqui

3. Crie uma junção na camada original com a tabela recém-criada

insira a descrição da imagem aqui

4. Use a Calculadora de campos para preencher um campo com os valores desejados

Devido à junção, agora temos acesso aos valores da tabela de distância de dentro da tabela de atributos de aeroportos, portanto, é bastante fácil criar um novo campo e preenchê-lo com valores "em cluster" e "exclusivo", dependendo dos valores da matriz de distância . por causa dos meus dados de exemplo, usei o valor 1200000 (1200 km), você deve adaptá-lo ao seu caso (200).

insira a descrição da imagem aqui

No final, sua camada deve ter um novo campo chamado point_type com valores diferentes, de acordo com a distância mínima ao ponto mais próximo.

insira a descrição da imagem aqui

Alexandre Neto
fonte
Parece uma solução elegante. No entanto, tenho uma complicação. Eu sei que existem alguns pontos que possuem locais IDENTICAL (estes resultam de sinônimos de nome durante a captura de dados original). Em um caso, identifiquei 3 no mesmo ponto. Penso que a sua solução assume (sensatamente) que todos os pontos estão localizados de maneira única. Existe alguma maneira óbvia de rastrear minha cobertura para eliminar os pontos de mesma localização primeiro?
Leigh Bettenay
@LeighBettenay Se esta resposta abordar sua pergunta original, acho que você deve aceitá-la (sinal verde) para recompensar o esforço de quem responder e pesquisar / colocar sua exigência adicional como uma nova pergunta. +1 para uma ótima primeira pergunta!
PolyGeo
@PolyGeo Desculpe, sou novo neste fórum e não conheço o protocolo. Feliz por "green tick" uma resposta maravilhosa, mas infelizmente não sei como !!
Leigh Bettenay
Basta clicar na marca cinza abaixo da votação da pergunta (canto esquerdo da pergunta). Obrigado
Alexandre Neto