У меня есть набор данных с сеткой с сеткой, данные доступны в следующих местах:
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, но метод, который я сейчас написал, кажется не очень эффективным:
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 км. Затем я сохраняю переменную с TRUE или FALSE, которую затем я могу использовать для усреднения данных (другая переменная). Из этого метода я хочу получить матрицу с TRUE или FALSE для местоположений в пределах 500 км от показанных лат и lon. Есть ли более эффективный метод для этого?