Skip to contents

as_spatvector() turns an existing object into a SpatVector. This is a wrapper of terra::vect() S4 method for signature data.frame.

Usage

as_spatvector(x, ...)

# S3 method for data.frame
as_spatvector(x, ..., geom = c("lon", "lat"), crs = "")

# S3 method for sf
as_spatvector(x, ...)

# S3 method for sfc
as_spatvector(x, ...)

# S3 method for SpatVector
as_spatvector(x, ...)

Arguments

x

A tibble, data frame or sf object of class sf or sfc.

...

additional arguments passed on to terra::vect().

geom

character. The field name(s) with the geometry data. Either two names for x and y coordinates of points, or a single name for a single column with WKT geometries.

crs

A crs on several formats (PROJ.4, WKT, EPSG code, ..) or and spatial object from sf or terra that includes the target coordinate reference system. See pull_crs() and Details.

Value

A SpatVector.

Details

This function differs from terra::vect() on the following:

  • geometries with NA or "" values are removed prior to conversion

  • If x is a grouped data frame (see dplyr::group_by()) the grouping vars are transferred and a "grouped" SpatVector is created (see group_by.SpatVector()).

  • If no crs is provided and the tibble has been created with the method as_tibble.SpatVector(), the crs is inferred from attr(x, "crs").

  • Handles correctly the conversion of EMPTY geometries between sf and terra.

terra equivalent

terra::vect()

See also

pull_crs() for retrieving crs, and the corresponding utils sf::st_crs() and terra::crs().

Coercing objects: as_coordinates(), as_sf(), as_spatraster(), as_tibble.Spat, fortify.Spat

Examples

library(terra)

v <- vect(matrix(1:80, ncol = 2), crs = "EPSG:3857")

v$cat <- sample(LETTERS[1:4], size = nrow(v), replace = TRUE)

v
#>  class       : SpatVector 
#>  geometry    : points 
#>  dimensions  : 40, 1  (geometries, attributes)
#>  extent      : 1, 40, 41, 80  (xmin, xmax, ymin, ymax)
#>  coord. ref. : WGS 84 / Pseudo-Mercator (EPSG:3857) 
#>  names       :   cat
#>  type        : <chr>
#>  values      :     A
#>                    C
#>                    D

# Create tibble
as_tbl <- as_tibble(v, geom = "WKT")

as_tbl
#> # A tibble: 40 × 2
#>    cat   geometry     
#>    <chr> <chr>        
#>  1 A     POINT (1 41) 
#>  2 C     POINT (2 42) 
#>  3 D     POINT (3 43) 
#>  4 C     POINT (4 44) 
#>  5 A     POINT (5 45) 
#>  6 B     POINT (6 46) 
#>  7 C     POINT (7 47) 
#>  8 C     POINT (8 48) 
#>  9 C     POINT (9 49) 
#> 10 D     POINT (10 50)
#> # ℹ 30 more rows

# From tibble
newvect <- as_spatvector(as_tbl, geom = "geometry", crs = "EPSG:3857")
newvect
#>  class       : SpatVector 
#>  geometry    : points 
#>  dimensions  : 40, 1  (geometries, attributes)
#>  extent      : 1, 40, 41, 80  (xmin, xmax, ymin, ymax)
#>  coord. ref. : WGS 84 / Pseudo-Mercator (EPSG:3857) 
#>  names       :   cat
#>  type        : <chr>
#>  values      :     A
#>                    C
#>                    D