sc_segment() gives the SC index not SC0
Opened this issue · 1 comments
mdsumner commented
sc_edge()
is ok
silicate::sc_segment(silicate::SC0(tr))
# A tibble: 10,853 × 7
object_ edge_ native_ .vx0 .vx1 path_ segment_
<chr> <chr> <lgl> <chr> <chr> <int> <chr>
1 erY36j i85ZFS TRUE aXrqMr Wc13d3 1 jrw9Mu
2 erY36j i5gsKD TRUE Wc13d3 Pp2x9a 1 8PNh6B
3 erY36j VhQr0y TRUE Pp2x9a DS3z6B 1 UlxXwD
4 erY36j zi94aU TRUE DS3z6B 2yMcaK 1 2NjKES
5 erY36j RukRfJ TRUE 2yMcaK rfRHuq 1 swaWpG
6 erY36j 8Si0Qg TRUE rfRHuq 1mLf2H 1 DDiH7Y
7 erY36j 5GVcOS TRUE 1mLf2H DQM8fd 1 lH38H9
8 erY36j eWvDwS TRUE DQM8fd kXNVWt 1 TWdXwh
9 erY36j JNQCIh TRUE kXNVWt TGRnNE 1 5LRqX2
10 erY36j Y0XAjf TRUE TGRnNE MkfeJN 1 MF1Bln
# … with 10,843 more rows
> silicate::sc_edge(silicate::SC0(tr))
# A tibble: 10,853 × 3
.vx0 .vx1 path_
<int> <int> <int>
1 1821 2678 1
2 2678 4780 1
3 4780 5853 1
mdsumner commented
motivating use case is time intervals on trip objects, using segments()
tr <- trip(d %>% dplyr::select(X, Y, Date, Nest))
segs <- silicate::SC0(tr)
## splat out to a df for segments
segs <- bind_rows(segs$object$topology_, .id = "object") %>%
inner_join(segs$vertex %>% transmute(vertex_ = row_number(), x0 = x_, y0 = y_, starttime = t_), c(".vx0" = "vertex_")) %>%
inner_join(segs$vertex %>% transmute(vertex_ = row_number(), x1 = x_, y1 = y_, endtime = t_), c(".vx1" = "vertex_")) %>%
dplyr::select(object, x0, y0, starttime, x1, y1, endtime)
segs$color_ <- palr::d_pal(segs$object)
...
segs2 <- dplyr::filter(segs, endtime <= (dts[i]) & starttime >= (dts[i] - 3 * 24 * 3600))
with(segs2, segments(x0, y0, x1, y1, col = color_))