build_lines {spatsoc} | R Documentation |
Build Lines
Description
build_lines
generates a simple feature collection with LINESTRINGs from a
data.table
. The function accepts a data.table
with relocation data,
individual identifiers, a sorting column and a projection
. The relocation
data is transformed into LINESTRINGs for each individual and, optionally,
combination of columns listed in splitBy
. Relocation data should be in two
columns representing the X and Y coordinates.
Usage
build_lines(
DT = NULL,
projection = NULL,
id = NULL,
coords = NULL,
sortBy = NULL,
splitBy = NULL
)
Arguments
DT |
input data.table |
projection |
numeric or character defining the coordinate reference
system to be passed to sf::st_crs. For example, either
|
id |
Character string of ID column name |
coords |
Character vector of X coordinate and Y coordinate column names |
sortBy |
Character string of date time column(s) to sort rows by. Must be a POSIXct. |
splitBy |
(optional) character string or vector of grouping column name(s) upon which the grouping will be calculated |
Details
R-spatial evolution
Please note, spatsoc has followed updates from R spatial, GDAL and PROJ for handling projections, see more at https://r-spatial.org/r/2020/03/17/wkt.html.
In addition, build_lines
previously used sp::SpatialLines but has been
updated to use sf::st_as_sf and sf::st_linestring according to the
R-spatial evolution, see more at
https://r-spatial.org/r/2022/04/12/evolution.html.
Notes on arguments
The projection
argument expects a numeric or character defining the
coordinate reference system.
For example, for UTM zone 36N (EPSG 32736), the projection argument is either
projection = 'EPSG:32736'
or projection = 32736
.
See details in sf::st_crs()
and https://spatialreference.org
for a list of EPSG codes.
The sortBy
argument is used to order the input DT
when creating
sf LINESTRINGs. It must a column in the input DT
of type
POSIXct to ensure the rows are sorted by date time.
The splitBy
argument offers further control building LINESTRINGs.
If in your input DT
, you have multiple temporal groups (e.g.: years) for
example, you can provide the name of the column which identifies them and
build LINESTRINGs for each individual in each year.
build_lines
is used by group_lines
for grouping overlapping
lines generated from relocations.
Value
build_lines
returns an sf LINESTRING object with a line
for each individual (and optionally splitBy
combination).
Individuals (or combinations of individuals and splitBy
) with less than two
relocations are dropped since it requires at least two relocations to
build a line.
See Also
Other Build functions:
build_polys()
Examples
# Load data.table
library(data.table)
# Read example data
DT <- fread(system.file("extdata", "DT.csv", package = "spatsoc"))
# Cast the character column to POSIXct
DT[, datetime := as.POSIXct(datetime, tz = 'UTC')]
# EPSG code for example data
utm <- 32736
# Build lines for each individual
lines <- build_lines(DT, projection = utm, id = 'ID', coords = c('X', 'Y'),
sortBy = 'datetime')
# Build lines for each individual by year
DT[, yr := year(datetime)]
lines <- build_lines(DT, projection = utm, id = 'ID', coords = c('X', 'Y'),
sortBy = 'datetime', splitBy = 'yr')