findCells | R Documentation |
Find the grid cells in a PolySet that contain events specified in
EventData. Similar to findPolys
, except this
function requires a PolySet resulting from
makeGrid
. This restriction allows this function to
calculate the result with greater efficiency.
findCells (events, polys, includeBdry=NULL)
events |
EventData to use. |
polys |
PolySet to use. |
includeBdry |
numeric: determines how points on boundaries are handled: |
The resulting data frame, a LocationSet, contains the columns
EID
, PID
, SID
(if in polys
), and
Bdry
, where an event (EID
) occurs in a polygon
(PID
, SID
). The Boolean (0,1) variable Bdry
indicates
whether an event lies on a polygon's edge. Note that if an event lies
properly outside of all the polygons, then a record with (EID
,
PID
, SID
) does not occur in the output. It may happen,
however, that an event occurs in multiple polygons (i.e., on two or
more boundaries). Thus, the same EID
can occur more than once
in the output.
If an event happens to lie at the boundary intersection of four (or two) grid cells
then one EID
will be associated with four (or two) grid cells. A user
can choose to manipulate this result by setting the argument includeBdry
to a numeric value that constrains the association of a boundary event to
0 or 1 grid cell (see argument description above).
LocationSet that links events with polygons.
Nicholas M. Boers, Staff Software Engineer
Jobber, Edmonton AB
Last modified Rd: 2014-12-15
findPolys
,
makeGrid
,
combineEvents
,
locateEvents
,
locatePolys
,
LocationSet.
local(envir=.PBSmapEnv,expr={
oldpar = par(no.readonly=TRUE)
#--- create some EventData: points in a diagonal line
events <- data.frame(EID=1:11, X=seq(0, 2, length=11),
Y=seq(0, 2, length=11))
events <- as.EventData(events, projection=1);
#--- create a PolySet (a grid)
polys <- makeGrid (x=seq(0, 2, by=0.50), y=seq(0, 2, by=0.50), projection=1)
#--- show a picture
plotPolys(polys, xlim=range(polys$X)+c(-0.1, 0.1),
ylim=range(polys$Y)+c(-0.1, 0.1), projection=1)
addPoints(events, col=2)
#--- run findCells and print the results
fc <- findCells(events, polys)
fc <- fc[order(fc$EID, fc$PID, fc$SID), ]
fc$label <- paste(fc$PID, fc$SID, sep=", ")
print (fc)
#--- add labels to the graph
addLabels(as.PolyData(fc[!duplicated(paste(fc$PID,fc$SID)), ],
projection=1), placement="CENTROID",
polys=as.PolySet(polys, projection=1), col=4)
par(oldpar)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.