Есть много способов сделать это, вот один.
amst <- matrix(c(52.37, 4.88), ncol=2)
points <- data.frame(longitude=..., latitude=..., anything=..., else=..., here=...)
some_limit <- 3000 # defaults to meters
inside <- geosphere::distHaversine(amst, points[c("longitude","latitude")]) < some_limit
points[inside,,drop=FALSE] # all points inside
Но, в конечном итоге, этот неполный ответ будет гораздо лучше проинформирован, когда вы предоставите образцы данных. Ваши предыдущие усилия и, возможно, некоторый контекст лучше всего информированы вами, когда вы показываете какой-либо код, который вы пробовали; иногда отсутствие кода подсказывает «пожалуйста, напишите мне это бесплатно» , хотя это часто может привести к поспешным выводам, когда вы не знаете.
Вот полное MWE с радиусом 30 км вокруг Амстердама.
library(maps)
library(mapdata)
library(ggplot2)
library(geosphere)
neth <- map_data('worldHires', 'Netherlands')
amst <- data.frame(long=4.88, lat=52.37)
n <- 500
set.seed(2)
points <- data.frame(
long = amst$long + runif(n, min=-1, max=+1),
lat = amst$lat + runif(n, min=-1, max=+1)
)
some_limit <- 30000 # meters
points$inside <- distHaversine(amst, points) < some_limit
ggplot() +
geom_polygon(data=neth, aes(x=long, y=lat, group=group)) +
coord_fixed(1.3) +
geom_point(data=amst, aes(x=long, y=lat), color='green', size=5) +
geom_point(data=points, aes(x=long, y=lat, color=inside))