R: Get, set, or replace geometry from an sf object

st_geometry {sf} | R Documentation

## Get, set, or replace geometry from an sf object

### Description

Get, set, or replace geometry from an sf object

### Usage

    ## S3 method for class 'sfc'
    st_geometry(obj, ...)

    st_geometry(obj, ...)

    ## S3 method for class 'sf'
    st_geometry(obj, ...)

    ## S3 method for class 'sfc'
    st_geometry(obj, ...)

    ## S3 method for class 'sfg'
    st_geometry(obj, ...)

    st_geometry(x) <- value

    st_set_geometry(x, value)

    st_drop_geometry(x)

### Arguments

`obj` | object of class `sf` or `sfc`
`...` | ignored
`x` | object of class `data.frame`
`value` | object of class `sfc`, or `character`

### Details

when applied to a `data.frame` and when `value` is an object of class `sfc`, `st_set_geometry` and `st_geometry<-` will first check for the existence of an attribute `sf_column` and overwrite that, or else look for list-columns of class `sfc` and overwrite the first of that, or else write the geometry list-column to a column named `geometry`. In case `value` is character and `x` is of class `sf`, the "active" geometry column is set to `x[[value]]`.

the replacement function applied to `sf` objects will overwrite the geometry list-column, if `value` is `NULL`, it will remove it and coerce `x` to a `data.frame`.

`st_drop_geometry` drops the geometry of its argument, and reclasses it accordingly

### Value

st_geometry returns an object of class sfc, a list-column with geometries

`st_geometry` returns an object of class sfc. Assigning geometry to a `data.frame` creates an sf object, assigning it to an sf object replaces the geometry list-column.

### Examples

    df = data.frame(a = 1:2)
    sfc = st_sfc(st_point(c(3,4)), st_point(c(10,11)))
    st_geometry(sfc)
    st_geometry(df) <- sfc
    class(df)
    st_geometry(df)
    st_geometry(df) <- sfc # replaces
    st_geometry(df) <- NULL # remove geometry, coerce to data.frame
    sf <- st_set_geometry(df, sfc) # set geometry, return sf
    st_set_geometry(sf, NULL) # remove geometry, coerce to data.frame

[Package sf version 0.9-7 Index]