如何将简单的特征点沿线投射到具有端点的线段中

How to cast simple feature points along a line into segments with endpoints

我在一条线上有多个地理点。这些点中的几个点形成由列定义的段。我将这些视为一个简单的特征,并尝试将每个线段转换为一条线。但是,当我使用 group_by 时,我错过了每段的端点,它对应于下一段的第一个点。我想要的是,每个线段结束,下一个开始。从本质上讲,这可能归结为向 group_by 命令添加一个额外的行,或类似的方法。 感谢您的帮助。

SF_df <-   tibble(Segment = c("A","A","A", "B","B","B", "C","C","C"),Value = c(1,1,1, 2,2,2, 3,3,3), LAT = c(1,2,3,4,5,6,7,8,9), LONG = 1) %>% st_as_sf(coords = c("LONG", "LAT"), crs = "+proj=utm +zone=33    +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
plot(SF_df)

SF_segs <- SF_df %>% group_by(Segment) %>% summarize(Value = mean(Value)) %>% st_cast("LINESTRING")
plot(SF_segs)

我们可以提取每个 Segment 调整其标签的最后一行,rbind 到原始对象和 plot

library(dplyr)
library(sf)

temp_df <- SF_df %>%
            group_by(Segment) %>%
            slice(n()) %>%
            ungroup() %>%
            mutate(Segment = lead(Segment)) %>%
            slice(-n()) %>%
            rbind(SF_df)


SF_segs <- temp_df %>% 
             group_by(Segment) %>% 
             summarize(Value = mean(Value)) %>% 
             st_cast("LINESTRING")
plot(SF_segs)