Skip to contents

A cleaned movement track of one individual at a time can be classified into residence patches using the function atl_res_patch. The function expects a specific organisation of the data: there should be at least the following columns, x, y, and time, corresponding to the coordinates, and the time as POSIXct. atl_res_patch requires only three parameters: (1) the maximum speed threshold between localizations (called max_speed), (2) the distance threshold between proto-patches of positions (called lim_spat_indep), and (3) the time interval between proto-patches (called lim_time_indep). As the code initially only looks at proto-patches, at the end it checks if positions within patches are interrupted by short flights (with a distance larger than lim_spat_indep to the last position of the proto-patch before and first position of the next proto-patch). If there are more than min_fixes in this bout, then the patch will be split. If there are less, we assume this to be single outliers and only assign no patch ID

Usage

atl_res_patch(
  data,
  max_speed = 3,
  lim_spat_indep = 75,
  lim_time_indep = 180,
  min_fixes = 3,
  min_duration = 120
)

Arguments

data

A dataframe of any class that is or extends data.frame of one individual only. The dataframe must contain at least two spatial coordinates, x and y, and a temporal coordinate, time.

max_speed

A numeric value specifying the maximum speed (m/s) between two coordinates that would be considered non-transitory

lim_spat_indep

A numeric value of distance in metres of the spatial distance between two patches for them to the considered independent.

lim_time_indep

A numeric value of time in minutes of the time difference between two patches for them to be considered independent.

min_fixes

The minimum number of fixes for a group of spatially-proximate number of points to be considered a preliminary residence patch.

min_duration

The minimum duration (in seconds) for classifying residence patches.

Value

A data.table that has the added column patch as character indicating the patch ID.

Author

Pratik R. Gupte, Christine E. Beardsworth, Allert I. Bijleveld & Johannes Krietsch

Examples

# packages
library(tools4watlas)

# load example data
data <- data_example

# calculate residence patches for one red knot
data <- atl_res_patch(
  data[tag == "3038"],
  max_speed = 3, lim_spat_indep = 75, lim_time_indep = 180,
  min_fixes = 3, min_duration = 120
)

