如何将简单的特征点沿线投射到具有端点的线段中
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)
我在一条线上有多个地理点。这些点中的几个点形成由列定义的段。我将这些视为一个简单的特征,并尝试将每个线段转换为一条线。但是,当我使用 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)