Convert a dodgr graph into a list composed of two objects: dat, a data.frame; and geometry, an sfc object from the (sf) package. Works by aggregating edges into LINESTRING objects representing longest sequences between all junction nodes. The resultant objects will generally contain more LINESTRING objects than the original sf object, because the former will be bisected at every junction point.

dodgr_to_sfc(graph)

Arguments

graph

A dodgr graph

Value

A list containing (1) A data.frame of data associated with the sf geometries; and (ii) A Simple Features Collection (sfc) list of LINESTRING objects.

Note

The output of this function corresponds to the edges obtained from dodgr_contract_graph. This function does not require the sf package to be installed; the corresponding function that creates a full sf object - dodgr_to_sf does requires sf to be installed.

Examples

hw <- weight_streetnet (hampi) nrow(hw)
#> [1] 5973
xy <- dodgr_to_sfc (hw) dim (hw) # 5.845 edges
#> [1] 5973 15
length (xy$geometry) # more linestrings aggregated from those edges
#> [1] 662
nrow (hampi) # than the 191 linestrings in original sf object
#> [1] 203
dim (xy$dat) # same number of rows as there are geometries
#> [1] 662 15
# The dodgr_to_sf function then just implements this final conversion: # sf::st_sf (xy$dat, geometry = xy$geometry, crs = 4326)