encontrar ubicaciones dentro de cierta distancia lat / lon en r
Tengo un conjunto de datos en cuadrícula, con datos disponibles en las siguientes ubicaciones:
lon <- seq(-179.75,179.75, by = 0.5)
lat <- seq(-89.75,89.75, by = 0.5)
Me gustaría encontrar todos los puntos de datos que están dentro de los 500 km de la ubicación:
mylat <- 47.9625
mylon <- -87.0431
Mi objetivo es utilizar el paquete de geosfera en R, pero el método que he escrito actualmente no parece muy 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
}
}
Aquí, recorro cada cuadrícula en los datos y encuentro si la distancia es inferior a 500 km. Luego almaceno una variable con VERDADERO o FALSO, que luego puedo usar para promediar los datos (otra variable). De este método, quiero una matriz con VERDADERO o FALSO para las ubicaciones dentro de los 500 km desde el lat y el lon mostrados. ¿Existe un método más eficiente para hacer esto?