
Last chance! 50% off unlimited learning
Sale ends in
Geometric unary operations on simple feature geometry sets. These are all generics, with methods for sfg
, sfc
and sf
objects, returning an object of the same class.
st_buffer(x, dist, nQuadSegs = 30)st_boundary(x)
st_convex_hull(x)
st_simplify(x, preserveTopology = FALSE, dTolerance = 0)
st_triangulate(x, dTolerance = 0, bOnlyEdges = FALSE)
st_voronoi(x, envelope, dTolerance = 0, bOnlyEdges = FALSE)
st_polygonize(x)
st_line_merge(x)
st_centroid(x, ..., of_largest_polygon = FALSE)
st_point_on_surface(x)
st_node(x)
st_segmentize(x, dfMaxLength, ...)
object of class sfg
, sfg
or sf
numeric; buffer distance for all, or for each of the elements in x
; in case
dist
is a units
object, it should be convertible to arc_degree
if
x
has geographic coordinates, and to st_crs(x)$units
otherwise
integer; number of segments per quadrant (fourth of a circle)
logical; carry out topology preserving simplification?
numeric; tolerance parameter
logical; if TRUE, return lines, else return polygons
object of class sfc
or sfg
containing a POLYGON
with the envelope for a voronoi diagram; this only takes effect when it is larger than the default envelope, chosen when envelope
is an empty polygon
ignored
logical; for st_centroid
: if TRUE
, return centroid of the largest (sub)polygon of a MULTIPOLYGON
rather than of the whole MULTIPOLYGON
maximum length of a line segment. If x
has geographical coordinates (long/lat), dfMaxLength
is either a numeric expressed in meter, or an object of class units
with length units or unit rad
or degree
; segmentation takes place along the great circle, using st_geod_segmentize.
an object of the same class of x
, with manipulated geometry.
st_triangulate
requires GEOS version 3.4 or above
st_voronoi
requires GEOS version 3.5 or above
in case of st_polygonize
, x
must be an object of class LINESTRING
or MULTILINESTRING
, or an sfc
geometry list-column object containing these
in case of st_line_merge
, x
must be an object of class MULTILINESTRING
, or an sfc
geometry list-column object containing these
st_point_on_surface
returns a point guaranteed to be on the (multi)surface.
st_node
adds nodes to linear geometries at intersections without a node, and only works on individual linear geometries
# NOT RUN {
nc = st_read(system.file("shape/nc.shp", package="sf"))
plot(st_convex_hull(nc))
plot(nc, border = grey(.5))
set.seed(1)
x = st_multipoint(matrix(runif(10),,2))
box = st_polygon(list(rbind(c(0,0),c(1,0),c(1,1),c(0,1),c(0,0))))
if (sf_extSoftVersion()["GEOS"] >= "3.5.0") {
v = st_sfc(st_voronoi(x, st_sfc(box)))
plot(v, col = 0, border = 1, axes = TRUE)
plot(box, add = TRUE, col = 0, border = 1) # a larger box is returned, as documented
plot(x, add = TRUE, col = 'red', cex=2, pch=16)
plot(st_intersection(st_cast(v), box)) # clip to smaller box
plot(x, add = TRUE, col = 'red', cex=2, pch=16)
}
mls = st_multilinestring(list(matrix(c(0,0,0,1,1,1,0,0),,2,byrow=TRUE)))
st_polygonize(st_sfc(mls))
mls = st_multilinestring(list(rbind(c(0,0), c(1,1)), rbind(c(2,0), c(1,1))))
st_line_merge(st_sfc(mls))
plot(nc, axes = TRUE)
plot(st_centroid(nc), add = TRUE, pch = 3)
mp = st_combine(st_buffer(st_sfc(lapply(1:3, function(x) st_point(c(x,x)))), 0.2 * 1:3))
plot(mp)
plot(st_centroid(mp), add = TRUE, col = 'red') # centroid of combined geometry
plot(st_centroid(mp, of_largest_polygon = TRUE), add = TRUE, col = 'blue', pch = 3)
plot(nc, axes = TRUE)
plot(st_point_on_surface(nc), add = TRUE, pch = 3)
(l = st_linestring(rbind(c(0,0), c(1,1), c(0,1), c(1,0), c(0,0))))
st_polygonize(st_node(l))
st_node(st_multilinestring(list(rbind(c(0,0), c(1,1), c(0,1), c(1,0), c(0,0)))))
sf = st_sf(a=1, geom=st_sfc(st_linestring(rbind(c(0,0),c(1,1)))), crs = 4326)
seg = st_segmentize(sf, units::set_units(100, km))
seg = st_segmentize(sf, units::set_units(0.01, rad))
nrow(seg$geom[[1]])
# }
Run the code above in your browser using DataLab