Learn R Programming

SDLfilter (version 2.0.0)

ddfilter: Filter locations using a data driven filter

Description

Function to remove locations by a data driven filter as described in Shimada et al. (2012).

Usage

ddfilter(sdata, vmax = 8.9, vmaxlp = 1.8, qi = 4, ia = 90, method = 1)

Arguments

sdata

A data frame containing columns with the following headers: "id", "DateTime", "lat", "lon", "qi". The function filters the input data by the unique "id". "DateTime" is date & time in class POSIXct. "lat" and "lon" are the latitude and longitude of each location in decimal degrees. "qi" is the numerical quality index associated with each location fix where a greater number indicates a higher accuracy (e.g. number of GPS satellites used for estimation).

vmax

A numeric value specifying a threshold of speed from a previous and/or to a subsequent fix. Default is 8.9km/h. If this value is unknown, it can be estimated from sdata using the function vmax.

vmaxlp

A numeric value specifying a threshold of speed, which is used to evaluate the locations of loop trips. Default is 1.8 km/h. If this value is unknown, it can be estimated from sdata using the function vmaxlp.

qi

An integer specifying a threshold of quality index, which is used to evaluate the locations of loop trips. Default is 4.

ia

An integer specifying a threshold of inner angle, which is used to evaluate the locations of loop trips. Default is 90 degrees.

method

An integer specifying how locations should be filtered with vmax. A location is removed if the speed from a previous and(1)/or(2) to a subsequent location exceeds vmax. Default is 1 (both way).

Value

The input data is returned without locations identified by this filter. The following columns are added: "pTime", "sTime", "pDist", "sDist", "pSpeed", "sSpeed", "inAng". "pTime" and "sTime" are hours from a previous and to a subsequent fix respectively. "pDist" and "sDist" are straight distances in kilometres from a previous and to a subsequent fix respectively. "pSpeed" and "sSpeed" are linear speed from a previous and to a subsequent fix respectively. "inAng" is the degree between the bearings of lines joining successive location points.

Details

Locations are removed if the speed from a previous and/or to a subsequent location exceeds vmax, or if all of the following criteria apply: the associated quality index is less than or equal to qi, the inner angle is less than or equal to ia and the speed either from a previous or to a subsequent location exceeds vmaxlp. If vmax and vmaxlp are unknown, they can be estimated using the functions vmax and vmaxlp respectively.

References

Shimada T, Jones R, Limpus C, Hamann M (2012) Improving data retention and home range estimates by data-driven screening. Marine Ecology Progress Series 457:171-180 doi:10.3354/meps09747

See Also

ddfilter_speed, ddfilter_loop, vmax, vmaxlp

Examples

Run this code
# NOT RUN {
#### Load data sets
## Fastloc GPS data obtained from a green turtle
data(turtle)

## A Map for the example site
data(Australia)
data(SandyStrait)


#### Filter temporal and/or spatial duplicates
turtle.dup <- dupfilter(turtle, step.time=5/60, step.dist=0.001)
 

#### ddfilter
## Using the built-in function to estimate the threshold speeds
V <- vmax(turtle.dup)
VLP <- vmaxlp(turtle.dup)
turtle.dd <- ddfilter(turtle.dup, vmax=V, vmaxlp=VLP)

## Or using user specified threshold speeds
turtle.dd <- ddfilter(turtle.dup, vmax=9.9, qi=4, ia=90, vmaxlp=2.0)


#### Plot data removed or retained by ddfilter
## Entire area
p1<-map_track(turtle.dup, bgmap=Australia, point.size = 2, line.size = 0.5, axes.lab.size = 0, 
            sb.distance=200, multiplot = FALSE, point.bg = "red",
            title.size=15, title="Entire area")[[1]] + 
  geom_point(aes(x=lon, y=lat), data=turtle.dd, size=2, fill="yellow", shape=21)+
  geom_point(aes(x=x, y=y), data=data.frame(x=c(154, 154), y=c(-22, -22.5)), 
             size=3, fill=c("yellow", "red"), shape=21) + 
  annotate("text", x=c(154.3, 154.3), y=c(-22, -22.5), label=c("Retained", "Removed"), 
           colour="black", size=4, hjust = 0)

## Zoomed in
p2<-map_track(turtle.dup, bgmap=SandyStrait, xlim=c(152.7, 153.2), ylim=(c(-25.75, -25.24)), 
            axes.lab.size = 0, sb.distance=10, point.size = 2, point.bg = "red", line.size = 0.5, 
            multiplot = FALSE, title.size=15, title="Zoomed in")[[1]] + 
geom_path(aes(x=lon, y=lat), data=turtle.dd, size=0.5, colour="black", linetype=1) + 
geom_point(aes(x=lon, y=lat), data=turtle.dd, size=2, colour="black", shape=21, fill="yellow")

gridExtra::marrangeGrob(list(p1, p2), nrow=1, ncol=2)
# }

Run the code above in your browser using DataLab