Eu tenho um SpatialPointsDataFrame com o qual estou trabalhando em R. Quero adicionar um novo vetor ao dataframe que contenha, para cada ponto, a distância até o outro ponto mais próximo no SpatialPointsDataFrame. Eu observei knearneigh no pacote spdep, bem como spDistsN1 e spDists no pacote sp, mas nenhum deles me fornece exatamente o que eu quero. Para ficar claro, todos esses pontos estão em ONE SpatialPointsDataFrame.
r
point
nearest-neighbor
sp
Amadou Kone
fonte
fonte
Respostas:
Existem várias maneiras de resolver isso em R, incluindo spDists em sp e gDistance em rgeos. Uma maneira eficiente, expansível para vários kNN IDs e distâncias, é usar spdep.
Outra maneira, muito rápida, é o pacote nabor. Como a distância é retornada junto com o ID do vizinho, você pode adicionar os dois simultaneamente. A função nabor :: knn retorna auto-vizinhos, portanto, você deve definir k como> = 2 e soltar a primeira coluna nas matrizes resultantes. Uma vantagem aqui é que, desde que as matrizes tenham a mesma dimensão, é possível obter vizinhos a partir dos mesmos dados ou de dados independentes.
fonte