Package Trip': October 28, 2020
Package Trip': October 28, 2020
Package Trip': October 28, 2020
URL https://github.com/Trackage/trip
BugReports https://github.com/Trackage/trip/issues
NeedsCompilation no
ByteCompile yes
License GPL-3
LazyData yes
VignetteBuilder knitr
RoxygenNote 7.1.1
Encoding UTF-8
Language en-US
Author Michael D. Sumner [aut, cre],
Sebastian Luque [ctb],
Anthony Fischbach [ctb],
Tomislav Hengl [ctb]
1
2 R topics documented:
R topics documented:
trip-package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
adjust.duplicateTimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
argos.sigma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
as.Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
as.trip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
cut.trip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
filter_penSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
forceCompliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
homedist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
interp_equal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
makeGridTopology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
oc.theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
rasterize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
readArgos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
reproj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
sda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
sepIdGaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
speedfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
TimeOrderedRecords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
TimeOrderedRecords-class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
trackAngle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
trackDistance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
trip-accessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
trip-class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
trip-methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
trip.split.exact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
tripGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
tripGrid.interp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
walrus818 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
world_north . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
write_track_kml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Index 36
trip-package 3
trip-package trip.
Description
Functions for accessing and manipulating spatial data for animal tracking, with straightforward
coercion from and to other formats. Filter for speed and create time spent maps from animal track
data. There are coercion methods to convert between ’trip’ and ’ltraj’ from ’adehabitatLT’, and
between ’trip’ and ’psp’ and ’ppp’ from ’spatstat’. Trip objects can be created from raw or grouped
data frames, and from types in the ’sp’, ’sf’, ’amt’, ’trackeR’, and other packages.
Description
Duplicated DateTime values within ID are adjusted forward (recursively) by one second until no
duplicates are present. This is considered reasonable way of avoiding the nonsensical problem of
duplicate times.
Usage
adjust.duplicateTimes(time, id)
Arguments
time vector of DateTime values
id vector of ID values, matching DateTimes that are assumed sorted within ID
Details
This function is used to remove duplicate time records in animal track data, rather than removing
the record completely.
Value
The adjusted DateTime vector is returned.
Warning
I have no idea what goes on at CLS when they output data that are either not ordered by time or
have duplicates. If this problem exists in your data it’s probably worth finding out why.
See Also
readArgos
4 argos.sigma
Examples
Description
Assign numeric values for Argos "class" by matching the levels available to given numbers. An
adjustment is made to allow sigma to be specified in kilometres, and the values returned are the
approximate values for longlat degrees. It is assumed that the levels are part of an "ordered" factor
from least precise to most precise.
Usage
argos.sigma(x, sigma = c(100, 80, 50, 20, 10, 4, 2), adjust = 111.12)
Arguments
Details
Value
Examples
cls <- ordered(sample(c("Z", "B", "A", "0", "1", "2", "3"), 30,
replace=TRUE),
levels=c("Z", "B", "A", "0", "1", "2", "3"))
argos.sigma(cls)
Description
Usage
explode(x, ...)
Arguments
X trip object.
... reserved for future methods
fatal Logical value, see Details of as.ppp
x trip object
from see as.psp for that method.
to See as.psp.
6 as.trip
Value
ppp object
psp object
SpatialLinesDataFrame
SpatialLinesDataFrame object with each individual line segment identified by start/end time and
trip ID
Examples
## Not run:
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
as(tr, "ppp")
## End(Not run)
## Not run:
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
as.psp.trip(tr)
## End(Not run)
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
Description
Coercing objects to trip class
Usage
as.trip(x, ...)
cut.trip 7
Arguments
x, ltr ltraj object
... Arguments passed to other methods. Ignored for ltraj method.
Methods
coerce signature(from="ltraj",to="trip")
as.trip signature(x="ltraj")
Examples
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
if (require(adehabitatLT)) {
##l <- as.ltraj.trip(tr)
##ltraj2trip(l)
##as.trip(l)
}
Description
Split trip events within a single object into exact time boundaries, adding interpolated coordinates
as required.
Usage
## S3 method for class 'trip'
cut(x, breaks, ...)
Arguments
x A trip object.
breaks A character string such as the breaks argument for cut.POSIXt, or alternatively
a vector of date-time boundaries. (If the latter these must encompass all the time
range of the entire trip object.)
... Unused arguments.
Details
Motion between boundaries is assumed linear and extra coordinates are added at the cut points.
This function was completely rewritten in version 1.1-20.
8 cut.trip
Value
A list of trip objects, named by the time boundary in which they lie.
Author(s)
Michael D. Sumner and Sebastian Luque
See Also
See also tripGrid.
Examples
## Not run:
set.seed(66)
d <- data.frame(x=1:100, y=rnorm(100, 1, 10),
tms= as.POSIXct(as.character(Sys.time()), tz = "GMT") + c(seq(10, 1000, length=50),
seq(100, 1500, length=50)), id=gl(2, 50))
sp::coordinates(d) <- ~x+y
tr <- trip(d, c("tms", "id"))
par(op)
print("you may need to resize the window to see the grid data")
par(op)
print("you may need to resize the window to see the grid data")
## End(Not run)
Description
Usage
Arguments
tr A trip object.
lambda Smoothing parameter, see Details.
first Fix the first location and prevent it from being updated by the filter.
last Fix the last location and prevent it from being updated by the filter.
... Arguments passed on to nlm
Details
Destructive filters such as speedfilter can be recast using a penalty smoothing approach in the
style of Green and Silverman (1994).
This filter works by penalizing the fit of the smoothed track to the observed locations by the sum of
squared velocities. That is, we trade off goodness of fit against increasing the total sum of squared
velocities.
When lambda=0 the smoothed track reproduces the raw track exactly. Increasing lambda favours
tracks requiring less extreme velocities, at the expense of reproducing the original locations.
Value
A trip object with updated coordinate values based on the filter - all the data, including original
coordinates which are maintained in the trip data frame.
Author(s)
Simon Wotherspoon and Michael Sumner
References
Green, P. J. and Silverman, B. W. (1994). Nonparametric regression and generalized linear models:
a roughness penalty approach. CRC Press.
See Also
speedfilter
Examples
tr <- new("trip",
SpatialPointsDataFrame(cbind(lon, lat),
data.frame(gmt=tms, id="lbb")),
TimeOrderedRecords(c("gmt", "id")))
plot(tr)
lines(trf)
## End(Not run)
forceCompliance Function to ensure dates and times are in order with trip ID
Description
A convenience function, that removes duplicate rows, sorts by the date-times within ID, and re-
moves duplicates from a data frame or SpatialPointsDataFrame.
Usage
forceCompliance(x, tor)
12 homedist
Arguments
x data.frame or SpatialPointsDataFrame-class
tor character vector of names of date-times and trip ID columns
Value
data.frame or SpatialPointsDataFrame-class.
Note
It’s really important that data used are of a given quality, but this function makes the most common
trip problems easy to apply.
See Also
trip
Description
This function returns a distance from a given ’home’ coordinate for each individual trip. Use the
home argument to provide a single, common 2-element (x,y or lon,lat) coordinate. If home is NULL
(the default), then each individual trip’s first location is used.
Usage
homedist(x, home = NULL)
Arguments
x trip object
home see details
Value
numeric vector of distances in km (for longlat), or in the units of the trip’s projection
See Also
spDistsN1
interp_equal 13
Description
Calculate great circle intermediate points on longitude, latitude input vectors. A spherical model is
used, from the geosphere package.
Usage
interp_equal(x, distance = NULL, duration = NULL)
Arguments
x trip object
distance optional minimum distance (metres) between interpolated points
duration optional minimum duration (seconds) between interpolated points
Details
For the result to be sensible, the input must either be in longitude/latitude, or be in a projection
and have a valid CRS. Great circle movement is assumed, there’s no way to use this to interpolate
equal-distance in the native projection.
If no input distance or duration is provided a default is used of 15 points between each input
point.
if both distance AND duration is provided, distance is ignored.
Note, the original implementation of this function was called ’interpequal()’, and was used for time
spent calculations. The functionality is now provided by the traipse package.
Description
Sensible defaults are assumed, to match the extents of data to a manageable grid.
Usage
makeGridTopology(
obj,
cells.dim = c(100, 100),
xlim = NULL,
ylim = NULL,
buffer = 0,
cellsize = NULL,
adjust2longlat = FALSE
)
14 oc.theme
Arguments
obj any Spatial object, or other object for which bbox will work
cells.dim the number of cells of the grid, x then y
xlim x limits of the grid
ylim y limits of the grid
buffer proportional size of the buffer to add to the grid limits
cellsize pixel cell size
adjust2longlat assume cell size is in kilometres and provide simple adjustment for earth-radius
cells at the north-south centre of the grid
Details
Approximations for kilometres in longlat can be made using cellsize and adjust2longlat.
Description
Generate ocean colour colours, using the SeaWiFS scheme
Usage
oc.theme(x = 50)
oc.colors(n)
Arguments
x Number of colours to generate as part of a theme
n Number of colours to generate
Details
This is a high-contrast palette, log-scaled originally for ocean chlorophyll.
Value
A set of colours or a theme object.
See Also
Similar functions in sp spplot, bpy.colors
rasterize 15
Examples
## Not run:
oc.colors(10)
library(lattice)
trellis.par.set(oc.theme())
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
tg <- tripGrid(tr)
spplot(tg)
## End(Not run)
Description
Trip rasterize.
Arguments
x trip object
y Raster* object
field attribute from which differences will be calculated, defaults to the time-stamp
between trip locations
Value
RasterLayer
Examples
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
rasterize(tr, grid = r)
rasterize(tr, r, field = "temp")
## Not run:
16 readArgos
library(raster)
r2 <- aggregate(r, fact = 4)
rasterize(tr, grid = r2)
rasterize(tr, method = "density")
rasterize(tr, method = "density", grid = r2)
rasterize(tr, r2, field = "temp")
rasterize(tr, r2, field = "tms")
rasterize(tr, r2)
## End(Not run)
Description
Return a (Spatial) data frame of location records from raw Argos files. Multiple files may be read,
and each set of records is appended to the data frame in turn. Basic validation of the data is enforced
by default.
Usage
readArgos(
x,
correct.all = TRUE,
dtFormat = "%Y-%m-%d %H:%M:%S",
tz = "GMT",
duplicateTimes.eps = 0.01,
p4 = "+proj=longlat +ellps=WGS84",
verbose = FALSE,
read_alt = NULL,
...
)
Arguments
x vector of file names of Argos "DAT" or "DIAG" files.
correct.all logical - enforce validity of data as much as possible? (see Details)
readArgos 17
dtFormat the DateTime format used by the Argos data "date" and "time" pasted together
tz timezone - GMT/UTC is assumed
duplicateTimes.eps
what is the tolerance for times being duplicate?
p4 PROJ.4 projection string, "+proj=longlat +ellps=WGS84" is assumed
verbose if TRUE, details on date-time adjustment is reported
read_alt is NULL by default, with longitude and latitude read from the PRV message, if
1 or 2 then attempt is made to read the alternative locations (but these are not
always present)
... reserved for future use
return_trip for readDiag() if TRUE will return a trip object, use read_alt to control the
location
Details
readArgos performs basic validation checks for class trip are made, and enforced based on
correct.all:
No duplicate records in the data, these are simply removed. Records are ordered by DateTime
("date", "time", "gmt") within ID ("ptt"). No duplicate DateTime values within ID are allowed: to
enforce this the time values are moved forward by one second - this is done recursively and is not
robust.
If validation fails the function will return a SpatialPointsDataFrame-class. Files that are not
obviously of the required format are skipped.
Argos location quality data "class" are ordered, assuming that the available levels is levels=c("Z","B","A","0","1","2","
A projection string is added to the data, assuming the PROJ.4 longlat - if any longitudes are greater
than 360 the PROJ.4 argument "+over" is added.
readDiag simply builds a data.frame.
With read_alt the default value NULL returns the PRV location as-is. Some files may have a
standardized location, and a dummy. If read_alt is set to 1 or 2 the corresponding "alternative"
location is returned. 1 is a standardized location corresponding to the original PRV message, and 2
is a "dummy" location.
Value
readArgos returns a trip object, if all goes well, or simply a SpatialPointsDataFrame-class.
readDiag returns a data.frame with 8 columns:
Warning
This works on some Argos files I have seen.
References
The Argos data documentation was (ca. 2003) at http://www.argos-system.org/manual. Specific de-
tails on the PRV ("provide data") format were found in Chapter 4_4_8, originally at ’http://www.cls.fr/manuel/html/chap4/cha
See Also
trip, SpatialPointsDataFrame-class, adjust.duplicateTimes, for manipulating these data,
and argos.sigma for relating a numeric value to Argos quality "classes".
sepIdGaps for splitting the IDs in these data on some minimum gap.
order, duplicated, , ordered for general manipulation of this type.
Examples
argosfile <-
system.file("extdata/argos/98feb.dat", package = "trip", mustWork = TRUE)
argos <- readArgos(argosfile)
reproj Reprojection
Description
A reproj method for trip objects.
Usage
## S3 method for class 'trip'
reproj(x, target, ..., source = NULL)
Arguments
x trip object
target target projection
... ignored
source projection of source data, usually ignore this for trips
Value
a trip reprojected to ’target’
sda 19
Description
Create a filter index of a track for "bad" points with a combination of speed, distance and angle
tests.
Usage
sda(x, smax, ang = c(15, 25), distlim = c(2.5, 5), pre = NULL)
Arguments
x trip object
smax maximum speed, in km/h
ang minimum turning angle/s in degrees
distlim maximum step lengths in km
pre include this filter in the removal
Details
This is an independent implementation from that in the package argosfilter by Freitas 2008.
Value
logical vector, with FALSE values where the tests failed
References
Freitas, C., Lydersen, C., Fedak, M. A. and Kovacs, K. M. (2008), A simple new algorithm to filter
marine mammal Argos locations. Marine Mammal Science, 24: 315?V325. doi: 10.1111/j.1748-
7692.2007.00180.x
Description
A new set of ID levels can be created by separating those given based on a minimum gap in another
set of data. This is useful for separating instruments identified only by their ID into separate events
in time.
20 speedfilter
Usage
sepIdGaps(id, gapdata, minGap = 3600 * 24 * 7)
Arguments
id existing ID levels
gapdata data matching id with gaps to use as separators
minGap the minimum "gap" to use in gapdata to create a new ID level
Details
The assumption is that a week is a long time for a tag not to record anything.
Value
A new set of ID levels, named following the pattern that "ID" split into 3 would provided "ID",
"ID\_2" and "ID\_3".
Warning
It is assumed that each vector provides is sorted by gapdata within id. No checking is done, and
so it is suggested that this only be used on ID columns within existing, validated trip objects.
See Also
trip
Examples
id <- gl(2, 8)
gd <- Sys.time() + 1:16
gd[c(4:6, 12:16)] <- gd[c(4:6, 12:16)] + 10000
sepIdGaps(id, gd, 1000)
Description
Create a filter of a track for "bad" points implying a speed of motion that is unrealistic.
Usage
speedfilter(x, max.speed = NULL, test = FALSE)
speedfilter 21
Arguments
x trip object
max.speed speed in kilometres (or other unit) per hour, the unit is kilometres if the trip is in
longitude latitude coordinates, or in the unit of the projection projection (usually
metres per hour)
test cut the algorithm short and just return first pass
Details
Using an algorithm (McConnnell et al., 1992), points are tested for speed between previous / next
and 2nd previous / next points. Contiguous sections with an root mean square speed above a given
maximum have their highest rms point removed, then rms is recalculated, until all points are below
the maximum. By default an (internal) root mean square function is used, this can be specified by
the user.
If the coordinates of the trip data are not projected, or NA the distance calculation assumes longlat
and kilometres (great circle). For projected coordinates the speed must match the units of the
coordinate system. (The PROJ.4 argument "units=km" is suggested).
Value
Logical vector matching positions in the coordinate records that pass the filter.
Warning
This algorithm is destructive, and provides little information about location uncertainty. It is pro-
vided because it’s commonly used and provides an illustrative benchmark for further work.
It is possible for the filter to become stuck in an infinite loop, depending on the function passed to
the filter. Several minutes is probably too long for hundreds of points, test on smaller sections if
unsure.
Note
This algorithm was originally taken from IDL code by David Watts at the Australian Antarctic
Division, and used in various other environments before the development of this version.
Author(s)
David Watts and Michael D. Sumner
References
The algorithm comes from McConnell, B. J. and Chambers, C. and Fedak, M. A. (1992) Foraging
ecology of southern elephant seals in relation to the bathymetry and productivity of the southern
ocean. Antarctic Science 4 393-398
See Also
sda for a fast distance angle filter to combine with speed filtering
22 TimeOrderedRecords-class
TimeOrderedRecords TimeOrderedRecords
Description
Object to identify DateTimes and IDs in a Spatial object.
Usage
TimeOrderedRecords(x)
Arguments
x Character vector of 2 elements specifying the data columns of DateTimes and
IDs
Value
TimeOrderedRecords holds a 2-element character vector, naming the data columns of DateTimes
and IDs.
Examples
##' tor <- TimeOrderedRecords(c("datetime", "ID"))
TimeOrderedRecords-class
A class for the identifiers of DateTime and ID records in spatial data.
Description
The main use of this class and creator function is for SpatialPointsDataFrame-classs which are
used with TimeOrderedRecords for the class trip.
Slots
TOR.columns: 2-element vector of class "character"
Note
Future versions may change significantly, this class is very basic and could probably be imple-
mented in a better way. Specifying TOR columns by formula would be a useful addition.
See Also
TimeOrderedRecords, trip for creating trip objects, and trip-class for that class
trackAngle 23
Examples
showClass("TimeOrderedRecords")
tor <- new("TimeOrderedRecords", TOR.columns=c("datetime", "ID"))
Description
Calculate the angles between subsequent 2-D coordinates using Great Circle distance (spherical)
methods.
Usage
trackAngle(x)
## Default S3 method:
trackAngle(x)
Arguments
Details
If x is a trip object, the return result has an extra element for the start and end point of each individual
trip, with value NA.
This is an optimized hybrid of "raster::bearing" and gzAzimuth.
Value
Description
Calculate the distances between subsequent 2-D coordinates using Euclidean or Great Circle dis-
tance (WGS84 ellipsoid) methods.
Usage
Arguments
Details
If x1 is a trip object, arguments x2, x3, y2 are ignored and the return result has an extra element for
the start point of each individual trip, with value 0.0.
The prev argument is ignore unless x1 is a trip.
Distance values are in the units of the input coordinate system when longlat is FALSE, and in
kilometres when longlat is TRUE.
This originally used spDistsN1, then implemented the sp gcdist source directly in R, and now
uses geodist.
Value
References
Original source taken from sp package, but now using Helmert from Karney (2013) see the geodist
package.
trip-accessors 25
Examples
d <- data.frame(x=1:10, y=rnorm(10), tms=Sys.time() + 1:10, id=gl(2, 5))
sp::coordinates(d) <- ~x+y
## this avoids complaints later, but these are not real track data (!)
sp::proj4string(d) <- sp::CRS("+proj=laea +ellps=sphere", doCheckCRSArgs = FALSE)
tr <- trip(d, c("tms", "id"))
## the default method does not know about the trips, so this is
##(n-1) distances between all points
## trackDistance(coordinates(tr), longlat = FALSE)
## Not run:
angles <- trackAngle(walrus818)
## End(Not run)
trip-accessors Functions to retrieve DateTime and ID data from within (Spatial) data
frames.
Description
Functions for retrieving the names of the columns used for DateTime and ID, as well as the data.
Usage
getTORnames(obj)
getTimeID(obj)
Arguments
Value
getTORnames retrieves the column names from an object extending the class TimeOrderedRecords,
and getTimeID returns the data as a data frame from an object extending the class TimeOrderedRecords.
See Also
trip-class, for the use of this class with SpatialPointsDataFrame-class.
trip
Examples
Description
An extension of SpatialPointsDataFrame-class by including "TimeOrderedRecords". The
records within the data frame are explicitly ordered by DateTime data within IDs.
See Also
trip for examples of directly using the class.
trip-accessors describes methods for accessing information on trip objects.
Examples
showClass("trip")
summary(tr)
plot(tr)
lines(tr)
dim(tr)
names(tr)
subset(tr, id == "2")
as.data.frame(tr)
tr[1:3, ]
tr[, 1]
tr[[1]]
Description
Create an object of class trip, extending the basic functionality of SpatialPointsDataFrame-class
by specifying the data columns that define the "TimeOrdered" quality of the records.
Usage
trip(obj, TORnames, correct_all = TRUE)
Arguments
obj A data frame, a grouped data frame or a SpatialPointsDataFrame-class con-
taining at least two columns with the DateTime and ID data as per TORnames.
See Details.
TORnames Either a TimeOrderedRecords object, or a 2-element character vector specify-
ing the DateTime and ID column of obj
correct_all logical value, if TRUE the input data is corrected for common problems
value A 4-element character vector specifying the X, Y, DateTime coordinates and ID
of obj.
x trip object
28 trip-methods
Details
The original form of trip() required very strict input as a ’SpatialPointsDataFrame’ and specifying
which were the time and ID columns, but the input can be more flexible. If the object is a grouped
data frame (’dplyr-style’) then the (first) grouping is assumed to define individual trips and that
columns 1, 2, 3 are the x-, y-, time-coordinates in that order. It can also be a trip object for
redefining TORnames.
The trip() function can ingest track_xyt, telemetry, SpatialPointsDataFrame, sf, trackeRdata,
grouped_df, data.frame, tbl_df, mousetrap, and in some cases lists of those objects. Please get
in touch if you think something that should work does not.
Track data often contains problems, with missing values in location or time, times out of order or
with duplicated times. The correct_all argument is set to TRUE by default and will report any
inconsistencies. Data really should be checked first rather than relying on this auto-cleanup. The
following problems are common:
• duplicated records (every column with the same value in another row)
• duplicated date-time values
• missing date-time values, or missing x or y coordinates
• records out of order within trip ID
For some data types there’s no formal structure, but a simple convention such as a set of names in
a data frame. For example, the VTrack package has AATAMS1 which may be turned into a trip with
trip(AATAMS1 %>% dplyr::select(longitude, latitude, timestamp, tag.ID, everything()) In time we
can add support for all kinds of variants, detected by the names and contents.
See Chapter 2 of the trip thesis for more details.
Value
A trip object, with the usual slots of a SpatialPointsDataFrame-class and the added TimeOrderedRecords.
For the most part this can be treated as a data.frame with Spatial coordinates.
Methods
Most of the methods available are by virtue of the sp package. Some, such as split.data.frame
have been added to SPDF so that trip has the same functionality.
See Also
speedfilter, and tripGrid for simplistic speed filtering and spatial time spent gridding.
Examples
trip(d)
## or a grouped data frame can be used, the grouping is used as the trip ID
## library(dplyr)
## # use everything() to keep all other columns
## d %>% group_by(id) %>% select(x, y, tms, everything())
## End(Not run)
Description
These functions will be declared defunct in a future release.
Usage
as.SpatialLinesDataFrame.trip(from)
trip.split.exact(x, dates)
as.ltraj.trip(xy)
as.trip.SpatialLinesDataFrame(from)
Arguments
from trip object
x see cut.trip
dates see cut.trip
xy trip object
tripGrid 31
See Also
cut.trip, as.Other
Description
Create a grid of time spent from an object of class trip by exact cell crossing methods, weighted
by the time between locations for separate trip events.
Usage
Arguments
Details
Zero-length lines cannot be summed directly, their time value is summed by assuming the line is
a point. A warning used to be given, but as it achieved nothing but create confusion it has been
removed. The density method returns proportionate values, not summed time durations.
See pixellate.psp and pixellate.ppp for the details on the method used. See density.psp for
method="density".
Trip events are assumed to start and end as per the object passed in. To work with inferred "cutoff"
positions see split.trip.exact.
Value
tripGrid returns an object of class SpatialGridDataFrame, with one column "z" containing the
time spent in each cell in seconds.
32 tripGrid.interp
Description
Create a grid of time spent from an object of class trip by approximating the time between locations
for separate trip events.
Usage
tripGrid.interp(x, grid = NULL, method = "count", dur = NULL, ...)
Arguments
x object of class trip
grid GridTopology - will be generated automatically if NULL
method name of method for quantifying time spent, see Details
dur The \"dur\"ation of time used to interpolate between available locations (see
Details)
... other arguments passed to interpequal or kdePoints
h kernel bandwidth
resetTime rescale result back to the total duration of the input
Details
This set of functions was the the original tripGrid from prior to version 1.1-6. tripGrid should be
used for more exact and fast calculations assuming linear motion between fixes.
The intention is for tripGrid.interp to be used for exploring approximate methods of line-to-cell
gridding.
Trip locations are first interpolated, based on an equal-time spacing between records. These interpo-
lated points are then "binned" to a grid of cells. The time spacing is specified by the dur (duration)
argument to interpequal in seconds (i.e. dur=3600 is used for 1 hour). Shorter time periods will
require longer computation with a closer approximation to the total time spent in the gridded result.
Currently there are methods "count" and "kde" for quantifying time spent, corresponding to the
functions "countPoints" and "kdePoints". "kde" uses kernel density to smooth the locations, "count"
simply counts the points falling in a grid cell.
Value
tripGrid returns an object of class SpatialGridDataFrame, with one column "z" containing the
time spent in each cell in seconds. If kdePoints is used the units are not related to the time values
and must be scaled for further use.
walrus818 33
See Also
bandwidth.nrd for the calculation of bandwidth values used internally when not supplied by the
user
Description
Behavior of Pacific Walruses Tracked from the Alaska Coast of the Chukchi Sea.
Details
Data set is provided as a ’trip’ object. This is the abstract for the work:
"We tracked movements and haulout foraging behavior of walruses instrumented with satellite-
linked data loggers from the Alaskan shores of the Chukchi Sea during the autumn of 2009 (n=13)
and 2010 (n=2)." Jay, C. V. and Fischbach, A.S.
Examples
data(walrus818)
plot(walrus818)
lines(walrus818)
##dontdoanything
## library(mapview)
##mapview(as(walrus818, "SpatialLinesDataFrame"), burst = TRUE)
Description
A spatial polygons object with coastlines of the northern hemisphere.
Usage
world_north
Format
An object of class SpatialPolygonsDataFrame with 185 rows and 11 columns.
Details
This data set exists purely to avoid requiring reprojection in the vignette, the data uses the same
projection as walrus818.
34 write_track_kml
Description
Export track data to a KML file, for use in Google Earth the continuous time slider.
Usage
write_track_kml(
id,
lon,
lat,
utc,
z = NULL,
kml_file = tempfile(fileext = ".kmz"),
name = NULL,
altitude_mode = c("absolute", "clampToGround", "clampToSeaFloor", "relativeToGround",
"relativeToSeaFloor")
)
Arguments
id vector of grouping IDs (or a trip object)
lon vector of longitude (ignored if id is a trip)
lat vector of latitude (ignored if id is a trip)
utc vector of POSIXct date-times (ignored if id is a trip)
z vector of elevations, this cannot be set if ’id’ is a trip
kml_file filename for KML (KML or KMZ) (must end in .kml or .kmz)
name internal name of dat (derived from kml_file if not specified)
altitude_mode the altitude mode, ’absolute’, ’clampToGround’, ’clampToSeaFloor’, ’relative-
ToGround’, or ’relativeToSeaFloor’, see Details
Details
To include altitude set every argument explicitly, by input of separate ’id’, ’lon’, ’lat’, ’utc’ and ’z’
arguments. If the first argument ’id’ is a trip object there is no facility to include the ’z’ altitude
values.
If ’z’ is included it is applied as a third coordinate, with ’altitude_mode’ controlling the interpreta-
tion, see https://developers.google.com/kml/documentation/altitudemode. If the ’kml_file’
ends with ".kmz" the file is compressed, otherwise it must end with ".kml" and the compression
archive step is not applied.
Sadly the interactive time slider is only available with the desktop version of Google Earth, the data
loads into the browser version but can’t be interactive.
write_track_kml 35
Value
character vector, file name location of file produced
Author(s)
Original implementation by Tomislav Hengl in the ’plotKML’ package for ’SpatialLinesDataFrame’,
adapted by M. Sumner for use in continuous-time form.
Examples
## Not run:
kfile <- write_track_kml(walrus818[seq(1, 1000, by = 5), ])
print(kfile)
unlink(kfile)
## End(Not run)
Index
∗ IO as.trip, 6
readArgos, 16 as.trip,ltraj-method (as.trip), 6
∗ chron as.trip,track_xyt-method (as.trip), 6
cut.trip, 7 as.trip-methods (as.trip), 6
∗ classes as.trip.SpatialLinesDataFrame
trip-class, 26 (trip.split.exact), 30
∗ color
oc.theme, 14 bandwidth.nrd, 33
∗ datasets bpy.colors, 14
world_north, 33
∗ manip coerce,trip,ltraj-method (as.trip), 6
argos.sigma, 4 countPoints (tripGrid.interp), 32
cut.trip, 7 cut.POSIXt, 7
filter_penSS, 9 cut.trip, 7, 30, 31
makeGridTopology, 13
data.frame, 12
readArgos, 16
duplicated, 18
sepIdGaps, 19
speedfilter, 20 explode (as.Other), 5
trip-accessors, 25
tripGrid, 31 filter.penSS (filter_penSS), 9
tripGrid.interp, 32 filter_penSS, 9
∗ misc forceCompliance, 11
filter_penSS, 9
[,trip,ANY,ANY,ANY-method geodist, 24
(trip-methods), 27 getTimeID (trip-accessors), 25
[,trip-method (trip-methods), 27 getTORnames (trip-accessors), 25
[[<-,trip,ANY,missing-method gzAzimuth, 23
(trip-methods), 27
homedist, 12
adjust.duplicateTimes, 3, 18
argos.sigma, 4, 18 interp_equal, 13
as.ltraj.trip (trip.split.exact), 30 interpequal (tripGrid.interp), 32
as.Other, 5, 31
kdePoints (tripGrid.interp), 32
as.ppp, 5
as.ppp (as.Other), 5 lines,trip-method (trip-class), 26
as.psp, 5 ltraj2trip (as.trip), 6
as.psp (as.Other), 5
as.SpatialLinesDataFrame.trip makeGridTopology, 13
(trip.split.exact), 30
as.track_xyt.trip (as.Other), 5 nlm, 10
36
INDEX 37
TimeOrderedRecords, 22, 22
TimeOrderedRecords-class, 22
trackAngle, 23
trackDistance, 24
trip, 12, 18, 20, 22, 26
trip (trip-methods), 27
trip(), 28
trip,ANY,TimeOrderedRecords-method
(trip-methods), 27
trip,data.frame,ANY-method
(trip-methods), 27
trip,grouped_df,ANY-method
(trip-methods), 27
trip,list,ANY-method (trip-methods), 27
trip,mousetrap,ANY-method
(trip-methods), 27