Last chance! 50% off unlimited learning
Sale ends in
over(x, y, returnList = FALSE, fn = NULL, ...)
x %over% y
fn
y
is only geometry an object of length length(x)
.
If returnList
is FALSE
, a vector with the (first) index
of y
for each geometry (point, grid cell centre, polygon
or lines) matching x
. if returnList
is TRUE, a list of
length length(x)
, with list element i
the vector of
all indices of the geometries in y
that correspond to the
$i$-th geometry in x
.If y
has attribute data, attribute data are
returned. returnList
is FALSE, a data.frame
with
number of rows equal to length(x)
is returned, if it is
TRUE a list with length(x)
elements is returned, with a list
element the data.frame
elements of all geometries in y
that correspond to that element of x
.
In case the rgeos
over
methods are used,
matching is done by gRelate, which uses DE-9IM
(x
geometry
with the inner and boundary of each y
geometry. The order
in which matched y
geometries are returned is determined by
the dimension of the overlap (2: area overlap, 1: line in common,
0: point in common), and then by the position in the string (1,
2, 4, 5, meaning points in polygons are prefered over points on
polygon boundaries).
vignette("over")
for examples and figures;
point.in.polygon, package gIntersectsr1 = cbind(c(180114, 180553, 181127, 181477, 181294, 181007, 180409,
180162, 180114), c(332349, 332057, 332342, 333250, 333558, 333676,
332618, 332413, 332349))
r2 = cbind(c(180042, 180545, 180553, 180314, 179955, 179142, 179437,
179524, 179979, 180042), c(332373, 332026, 331426, 330889, 330683,
331133, 331623, 332152, 332357, 332373))
r3 = cbind(c(179110, 179907, 180433, 180712, 180752, 180329, 179875,
179668, 179572, 179269, 178879, 178600, 178544, 179046, 179110),
c(331086, 330620, 330494, 330265, 330075, 330233, 330336, 330004,
329783, 329665, 329720, 329933, 330478, 331062, 331086))
r4 = cbind(c(180304, 180403,179632,179420,180304),
c(332791, 333204, 333635, 333058, 332791))
sr1=Polygons(list(Polygon(r1)),"r1")
sr2=Polygons(list(Polygon(r2)),"r2")
sr3=Polygons(list(Polygon(r3)),"r3")
sr4=Polygons(list(Polygon(r4)),"r4")
sr=SpatialPolygons(list(sr1,sr2,sr3,sr4))
srdf=SpatialPolygonsDataFrame(sr, data.frame(cbind(1:4,5:2),
row.names=c("r1","r2","r3","r4")))
data(meuse)
coordinates(meuse) = ~x+y
# plot(meuse)
polygon(r1)
polygon(r2)
polygon(r3)
polygon(r4)
# retrieve mean heavy metal concentrations per polygon:
over(sr, meuse[,1:4], fn = mean)
# return the number of points in each polygon:
sapply(over(sr, geometry(meuse), returnList = TRUE), length)
data(meuse.grid)
coordinates(meuse.grid) = ~x+y
gridded(meuse.grid) = TRUE
over(sr, geometry(meuse))
over(sr, meuse)
over(sr, geometry(meuse), returnList = TRUE)
over(sr, meuse, returnList = TRUE)
over(meuse, sr)
over(meuse, srdf)
# same thing, with grid:
over(sr, meuse.grid)
over(sr, meuse.grid, fn = mean)
over(sr, meuse.grid, returnList = TRUE)
over(meuse.grid, sr)
over(meuse.grid, srdf, fn = mean)
over(as(meuse.grid, "SpatialPoints"), sr)
over(as(meuse.grid, "SpatialPoints"), srdf)
Run the code above in your browser using DataLab