Я использую пакет adehabitatLT
, чтобы вычислить время первого прохождения.Я не могу понять, как он рассчитывается.Я предположил, что если я вычислю скорость вдоль траектории, а затем использую скорость для расчета 1 / скорость * радиус (умножить на 2?), Я должен получить то же значение.Но я неКак рассчитывается fpt и чего мне не хватает?Кажется, что исходный код функции находится в C ...
Вот игрушечный пример.Глядя на результаты, я задаюсь вопросом, рассчитывает ли traj скорость до следующей точки, тогда как fpt вычисляется с использованием предыдущего и следующего.Как мне вручную реплицировать вывод fpt?
library(dplyr)
library(adehabitatLT)
radii <- seq(1, 2, 1)
sub <- structure(list(DateTime = structure(c(1497961320, 1497961670,
1497961833, 1497961975, 1497962075, 1497962211, 1497962417, 1497962584,
1497962857, 1497963033, 1497963498, 1497963692, 1497963844, 1497963964,
1497964142, 1497964703, 1497964823, 1497965165, 1497965317, 1497965436,
1497965610, 1497965776, 1497965923), class = c("POSIXct", "POSIXt"
), tzone = "PST8PDT"), Easting = c(549550.463222071, 549616.446682493,
549624.93893591, 549621.287381029, 549634.852043099, 549653.472247283,
549706.355849625, 549752.824737699, 549805.695860071, 549809.742959711,
549822.329239614, 549850.767478972, 549870.082191359, 549878.454496366,
549842.209234682, 549810.803726788, 549810.817539391, 549811.560290745,
549811.995877951, 549785.99096682, 549697.447940334, 549634.423314139,
549590.138532179), Northing = c(5393845.268479, 5393848.51944054,
5393886.83599659, 5393933.60504873, 5393964.18478323, 5393997.25495826,
5394000.39111759, 5393980.0146384, 5393959.69535379, 5394001.19661814,
5394050.66656145, 5393988.99899494, 5394001.73248796, 5394011.92310602,
5394057.73545498, 5393997.75985148, 5393996.20363397, 5393995.43205644,
5393996.10292559, 5393999.20718151, 5393975.85546091, 5393962.73581927,
5393902.53644517), Burst = c("1", "1", "1", "1", "1", "1", "1",
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1",
"1", "1", "1")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-23L))
вычислить траекторию и fpt
L1.traj <- as.ltraj(data.frame(sub$Easting, sub$Northing), sub$DateTime,
id = 1, burst = sub$Burst,
proj4string = CRS("+proj=utm +zone=11 +ellps=WGS84"))
L1.fpt <- fpt(L1.traj, radii, unit = "seconds")
L1.fpt <- as.data.frame(L1.fpt[[1]])
temp <- ld(L1.traj) %>%
mutate(DateTime = date) %>%
dplyr:::select(DateTime, dist, dt) %>%
# time to pass a radius of 1 m and a diameter of 2 m
mutate(TimeRadius1 = dt/dist * 1,
TimeDiameter1 = TimeRadius1 * 2) %>%
cbind(L1.fpt)
Существует приличная (и непоследовательная) разница между временем прохождения радиуса / диаметра и выводомFPT.