我按照帖子在 R{spatstat} 中查找欧几里得距离,由不规则多边形窗口限制到最后,并使其一切正常,非常好。但是,就我而言,我想获取数据 A 中的点到数据 B 中的点的距离,但前提是两个数据集具有相同的 ID 值。我的问题可以遵循在点之间查找 R{spatstat} 中的欧几里得距离中的示例,由不规则多边形窗口限制但具有两个 Pts 数据框,而不是查找 Pts 中的点之间的距离,我想找到点之间的距离Pts1 和 Pts2 如果 Pts1$ID == Pts2$ID (假设您添加和 ID 列)。在 Pts1 和 Pts2 中都有许多级别的 ID。
问问题
107 次
1 回答
0
免责声明:这是在没有测试任何代码的情况下编写的,因此不能保证它可以正常工作,但它提供了解决问题的直接方法。
该函数gdistance::costDistance
接受第三个参数来指定从第二个参数中的点到第三个参数中的点的距离,因此拥有数据 A 和数据 B 应该没有问题。
现在为每个 ID 执行此操作:如何简单地将点集拆分为每个 ID 的单独的点集,然后在 for 循环中为每个点执行距离代码?
如果A
和B
与data.frames
您的坐标和IDA
并且IDB
是具有相同级别的因子,指示点的 ID,那么您可以拆分为列表并计算距离,如下所示(假设您已经从链接到的答案中运行了适当的代码):
Alist <- split(A, IDA)
Blist <- split(B, IDB)
rslt <- list()
for(i in seq_along(Alist)){
rslt[[i]] <- costDistance(tr1, Alist[[i]], Blist[[i]])
}
于 2015-10-16T11:33:47.803 回答