.R определение точек вне круга (карты / GPS) - PullRequest
0 голосов
/ 04 мая 2018

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

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

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

Изображение цели

1 Ответ

0 голосов
/ 04 мая 2018

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

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

points around Amsterdam

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...