Hi,

Do you have one layer of segments or two?

You'll find what you need in the spatstat package.

See
(self)crossing.psp find crossing points between two line segment patterns
Afterwards, it must possible to build new segments based on the
intersection points

Also, you have the GRASS v.clean that allows breaking lines at intersection
points

Best,

Mathieu

2012/1/26 Michiel Faber <fabermichiel@planet.nl>

> Dear all,
>
> I'am using R extensively privately and during work.
> I have just discovered the Spatial classes of R and want to use them in
> my home project. I want to find the intersections between lines and cut
> the lines at those intersections.
> For example: Two lines crossing each other once will result in four new
> lines.
>
> I have searched intensively, but I can't find a simple way of cutting a
> (Spatial) line in two. I can make a data.frame out of it, cut it in two
> and make two (Spatial) lines again, but that doesn't seem logical.
>
> Is there a simple way to do it?
> The gIntersection() between the lines in the example yields two
> intersections (int.s1_s2). I would like to have six new lines, each line
> being cut in three parts by the points in int.s1_s2.
>
> Thanks for any pointers,
> Michiel
>
> library(rgeos)
> x1 <- c(3,  4,  6,  8, 10)
> y1 <- c(0.23, 0.48, 0.45, 0.08, 0.18)
> x2 <- c(1,  2,  6,  7, 10)
> y2 <- c(0.27, 0.36, 0.16, 0.30, 0.85)
>
> #is there also a easier way of doing this?
> s1 <- SpatialLines(list(Lines(list(Line(cbind(x1,y1))),ID=1)))
> s2 <- SpatialLines(list(Lines(list(Line(cbind(x2,y2))),ID=1)))
>
> int.s1_s2 <- gIntersection(s1,s2)
>
> plot(s1, type="b", col="green", xlim=c(1,10))
> lines(s2, type="b", col="blue")
> points(int.s1_s2, pch=4, col="black")
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

	[[alternative HTML version deleted]]

