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 class 'data.frame'
as_spatvector(x, ..., geom = c("lon", "lat"), crs = "")
# S3 method for class 'sf'
as_spatvector(x, ...)
# S3 method for class 'sfc'
as_spatvector(x, ...)
# S3 method for class 'SpatVector'
as_spatvector(x, ...)
Arguments
- x
- ...
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.
Details
This function differs from terra::vect()
on the following:
geometries with
NA
or""
values are removed prior to conversionIf
x
is a grouped data frame (seedplyr::group_by()
) the grouping vars are transferred and a "grouped"SpatVector
is created (seegroup_by.SpatVector()
).If no
crs
is provided and the tibble has been created with the methodas_tibble.SpatVector()
, thecrs
is inferred fromattr(x, "crs")
.Handles correctly the conversion of
EMPTY
geometries between sf and terra.
terra equivalent
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