- Notifications
You must be signed in to change notification settings - Fork 10
Description
Hi all, actually cppRouting has a lot of tools to internally handle some changes like contraction hierarchies.
At the same time, rn sfnetworks is a popular and very useful library to work on, I think would be a good idea have a function to convert sfnetwork graph to cpprouting graph.
I already have a function for it, but would be good to have for it some extra tests and I don't fully understand all the cppRouting graph structure to construct them for every case that may be of interestest.
The function I have:
sfnet2cppRouting <- ? function( network = NULL ? geotypes::sfnetworks_sfnetwork(null_ok = FALSE), weight = NULL ? typed::Character(1, anyNA = FALSE, null_ok = FALSE)) { cppRouting_graph <- cppRouting::makegraph( network %.>% sfnetworks::activate(., "edges") %.>% sf::st_as_sf(.) %.>% sf::st_drop_geometry(.) %.>% as.data.frame(.) %.>% dplyr::transmute(., .data$from, .data$to, cost = .data[[weight]]), directed = igraph::is_directed(network) ) # } original_nodes <- network %.>% sfnetworks::activate(., "nodes") %.>% sf::st_as_sf(.) if (nrow(original_nodes) != cppRouting_graph$nbnode) { stop("The net was simplified by cppRouting, the nodes assignation can be broken.") } cppRouting_graph }Personally, the latest section, the stop is a need, happened, very low times, that sadly I was not able to reproduce, some nodes disappear using makegraph, so it would helps to detect that cases, has been some time from when that happened, maybe is fixed, sadly I was not able to found any issue here to check it.
Thx!