.R识别圆圈外的点(地图/ gps)

时间:2018-05-04 14:12:37

标签: r plot maps radius identify

我是平台的新手,我的问题是:

我有一个阿姆斯特丹的数据集,有500个点(gps坐标 - 经度,纬度)。

我想确定一些在阿姆斯特丹市中心以外的地方。 阿姆斯特丹市中心的GPS坐标是纬度:52.37经度:4.88。 我希望半径为3公里。

Target picture

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到,这里有一个。

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

但是,当您提供样本数据时,最终这个不完整的答案会更加明智。您之前的努力以及可能的某些背景信息最好通过您展示您尝试过的任何代码;有时缺少代码建议&#34;请为我免费编写代码&#34; ,但是当你不知道时,这通常可以得出结论。

这是完整的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