Как привести простые характерные точки вдоль линии в сегменты с конечными точками - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть несколько географических точек вдоль линии.Некоторые из этих точек образуют сегменты, определенные столбцом.Я рассматриваю это как простую функцию и пытаюсь преобразовать каждый сегмент в линию.Однако, когда я использую 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)

enter image description here

1 Ответ

1 голос
/ 26 сентября 2019

Мы можем извлечь последнюю строку каждого 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)

enter image description here

...