我有一个数据框,其中包含UTM(通用横轴墨卡托)坐标中的地点列表和地理位置。查找哪些点位于每个点的给定距离内
它看起来是这样的:
Place X_UTM Y_UTM
1 574262.0 6140492
2 571251.2 6141669
3 570841.9 6142535
4 570233.8 6141213
5 578269.2 6140304
6 575067.1 6137444
我想确定,每个地方(数据帧中的每一行)外,其他地方的这是一个给定的欧氏距离之内。在这种情况下,我想找出哪些地方比1公里更近。
我已经试过这样的事情:
foo <- function(x, y) dist(c(x, y), method = "euclidian") < 1000
这应该是返回的1000多米的更近点的功能。然后:
x <- lapply(df(,c(i, x, y)), FUN = foo)
其中i
为"Place"
,x
是"X_UTM"
和y
是"Y_UTM"
。这根本不起作用。
我应该后看起来像这样(而不是从上面给出的数字)中获得的输出:
# Place Closest
# 1 2, 5
# 2 1
# 3 NA
# 4 5
# 5 1, 4
# 6 NA
纠正我,如果我是不正确的,但不应该将距离函数接受两个_points_,即两个X和两个Y值? –
是的。我想计算每一行之间的距离。对于所有行,这应该是sqr((X_UTM [1] - X_UTM [i])^ 2 - (Y_UTM [1] - Y_UTM [i])^ 2),然后记录哪个[i]小于1000. –
can你不会做'dst < - as.matrix(dist(d [-1])); diag(dst)< - NA; (dst,1,function(x)paste(其中(x <1000),collapse =“,”))' – user20650