.R определение точек вне круга (карты / GPS)

Я новичок в платформе, моя проблема:

У меня есть набор данных Амстердама с 500 точками (координаты GPS - долгота, широта).

Я хотел бы определить точки, которые находятся за пределами центра Амстердама. GPS координаты центра Амстердама широта: 52,37 долгота: 4,88. Я хочу радиус 3 км.

Целевая картинка

1 ответ

Есть много способов сделать это, вот один.

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

указывает вокруг Амстердама

Другие вопросы по тегам