@@ -689,8 +689,7 @@ connected.linnet <- function(X, ..., what=c("labels", "components")) {
689689 verifyclass(X , " linnet" )
690690 what <- match.arg(what )
691691 nv <- npoints(vertices(X ))
692- lab0 <- cocoEngine(nv , X $ from - 1L , X $ to - 1L , " connected.linnet" )
693- lab <- lab0 + 1L
692+ lab <- cocoLabels(nv , X $ from , X $ to , " connected.linnet" )
694693 lab <- factor (as.integer(factor (lab )))
695694 if (what == " labels" )
696695 return (lab )
@@ -776,7 +775,7 @@ identify.linnet <- function(x, ...) {
776775 identify(as.psp(x ), ... )
777776}
778777
779- roadways <- function (X , what = c(" labels" , " segments" , " function" )) {
778+ roadways <- function (X , what = c(" labels" , " segments" , " tessellation " , " function" )) {
780779 verifyclass(X , " linnet" )
781780 what <- match.arg(what )
782781 # # identify which vertices are just a 'bend' in the road
@@ -789,19 +788,16 @@ roadways <- function(X, what=c("labels", "segments", "function")) {
789788 ok <- bend [ver ]
790789 seg <- seg [ok ]
791790 ver <- ver [ok ]
792- # # match (segment, vertex) pairs with the same vertex
791+ # # match (segment, vertex) pairs which have the same vertex
793792 second <- which(duplicated(ver ))
794793 first <- uniquemap(ver )[second ]
795794 # # extract corresponding edges
796795 a <- seg [first ]
797796 b <- seg [second ]
798797 # # Thus edges a[j], b[j] share a common vertex of degree 2, for each j
799798 # # Identify equivalence classes
800- lab0 <- cocoEngine(nsegments(X ), a - 1L , b - 1L , " roadways algorithm" )
801- # # renumber sequentially
802- lab <- as.integer(factor (lab0 ))
803- # Convert labels to factor
804- lab <- factor (lab )
799+ lab <- cocoLabels(nsegments(X ), a , b , " roadways algorithm" )
800+ lab <- as.factor(lab )
805801 # #
806802 switch (what ,
807803 labels = {
@@ -810,6 +806,13 @@ roadways <- function(X, what=c("labels", "segments", "function")) {
810806 segments = {
811807 result <- as.psp(X ) %mark % lab
812808 },
809+ tessellation = {
810+ df <- data.frame (seg = seq_len(nsegments(X )),
811+ t0 = 0 ,
812+ t1 = 1 ,
813+ tile = lab )
814+ result <- lintess(X , df )
815+ },
813816 " function" = {
814817 f <- function (x ,y ,seg ,tp , ... ) { lab [seg ] }
815818 result <- linfun(f , X )
0 commit comments