r的距离距离点的距离点

问题描述 投票:0回答:1

I有一个空间矢量(spatoods),分组以分组为单位。我想计算每个点到组中的第一个点的距离。

Trans2024_df Name Distance_to_first 1 T01 0 2 T01 1.2 3 T01 2.5 4 T02 0 5 T02 0.5 6 T02 1.2 7 T02 1.7 8 T03 0 9 T03 1.3
我设法达到了前面的距离。

VectorPoints_sf <- st_as_sf(VectorPoints) VectorPoints_sf %>% mutate( distance_next = sf::st_distance( geometry, lead(geometry), by_element = TRUE)) Name distance_next 1 T01 0 2 T01 1.2 3 T01 1.3 4 T02 5 5 T02 0.5 6 T02 0.7 7 T02 1.5 8 T03 2 9 T03 1.3

但我不知道如何到达第一个点的距离。
我以为它可以与dplr :: first()
一起使用

VectorPoints_sf %>% group_by(Transect) %>% mutate( distance_first = sf::st_distance( geometry, first(geometry), by_element = TRUE))

但是我会收到以下错误:

Error in `stopifnot()`: ℹ In argument: `distance_first = sf::st_distance(geometry, geometry[1], by_element = TRUE)`. ℹ In group 1: `Transect = "T09"`. Caused by error in `sf::st_distance()`: ! length(x) == length(y) is not TRUE

	
r tidyverse terra
1个回答
0
投票

library(terra) v <- vect(matrix(runif(40), ncol=2), crs="local") v$ID <- sample(rep(LETTERS[1:5], each=4))

缩小距离
x <- lapply(split(v, "ID"), \(x) distance(x[1], x[-1]))

将它们一起在data.frame
中输入
do.call(rbind, lapply(names(x), \(i) data.frame(group=i, dist=t(x[[i]])))) # group dist #1 A 0.8582356 #2 A 0.9665782 #3 A 0.6253639 #4 B 0.3387519 #5 B 0.6647694 #6 B 0.3004775 #7 C 0.5647327 #8 C 0.8115395 #9 C 0.4722487 #10 D 0.7140878 #11 D 0.8428825 #12 D 0.5384567 #13 E 0.8268007 #14 E 0.6973941 #15 E 0.5094854


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.