encontre localizações dentro de uma certa distância lat / lon em r
Eu tenho um conjunto de dados em grade, com dados disponíveis nos seguintes locais:
lon <- seq(-179.75,179.75, by = 0.5)
lat <- seq(-89.75,89.75, by = 0.5)
Gostaria de encontrar todos os pontos de dados que estão a 500 km do local:
mylat <- 47.9625
mylon <- -87.0431
Eu pretendo usar o pacote de geosfera em R, mas o método que escrevi atualmente não parece muito eficiente:
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
}
}
Aqui, percorro cada grade nos dados e descubro se a distância é inferior a 500 km. Em seguida, armazeno uma variável com TRUE ou FALSE, que posso usar para calcular a média dos dados (outra variável). Com esse método, quero uma matriz com VERDADEIRO ou FALSO para os locais a 500 km da lat e lon mostrados. Existe um método mais eficiente para fazer isso?