Finden Sie Orte innerhalb eines bestimmten Lat / Lon-Abstands in r

Ich habe einen gerasterten Datensatz mit Daten, die an den folgenden Speicherorten verfügbar sind:

lon <- seq(-179.75,179.75, by = 0.5)
lat <- seq(-89.75,89.75, by = 0.5)

Ich möchte alle Datenpunkte finden, die nicht weiter als 500 km vom Standort entfernt sind:

mylat <- 47.9625
mylon <- -87.0431

Ich versuche, das Geosphäre-Paket in R zu verwenden, aber die Methode, die ich gerade geschrieben habe, scheint nicht sehr effizient zu sein:

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
  }
}

Hier durchlaufe ich jedes Raster in den Daten und finde heraus, ob die Entfernung weniger als 500 km beträgt. Ich speichere dann eine Variable mit entweder TRUE oder FALSE, die ich dann verwenden kann, um die Daten zu mitteln (andere Variable). Nach dieser Methode möchte ich eine Matrix mit TRUE oder FALSE für die Orte innerhalb von 500 km von den angezeigten Lat- und Lon-Werten erstellen. Gibt es dafür eine effizientere Methode?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage