Corridor identifies movement track segments whose attributes suggest corridor use behavior
# S4 method for .MoveTrackSingle
corridor(x,speedProp=.75, circProp=.25, plot=FALSE, ...)
# S4 method for .MoveTrackStack
corridor(x,speedProp=.75, circProp=.25, plot=FALSE, ...)
Move or MoveStack
numeric between 0 and 1, defines the proportion of speeds which are high enough to be a valid corridor point
numeric between 0 and 1, defines the proportion of trajectories that are low enough to be a valid corridor point
logical, if TRUE the track is plotted together with dots that indicate corridor points (color scale indicates how many corridor points are near by, less: blue, many: pink)
additional arguments like levels and nlevels, see details
The function returns a MoveBurst object or a list of MoveBurst objects (if a MoveStack is supplied). The MoveBurst dateframe stores the following information: - segment midpoint - speed - azimuth - pseudo-azimuth - circular variance The object is bursted by the factor that indicates whether a coordinate belongs to a corridor segment or not.
The corridor function uses the attributes of a movement step to identify movement steps that exhibit corridor use behavior.
For each segment, the speed and the azimuth are calculated and assigned to the segment midpoint. A circular buffer is created around the midpoint of each segment whose radius is equal to half the segment length. The segment azimuth (180 >= azimuth > -180) is then converted into a new unit (the 'pseudo-azimuth' 0 <= 360).
Subsequent, the circular variance of the pseudo-azimuths of all segment midpoints that fall within the circular buffer are calculated.
This identifies segments that are near parallel segments. Next, it is determined whether a segment's speed is higher than speedProp
(by default the upper 25% speeds) and its circular variance is lower than circProp
(by default the lower 25% of all variances).
Segment midpoints that meet both of these requirements are considered as a 'corridor' point, all others are considered 'non-corridor' points. Finally, a corridor point is determined to be within a true corridor if within its buffer there are more 'corridor' points than 'non-corridor' points.
LaPoint, S., Gallery, P., Wikelski, M. and Kays, R. (2013), Animal Behavior, Cost-based Corridor Models, and Real Corridors. Landscape Ecology. doi:10.1007/s10980-013-9910-0.
# NOT RUN {
data(leroy)
tmp <- corridor(leroy, plot=TRUE)
head(tmp) #if assigned to a variable, the coordinates are exported
data(fishers)
stacktmp <- corridor(fishers[c(1:400,sum(n.locs(fishers))-(400:1)),]) #working with a stack
# }
Run the code above in your browser using DataLab