# st_cast

From sf v0.9-5
0th

Percentile

##### Cast geometry to another type: either simplify, or cast explicitly

Cast geometry to another type: either simplify, or cast explicitly

##### Usage
# S3 method for MULTIPOLYGON
st_cast(x, to, ...)# S3 method for MULTILINESTRING
st_cast(x, to, ...)# S3 method for MULTIPOINT
st_cast(x, to, ...)# S3 method for POLYGON
st_cast(x, to, ...)# S3 method for LINESTRING
st_cast(x, to, ...)# S3 method for POINT
st_cast(x, to, ...)# S3 method for GEOMETRYCOLLECTION
st_cast(x, to, ...)# S3 method for CIRCULARSTRING
st_cast(x, to, ...)# S3 method for MULTISURFACE
st_cast(x, to, ...)# S3 method for COMPOUNDCURVE
st_cast(x, to, ...)# S3 method for MULTICURVE
st_cast(x, to, ...)# S3 method for CURVE
st_cast(x, to, ...)st_cast(x, to, ...)# S3 method for sfc
st_cast(x, to, ..., ids = seq_along(x), group_or_split = TRUE)# S3 method for sf
st_cast(x, to, ..., warn = TRUE, do_split = TRUE)# S3 method for sfc_CIRCULARSTRING
st_cast(x, to, ...)
##### Arguments
x

object of class sfg, sfc or sf

to

character; target type, if missing, simplification is tried; when x is of type sfg (i.e., a single geometry) then to needs to be specified.

...

ignored

ids

integer vector, denoting how geometries should be grouped (default: no grouping)

group_or_split

logical; if TRUE, group or split geometries; if FALSE, carry out a 1-1 per-geometry conversion.

warn

logical; if TRUE, warn if attributes are assigned to sub-geometries

do_split

logical; if TRUE, allow splitting of geometries in sub-geometries

##### Details

the st_cast method for sf objects can only split geometries, e.g. cast MULTIPOINT into multiple POINT features. In case of splitting, attributes are repeated and a warning is issued when non-constant attributes are assigned to sub-geometries. To merge feature geometries and attribute values, use aggregate or summarise.

##### Value

object of class to if successful, or unmodified object if unsuccessful. If information gets lost while type casting, a warning is raised.

In case to is missing, st_cast.sfc will coerce combinations of "POINT" and "MULTIPOINT", "LINESTRING" and "MULTILINESTRING", "POLYGON" and "MULTIPOLYGON" into their "MULTI..." form, or in case all geometries are "GEOMETRYCOLLECTION" will return a list of all the contents of the "GEOMETRYCOLLECTION" objects, or else do nothing. In case to is specified, if to is "GEOMETRY", geometries are not converted, else, st_cast will try to coerce all elements into to; ids may be specified to group e.g. "POINT" objects into a "MULTIPOINT", if not specified no grouping takes place. If e.g. a "sfc_MULTIPOINT" is cast to a "sfc_POINT", the objects are split, so no information gets lost, unless group_or_split is FALSE.

##### Aliases
• st_cast
• st_cast.MULTIPOLYGON
• st_cast.MULTILINESTRING
• st_cast.MULTIPOINT
• st_cast.POLYGON
• st_cast.LINESTRING
• st_cast.POINT
• st_cast.GEOMETRYCOLLECTION
• st_cast.CIRCULARSTRING
• st_cast.MULTISURFACE
• st_cast.COMPOUNDCURVE
• st_cast.MULTICURVE
• st_cast.CURVE
• st_cast.sfc
• st_cast.sf
• st_cast.sfc_CIRCULARSTRING
##### Examples
# NOT RUN {
mpl <- nc$geometry[[4]] #st_cast(x) ## error 'argument "to" is missing, with no default' cast_all <- function(xg) { lapply(c("MULTIPOLYGON", "MULTILINESTRING", "MULTIPOINT", "POLYGON", "LINESTRING", "POINT"), function(x) st_cast(xg, x)) } st_sfc(cast_all(mpl)) ## no closing coordinates should remain for multipoint any(duplicated(unclass(st_cast(mpl, "MULTIPOINT")))) ## should be FALSE ## number of duplicated coordinates in the linestrings should equal the number of polygon rings ## (... in this case, won't always be true) sum(duplicated(do.call(rbind, unclass(st_cast(mpl, "MULTILINESTRING")))) ) == sum(unlist(lapply(mpl, length))) ## should be TRUE p1 <- structure(c(0, 1, 3, 2, 1, 0, 0, 0, 2, 4, 4, 0), .Dim = c(6L, 2L)) p2 <- structure(c(1, 1, 2, 1, 1, 2, 2, 1), .Dim = c(4L, 2L)) st_polygon(list(p1, p2)) mls <- st_cast(nc$geometry[[4]], "MULTILINESTRING")
st_sfc(cast_all(mls))
mpt <- st_cast(nc$geometry[[4]], "MULTIPOINT") st_sfc(cast_all(mpt)) pl <- st_cast(nc$geometry[[4]], "POLYGON")
st_sfc(cast_all(pl))
ls <- st_cast(nc$geometry[[4]], "LINESTRING") st_sfc(cast_all(ls)) pt <- st_cast(nc$geometry[[4]], "POINT")
## st_sfc(cast_all(pt))  ## Error: cannot create MULTIPOLYGON from POINT
st_sfc(lapply(c("POINT", "MULTIPOINT"), function(x) st_cast(pt, x)))
s = st_multipoint(rbind(c(1,0)))
st_cast(s, "POINT")
# }

Documentation reproduced from package sf, version 0.9-5, License: GPL-2 | MIT + file LICENSE

### Community examples

Looks like there are no examples yet.