我有一个网格数据集,数据位于以下位置:
lon <- seq(-179.75,179.75, by = 0.5)
lat <- seq(-89.75,89.75, by = 0.5)我希望找到该位置周围500公里内的所有数据点:
mylat <- 47.9625
mylon <- -87.0431我的目标是在R中使用geosphere包,但我目前编写的方法似乎效率不是很高:
require(geosphere)
dd2 <- array(dim = c(length(lon),length(lat)))
for(i in 1:length(lon)){
for(ii in 1:length(lat)){
clon <- lon[i]
clat <- lat[ii]
dd <- as.numeric(distm(c(mylon, mylat), c(clon, clat), fun = distHaversine))
dd2[i,ii] <- dd <= 500000
}
}在这里,我循环遍历数据中的每个网格,并确定距离是否小于500公里。然后我存储了一个真或假的变量,然后我可以用它来求数据的平均值(其他变量)。在这个方法中,我想要一个距离经度和经度500公里内的位置的真或假矩阵。有没有更有效的方法来做到这一点?
https://stackoverflow.com/questions/39222302
复制相似问题