# summary of residence patches
data_summary <- atl_res_patch_summary(data)
data_summary
#>      species    tag  patch nfixes   x_mean x_median  x_start    x_end  y_mean
#>       <char> <char> <char>  <int>    <num>    <num>    <num>    <num>   <num>
#>  1: red knot   3038      1    218 650118.2 650143.9 650120.1 649896.0 5902387
#>  2: red knot   3038      2    204 650378.7 650378.4 650372.3 650384.2 5902349
#>  3: red knot   3038      3    172 650263.5 650251.5 650254.3 650313.1 5902163
#>  4: red knot   3038      4     67 650471.0 650457.7 650410.7 650530.4 5901984
#>  5: red knot   3038      5    190 650765.0 650765.1 650722.6 650748.1 5901930
#>  6: red knot   3038      6     90 650804.9 650799.0 650857.1 650766.2 5901892
#>  7: red knot   3038      7     27 650740.2 650739.5 650766.6 650738.8 5901749
#>  8: red knot   3038      8    103 650661.8 650673.3 650696.7 650620.4 5901843
#>  9: red knot   3038      9    210 650965.7 650994.0 651071.8 650865.5 5901982
#> 10: red knot   3038     10    257 650728.6 650728.2 650761.8 650705.0 5902000
#> 11: red knot   3038     11     15 650883.6 650881.3 650896.3 650871.3 5902117
#> 12: red knot   3038     12     73 651514.7 651536.8 651557.2 651428.6 5902163
#> 13: red knot   3038     13     46 651415.0 651412.4 651422.3 651432.0 5902456
#> 14: red knot   3038     14     21 651498.8 651500.7 651457.8 651496.5 5903028
#> 15: red knot   3038     15      3 650723.2 650743.0 650756.3 650670.3 5903119
#> 16: red knot   3038     16     10 650218.6 650214.1 650259.9 650213.1 5902162
#> 17: red knot   3038     17     37 650228.3 650227.6 650251.0 650216.7 5902192
#> 18: red knot   3038     18     38 650062.7 650063.7 650080.3 650055.9 5902048
#> 19: red knot   3038     19    201 650232.5 650236.3 650180.9 650257.9 5902030
#> 20: red knot   3038     20     19 650421.0 650421.3 650400.5 650425.8 5901725
#> 21: red knot   3038     21    603 650577.0 650576.7 650608.5 650304.4 5902112
#> 22: red knot   3038     22    201 650155.1 650155.2 650152.0 650159.6 5902363
#>      species    tag  patch nfixes   x_mean x_median  x_start    x_end  y_mean
#>       <char> <char> <char>  <int>    <num>    <num>    <num>    <num>   <num>
#>     y_median y_start   y_end           time_mean         time_median
#>        <num>   <num>   <num>              <POSc>              <POSc>
#>  1:  5902399 5902400 5902365 2023-09-23 01:39:22 2023-09-23 01:36:02
#>  2:  5902368 5902392 5902293 2023-09-23 02:56:27 2023-09-23 02:56:52
#>  3:  5902170 5902235 5902078 2023-09-23 03:49:05 2023-09-23 03:49:28
#>  4:  5901998 5902046 5901908 2023-09-23 04:23:52 2023-09-23 04:23:38
#>  5:  5901928 5902017 5901835 2023-09-23 05:02:27 2023-09-23 04:58:34
#>  6:  5901893 5901869 5901886 2023-09-23 05:47:59 2023-09-23 05:47:29
#>  7:  5901747 5901802 5901746 2023-09-23 06:03:59 2023-09-23 06:03:56
#>  8:  5901845 5901822 5901828 2023-09-23 06:27:29 2023-09-23 06:27:32
#>  9:  5901989 5901909 5902008 2023-09-23 07:20:25 2023-09-23 07:21:42
#> 10:  5902013 5901944 5902041 2023-09-23 08:34:29 2023-09-23 08:36:55
#> 11:  5902115 5902112 5902117 2023-09-23 09:16:10 2023-09-23 09:16:01
#> 12:  5902148 5902123 5902264 2023-09-23 09:34:52 2023-09-23 09:31:52
#> 13:  5902446 5902354 5902591 2023-09-23 10:09:23 2023-09-23 10:08:50
#> 14:  5903027 5903046 5903014 2023-09-23 11:10:06 2023-09-23 11:10:22
#> 15:  5903114 5903136 5903114 2023-09-23 14:01:20 2023-09-23 13:54:45
#> 16:  5902161 5902163 5902159 2023-09-23 15:36:55 2023-09-23 15:36:58
#> 17:  5902192 5902192 5902187 2023-09-23 15:46:35 2023-09-23 15:46:26
#> 18:  5902043 5902081 5902018 2023-09-23 15:57:43 2023-09-23 15:57:32
#> 19:  5902023 5902042 5902023 2023-09-23 16:39:36 2023-09-23 16:40:38
#> 20:  5901723 5901726 5901739 2023-09-23 17:15:05 2023-09-23 17:14:59
#> 21:  5902115 5901823 5902230 2023-09-23 19:34:56 2023-09-23 19:13:25
#> 22:  5902361 5902365 5902389 2023-09-23 23:30:27 2023-09-23 23:30:54
#>     y_median y_start   y_end           time_mean         time_median
#>        <num>   <num>   <num>              <POSc>              <POSc>
#>              time_start            time_end dist_start_end dist_in_patch
#>                  <POSc>              <POSc>          <num>         <num>
#>  1: 2023-09-23 01:00:06 2023-09-23 02:25:42      226.85244    1281.06282
#>  2: 2023-09-23 02:26:48 2023-09-23 03:23:33       99.74456     771.87479
#>  3: 2023-09-23 03:24:06 2023-09-23 04:13:51      167.43290     507.29482
#>  4: 2023-09-23 04:14:18 2023-09-23 04:34:11      182.98565     267.17182
#>  5: 2023-09-23 04:35:08 2023-09-23 05:33:50      183.07740     820.64195
#>  6: 2023-09-23 05:36:32 2023-09-23 05:59:29       92.57042     267.24318
#>  7: 2023-09-23 05:59:47 2023-09-23 06:08:38       62.36975     121.87841
#>  8: 2023-09-23 06:09:02 2023-09-23 06:44:29       76.54410     299.12699
#>  9: 2023-09-23 06:45:11 2023-09-23 07:51:46      228.70842     745.23055
#> 10: 2023-09-23 07:52:13 2023-09-23 09:12:58      112.48659     673.26698
#> 11: 2023-09-23 09:13:49 2023-09-23 09:18:34       25.61180      65.69697
#> 12: 2023-09-23 09:19:25 2023-09-23 09:59:49      191.23129     700.00219
#> 13: 2023-09-23 10:00:16 2023-09-23 10:19:46      237.67675     478.78933
#> 14: 2023-09-23 10:26:40 2023-09-23 11:25:42       49.83545     248.27591
#> 15: 2023-09-23 13:54:27 2023-09-23 14:14:48       88.74901     103.17843
#> 16: 2023-09-23 15:35:23 2023-09-23 15:38:14       46.93707      77.42522
#> 17: 2023-09-23 15:40:29 2023-09-23 15:52:41       34.77431      91.59222
#> 18: 2023-09-23 15:53:11 2023-09-23 16:02:35       67.17012     241.29544
#> 19: 2023-09-23 16:04:11 2023-09-23 17:12:38       79.28867     632.14064
#> 20: 2023-09-23 17:13:05 2023-09-23 17:17:23       28.27475      73.40384
#> 21: 2023-09-23 17:17:59 2023-09-23 22:24:12      508.34358    2464.47436
#> 22: 2023-09-23 23:00:39 2023-09-23 23:59:39       26.08165     756.04426
#>              time_start            time_end dist_start_end dist_in_patch
#>                  <POSc>              <POSc>          <num>         <num>
#>     dist_bw_patch time_bw_patch disp_in_patch  duration
#>             <num>         <num>         <num>     <num>
#>  1:            NA            NA     226.85244  5135.592
#>  2:     477.14838        65.994      99.74456  3404.730
#>  3:     142.59999        32.997     167.43290  2984.763
#>  4:     102.65534        26.997     182.98565  1193.905
#>  5:     221.05409        56.996     183.07740  3521.721
#>  6:     113.96041       161.987      92.57042  1376.890
#>  7:      84.19272        17.999      62.36975   530.958
#>  8:      86.36810        23.998      76.54410  2126.831
#>  9:     458.65180        41.997     228.70842  3995.684
#> 10:     122.15609        26.998     112.48659  4844.617
#> 11:     203.97417        50.996      25.61180   284.978
#> 12:     685.93767        50.996     191.23129  2423.810
#> 13:      89.64572        26.998     237.67675  1169.907
#> 14:     455.41284       413.967      49.83545  3542.722
#> 15:     750.03092      8924.300      88.74901  1220.904
#> 16:    1036.01996      4835.619      46.93707   170.987
#> 17:      50.62455       134.989      34.77431   731.942
#> 18:     172.67229        29.998      67.17012   563.955
#> 19:     127.23215        95.993      79.28867  4106.673
#> 20:     329.23561        26.998      28.27475   257.980
#> 21:     201.06877        35.997     508.34358 18373.541
#> 22:     203.33747      2186.826      26.08165  3539.718
#>     dist_bw_patch time_bw_patch disp_in_patch  duration
#>             <num>         <num>         <num>     <num>