| joinPolys {PBSmapping} | R Documentation | 
Joins one or two PolySets using a logic operation.
joinPolys (polysA, polysB = NULL, operation = "INT", maxVert = 1e+05)
polysA | 
PolySet to join. | 
polysB | 
optional second PolySet with which to join. | 
operation | 
one of "DIFF", "INT", "UNION",
or "XOR", representing difference, intersection, union, and
exclusive-or, respectively. | 
maxVert | 
estimated maximum number of vertices in the output PolySet. | 
This function interfaces with the General Polygon Clipper library (http://www.cs.man.ac.uk/aig/staff/alan/software/) produced by Alan Murta at the University of Manchester. Consequently, we adopt some of his terminology in the details below.
Murta (2004) defines a generic polygon (or polygon set)
as zero or more disjoint boundaries of arbitrary configuration.  He
relates a boundary to a contour, where each may be convex,
concave or self-intersecting. In a PolySet, the polygons associated
with each unique PID loosely correspond to a generic polygon,
as they can represent both inner and outer boundaries.  Our use of the
term generic polygon includes the restrictions imposed by a
PolySet.  For example, the polygons for a given PID cannot
be arranged arbitrarily.
If polysB is NULL, this function sequentially applies
the operation between the generic polygons in polysA.
For example, suppose polysA contains three generic polygons (A,
B, C).  The function outputs the PolySet containing ((A op B)
op C).
If polysB is not NULL, this function applies
operation between each generic polygon in polysA and
each one in polysB.  For example, suppose polysA
contains two generic polygons (A, B) and polysB contains two
generic polygons (C, D).  The function's output is the concatenation
of A op C, B op C, A op D, B op D, with
PIDs 1 to 4, respectively.  Generally there are n
times m comparisons, where n = number of polygons in
polysA and m = number of polygons in polysB.  If
polysB contains only one generic polygon, the function
maintains the PIDs from polysA.  It also maintains them
when polysA contains only one generic polygon and the
operation is difference.  Otherwise, if polysA contains
only one generic polygon, it maintains the PIDs from
polysB.
If polysB is NULL, the resulting PolySet contains
a single generic polygon (one PID), possibly with several
components (SIDs).  The function recalculates the PID
and SID columns.
If polysB is not NULL, the resulting PolySet
contains one or more generic polygons (PIDs), each with
possibly several components (SIDs).  The function recalculates
the SID column, and depending on the input, it may recalculate
the PID column.
Murta, A.  2004.  A general polygon clipping library.  Accessed: July
29, 2004.
http://www.cs.man.ac.uk/aig/staff/alan/software/gpc.html
addPolys,
appendPolys,
clipPolys,
closePolys,
fixBound,
fixPOS,
locatePolys,
plotMap,
plotPoints,
thickenPolys,
thinPolys.
#--- load the data (if using R) if (!is.null(version$language) && (version$language == "R")) data(nepacLL) #--- create a triangle to use in clipping polysB <- data.frame(PID=rep(1, 3), POS=1:3, X=c(-127.5, -124.5, -125.6), Y = c(49.2, 50.3, 48.6)) #--- intersect nepacLL with the single polygon, and plot the result plotMap(joinPolys(nepacLL, polysB), col=5) #--- add nepacLL in a different line type to emphasize the intersection addPolys(nepacLL, border=2, lty=8, density=0)