我有两个数据集,一个有 488,286 行和经纬度坐标,另一个有 245,077 行和经纬度坐标。第二个还有与坐标相关的附加数据。我想在第二个数据集中找到最接近第一个数据集中的所有点。我不能分享原始数据,所以为了简单起见,我将在这里生成一些随机点:
df1<-cbind(runif(488286,min=-180, max=-120), runif(488286, min=50, max=85))
df2<-cbind(runif(245077,min=-180, max=-120), runif(245077, min=50, max=85))
我尝试只使用 distm 函数,但数据太大,所以我尝试像这样分解它:
library(geosphere)
closest<-apply(df1, 1, function(x){
mat<-distm(x, df2, fun=distVincentyEllipsoid)
return(which.min(mat))
})
我认为这行得通,但是运行需要很长时间,以至于我实际上没有看到结果(仅尝试使用数据的子集)。我真的需要一种更快的方法来执行此操作,因为我让它运行了 2 天但没有完成。它不必使用distm,只要更快更准确。
提前致谢!