gpt4 book ai didi

r - 使用 R 查找最近的 X,Y 坐标

转载 作者:行者123 更新时间:2023-12-02 14:35:34 26 4
gpt4 key购买 nike

我刚刚开始学习 R,但希望项目尽快完成。这很简单:我有一个 X 列和一个由 X 坐标和 Y 坐标组成的 Y 列。 (在 NAD27 坐标系中工作)。从第一个坐标开始,我想找到数据集中最近的点,然后移动到下一个坐标并找到同一数据集中最近的点。理想情况下,它将遍历每个点并确定最近的点。

point x         y
1 1601774 14544454
2 1616574 14579422
3 1608698 14572922
4 1602948 14572990
5 1607355 14573871
6 1615336 14578178
7 1603398 14574495
8 1605153 14570727
9 1606758 14573845
10 1606655 14570953

最佳答案

这是一种方法,使用 RANN 包。该方法类似于 this post 中所示的方法。 ,但适用于单组点(链接的帖子是关于查找 A 组中与 B 组中每个点最近的点)。

xy <- read.table(text='point x         y
1 1601774 14544454
2 1616574 14579422
3 1608698 14572922
4 1602948 14572990
5 1607355 14573871
6 1615336 14578178
7 1603398 14574495
8 1605153 14570727
9 1606758 14573845
10 1606655 14570953', header=TRUE, row.names=1)

library(RANN)
closest <- nn2(data=xy, k=2)[[1]]

在上面,我们将您的一组点 xy 提供给 data 参数,并指定我们希望 nn2 找到每个点有两个最近的点(因为最近的点是焦点本身)。 nn2 函数返回一个包含两个元素的列表:每个 k 个最近点(对于每个查询点)的索引向量(在本例中为矩阵);和距离的向量(矩阵)。我假设我们对距离不感兴趣,所以上面我们将结果子集到第一个元素。

对于我们的问题,结果是一个两列矩阵,第一列给出查询点的索引,第二列给出最近点的索引。

closest

## [,1] [,2]
## [1,] 1 8
## [2,] 2 6
## [3,] 3 5
## [4,] 4 7
## [5,] 5 9
## [6,] 6 2
## [7,] 7 4
## [8,] 8 10
## [9,] 9 5
## [10,] 10 8

要获取最近点的坐标矩阵,您可以使用:

xy[closest[, 2], ]

默认情况下,nn2 使用 kd 树 - 您可能想尝试一下 treetype='bd'

关于r - 使用 R 查找最近的 X,Y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32618956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com