найти места в пределах определенного расстояния в г
У меня есть набор данных с привязкой к сетке, данные которого доступны в следующих местах:
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, которую затем могу использовать для усреднения данных (другая переменная). Из этого метода я хочу матрицу с ИСТИНА или ЛОЖЬ для мест в пределах 500 км от показанных значений широты и долготы. Есть ли более эффективный способ сделать это?