【发布时间】:2018-10-15 01:32:34
【问题描述】:
我是这个平台的新手,我的问题:
我有一个包含 500 个点的阿姆斯特丹数据集(gps 坐标 - 经度、纬度)。
我想找出阿姆斯特丹市中心以外的点。 阿姆斯特丹中心的gps坐标是纬度:52.37 经度:4.88。 我想要3公里的半径。
【问题讨论】:
-
请see here 发布包含代码和数据的问题,这里的人们可以用来帮助您
标签: r plot maps radius identify
我是这个平台的新手,我的问题:
我有一个包含 500 个点的阿姆斯特丹数据集(gps 坐标 - 经度、纬度)。
我想找出阿姆斯特丹市中心以外的点。 阿姆斯特丹中心的gps坐标是纬度:52.37 经度:4.88。 我想要3公里的半径。
【问题讨论】:
标签: r plot maps radius identify
有很多方法可以做到,这里有一个。
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))
【讨论】: