subsetting a WKT Multilinestring
On Mon, 22 Apr 2013, Philip A. Viton wrote:
Consider:
library(rgeos)
mls<-readWKT("MULTILINESTRING((3 4, 10 50, 20 25),(30 30, 70 50, 24 55)
,(30 12, 50 5, 65 7))")
length(mls)
#[1] 1
mls1<-readWKT("GEOMETRYCOLLECTION(LINESTRING(3 4, 10 50, 20 25),
LINESTRING(30 30, 70 50, 24 55), LINESTRING(30 12, 50 5, 65 7))")
length(mls1)
#[1] 3
may be the incantation you want, then:
length(mls1[-2])
#[1] 2
A MULTILINESTRING is an sp "Lines" object, built of one or more "Line"
objects. An sp "SpatialLines" object is a GEOMETRYCOLLECTION of
MULTILINESTRING or LINESTRING objects, where the single LINESTRING objects
are "promoted" to MULTILINESTRING/Lines status as observed data is
attached to them, not to LINESTRING/Line objects. If you work with the
object definitions, you don't have to unpick them afterwards.
Hope this clarifies,
Roger
PS:
unfold might be (I think Barry has said this, I have too somewhere):
crds <- coordinates(mls)
nobjs <- sum(sapply(crds, length))
out <- vector(mode="list", length=nobjs)
i <- 1
for (j in seq(along=crds)) {
jcrds <- crds[[j]]
for (k in seq(along=jcrds)) {
out[[i]] <- Lines(list(Line(jcrds[k])), as.character(i))
i <- i + 1
}
}
SLout <- SpatialLines(out)
length(SLout)
In another context it was necessary to check that the coordinate matrices
had at least two unique coordinates - not done here.
mls is, as expected, a SpatialLines object, and plotting it shows that indeed it has three individual lines. My question is: is there some way to subset this object so as to obtain a smaller SpatialLines object? (say, by excluding the second Line)? ------------------------ Philip A. Viton City Planning, Ohio State University 275 West Woodruff Avenue, Columbus OH 43210 viton.1 at osu.edu
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-geo
Roger Bivand Department of Economics, NHH Norwegian School of Economics, Helleveien 30, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 e-mail: Roger.Bivand at nhh.no