Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

as.linnet.SpatialLines

Convert SpatialLines to Linear Network


Description

Convert an object of class SpatialLines or SpatialLinesDataFrame (from package sp), representing a collection of polygonal lines, into an object of class linnet (from package spatstat), representing a network.

Usage

as.linnet.SpatialLines(X, ..., fuse = TRUE)
  ## S4 method for signature 'SpatialLines,linnet'
coerce(from, to = "linnet", strict = TRUE)
  ## S4 method for signature 'SpatialLinesDataFrame,linnet'
coerce(from, to = "linnet",
    strict = TRUE)

Arguments

X, from

Object of class SpatialLines or SpatialLinesDataFrame to be converted.

to

output object of class “linnet”.

strict

logical flag. If TRUE, the returned object must be strictly from the target class.

...

Ignored.

fuse

Logical value indicating whether to join different curves which have a common vertex.

Details

This function converts an object of class SpatialLines or SpatialLinesDataFrame into an object of class linnet. It is not a method for the spatstat generic function as.linnet, but like other S4 coercion functions for sp classes to spatstat classes, it may be called directly as a function.

An object of class SpatialLines or SpatialLinesDataFrame (from package sp) represents a list of lists of the coordinates of lines, such as a list of all roads in a city. An object of class linnet in the spatstat package represents a linear network, such as a road network.

If fuse=FALSE, each “Line” object in X will be treated as if it were disconnected from the others. The result is a network that consists of many disconnected sub-networks, equivalent to the list of “Line” objects.

If fuse=TRUE (the default), the code will search for identical pairs of vertices occurring in different “Line” objects, and will treat them as identical vertices, effectively joining the two “Line” objects at this common vertex.

If X belongs to class SpatialLinesDataFrame, the associated columns of data in the auxiliary data frame slot(X, "data") will be copied to the output as the marks attached to the line segments of the network. See the Examples.

Value

An object of class linnet.

Author(s)

Adrian Baddeley.

See Also

Examples

run <- FALSE
if(require("spatstat.geom", quietly=TRUE) &&
  require("spatstat.linnet", quietly=TRUE)) run <- TRUE
if (run) {
   dname <- system.file("shapes", package="maptools")
   fname <- file.path(dname, "fylk-val.shp")
   fylk <- readShapeSpatial(fname, proj4string=CRS("+proj=utm +zone=33 +ellps=WGS84"))
   is.projected(fylk)
}
if (run) {
   L <- as(fylk, "linnet")
   print(max(vertexdegree(L)))
}
if (run) {
   L0 <- as.linnet.SpatialLines(fylk, fuse=FALSE)
   print(max(vertexdegree(L0)))
}
if (run) {
   ## extract data associated with each network segment
   head(marks(as.psp(L)))
}
if (run) {
   fname <- file.path(dname, "fylk-val-ll.shp")
   fylk <- readShapeSpatial(fname, proj4string=CRS("+proj=longlat +ellps=WGS84"))
   is.projected(fylk)
}
if (run) {
   try(L <- as(fylk, "linnet"))
  }

maptools

Tools for Handling Spatial Objects

v1.1-1
GPL (>= 2)
Authors
Roger Bivand [cre, aut] (<https://orcid.org/0000-0003-2392-6140>), Nicholas Lewin-Koh [aut], Edzer Pebesma [ctb], Eric Archer [ctb], Adrian Baddeley [ctb], Nick Bearman [ctb], Hans-Jörg Bibiko [ctb], Steven Brey [ctb], Jonathan Callahan [ctb], German Carrillo [ctb], Stéphane Dray [ctb], David Forrest [ctb], Michael Friendly [ctb], Patrick Giraudoux [ctb], Duncan Golicher [ctb], Virgilio Gómez Rubio [ctb], Patrick Hausmann [ctb], Karl Ove Hufthammer [ctb], Thomas Jagger [ctb], Kent Johnson [ctb], Matthew Lewis [ctb] (<https://orcid.org/0000-0003-2244-4078>), Sebastian Luque [ctb], Don MacQueen [ctb], Andrew Niccolai [ctb], Edzer Pebesma [ctb], Oscar Perpiñán Lamigueiro [ctb], Ethan Plunkett [ctb], Ege Rubak [ctb] (<https://orcid.org/0000-0002-6675-533X>), Tom Short [ctb], Greg Snow [ctb], Ben Stabler [ctb], Murray Stokely [ctb], Rolf Turner [ctb]
Initial release
2021-03-14

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.