[R] How to draw holes generated by gpclib using plot function
Ross Ihaka
ihaka at stat.auckland.ac.nz
Tue May 11 09:40:15 CEST 2004
Hisaji ONO wrote:
> Hi.
>
> I've tried to create a polygon with one hole by gpclib using following
> example script.
>
> holepoly <- read.polyfile(system.file("poly-ex/hole-poly.txt", package
> ="gpclib"), nohole = FALSE)
> area.poly(holepoly)
> plot(holepoly,poly.args=list(col="red",border="blue"))
>
> And I noticed plot function couldn't draw polygons with holes correctly.
>
> Does anyone know how to solve this situation?
This is basic constraint in the R graphics system. Polygons must
consist of a single (possibly self-intersecting) ring. It would be
possible to implement a primitive which is bounded by several
non-intersecting rings by joining the interior holes to the outer
boundary to create a simply connected shape. Then you could draw
the interior with the existing polygon primitive. You can find a
more precise description of the process in the FIST (fast
industrial-strength triangulation) paper:
M. Held (2001):
``FIST: Fast Industrial-Strength Triangulation of Polygons''.
Algorithmica 30(4): 563-596, 2001.
It would be VERY useful to have an implementation of this (hint, hint!)
Alternatively, I think that gpc has an option to return a triangulated
version of the polygon. If you get hold of this you could just draw the
triangles. though this might be slow for complex polygons.
--
Ross Ihaka Email: ihaka at stat.auckland.ac.nz
Department of Statistics Phone: (64-9) 373-7599 x 85054
University of Auckland Fax: (64-9) 373-7018
Private Bag 92019, Auckland
New Zealand
More information about the R-help
mailing list