Last chance! 50% off unlimited learning
Sale ends in
Geometric binary predicates on pairs of simple feature geometry sets
st_intersects(x, y, sparse = TRUE, prepared = TRUE)st_disjoint(x, y = x, sparse = TRUE, prepared = TRUE)
st_touches(x, y, sparse = TRUE, prepared = TRUE)
st_crosses(x, y, sparse = TRUE, prepared = TRUE)
st_within(x, y, sparse = TRUE, prepared = TRUE)
st_contains(x, y, sparse = TRUE, prepared = TRUE)
st_contains_properly(x, y, sparse = TRUE, prepared = TRUE)
st_overlaps(x, y, sparse = TRUE, prepared = TRUE)
st_equals(x, y, sparse = TRUE, prepared = FALSE)
st_covers(x, y, sparse = TRUE, prepared = TRUE)
st_covered_by(x, y, sparse = TRUE, prepared = TRUE)
st_equals_exact(x, y, par, sparse = TRUE, prepared = FALSE)
st_is_within_distance(x, y, dist, sparse = TRUE, prepared = FALSE)
object of class sf
, sfc
or sfg
object of class sf
, sfc
or sfg
logical; should a sparse index list be returned (TRUE) or a dense logical matrix? See below.
logical; prepare geometry for x, before looping over y?
numeric; parameter used for "equals_exact" (margin);
distance threshold; geometry indexes with distances smaller or equal to this value are returned; numeric value or units value having distance units.
if sparse=FALSE
, st_predicate
(with predicate
e.g. "intersects") returns a dense logical matrix with element i,j
TRUE
when predicate(x[i], y[j])
(e.g., when geometry i and j intersect); if sparse=TRUE
, a sparse list representation of the same matrix, with list element i
a numeric vector with the indices j for which predicate(x[i],y[j])
is TRUE
(and hence integer(0)
if none of them is TRUE
). From the dense matrix, one can find out if one or more elements intersect by apply(mat, 1, any)
, and from the sparse list by lengths(lst) > 0
, see examples below.
for most predicates, a spatial index is built on argument x
; see http://r-spatial.org/r/2017/06/22/spatial-index.html
`st_contains_properly(A,B)` is true if A intersects B's interior, but not its edges or exterior; A contains A, but A does not properly contain A.
See also st_relate and https://en.wikipedia.org/wiki/DE-9IM for a more detailed description of the underlying algorithms.
st_equals_exact
returns true for two geometries of the same type and their vertices corresponding by index are equal up to a specified tolerance.
st_is_within_distance
returns a sparse matrix only, and can only be used for non-geographic (Cartesian) coordinates; use st_distance(x,y) <= dist
to obtain the corresponding dense logical matrix.
# NOT RUN {
pts = st_sfc(st_point(c(.5,.5)), st_point(c(1.5, 1.5)), st_point(c(2.5, 2.5)))
pol = st_polygon(list(rbind(c(0,0), c(2,0), c(2,2), c(0,2), c(0,0))))
(lst = st_intersects(pts, pol))
(mat = st_intersects(pts, pol, sparse = FALSE))
# which points fall inside a polygon?
apply(mat, 1, any)
lengths(lst) > 0
# which points fall inside the first polygon?
st_intersects(pol, pts)[[1]]
# }
Run the code above in your browser using DataLab