UTM (Universal Transverse Mercator) 좌표로 장소 목록과 지리적 위치가있는 데이터 프레임이 있습니다.각 점의 지정된 거리 내에있는 점 찾기
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
내가 확인하고 싶은 다른 장소의 주어진 유클리드 거리 내에있는 각 장소합니다 (dataframe의 각 행)에 대한 :
는그것은 다음과 같이 보입니다. 이 경우, 나는 어느 장소가 1 킬로미터보다 더 가까운지를 찾고 싶다. 나는 이런 식으로 뭔가를 시도했습니다
: 1,000m보다 더 가까운 지점을 반환하는 함수이어야한다
foo <- function(x, y) dist(c(x, y), method = "euclidian") < 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 미만인 것을 기록해야합니다. –
은 당신은'dst <- as.matrix (dist (d [-1]))를하지 않는다; diag (dst) <- NA; apply (dst, 1, function (x) paste (which (x <1000), collapse = ","))' – user20650