[R-sig-Geo] Divide a polygon by a line?
Hisaji ONO
hi_ono2001 at ybb.ne.jp
Fri Nov 2 09:09:43 CET 2007
Hi.
I've create very simple example "cutting polygon by line
c(0,5,10,5)" using by gpclib.
library(maptools)
library(gpclib)
x1<-t(structure(c(0,0,10,0,10,10,0,10,0,0),dim=c(2,5))) #
simple square
### method using buffer
min_buffer_dist <- 1e-10 # set minimum value
x2<-t(structure(c(-1,5,11,5+min_buffer_dist,11,5-min_buffer_dist,-1,5),dim=c(2,4)))
# buffered similar line as polygon
# x2<-t(structure(c(-1,5,11,5,11,5,-1,5),dim=c(2,4))) #
this line can't cut square, just vanished.
plot(setdiff(as(x1,"gpc.poly"),as(x2,"gpc.poly"))) # plot
result
Regards.
--- Roger Bivand <Roger.Bivand at nhh.no> wrote:
> On Tue, 30 Oct 2007, Agustin Lobo wrote:
>
> > Is it possible to divide a polygon by a line
> > into 2 polygons?
>
> No, in general. All computational geometry ends up
> in having to deal with
> the type of polygon. A convex polygon is one thing,
> and can be divided
> into two parts, but a general polygon may be
> concave, and the number of
> parts does not have to be two - the line could cross
> it multiple times.
> The approach taken in the Rgshhs function in
> maptools is to overlay a
> rectangular box over the polygon(s), and see what
> comes out, but quite
> often it isn't two (or in that case a single part
> within the rectangle).
>
> Roger
>
> >
> > Agus
> >
>
> --
> Roger Bivand
> Economic Geography Section, Department of Economics,
> Norwegian School of
> Economics and Business Administration, 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
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
More information about the R-sig-Geo
mailing list