R/triangulate.R

Defines functions triangulate

Documented in triangulate

#' filter data interactive
#'
#' @description calculate triangulations based on different bearing calculation methods
#'
#'
#' @author Jannis Gottwald
#'
#'
#' 
#' @param animal list, generatet by initanimal
#' @param antennas data.frame, data.frame with antenna information (Name,Lat,Lon, orientation, correction)
#' @param path_to_data string, path to filtered file
#' @param method string,("linear, "acos", "ML") indicates wether linear, acos ore machine learning based bearings are used
#' @param collision logical, if collision corrected data is used a suffix is added to resulting file name
#' 
#'
#' @export
#'
#'



triangulate<-function(method, path_to_data, animal, antennas, collision=FALSE){
  
data<-data.table::fread(path_to_data)
data<-as.data.frame(data)
data$intersection<-abs(angle_between(data$s1, data$s2))
data$X<-NA
data$Y<-NA
data<-data[!is.na(data$s1),]
data<-data[!is.na(data$s2),]

for( i in 1:nrow(data)){
 # print(i)
s1<-antennas[as.character(antennas$Name)==as.character(data$name_s1)[i],]
s2<-antennas[as.character(antennas$Name)==as.character(data$name_s2)[1],]
tri<-triang(s1$Longitude[1],s1$Latitude[1],data$s1[i],
                s2$Longitude[1],s2$Latitude[1],data$s2[i])

data$X[i]<-tri$x[1]
data$Y[i]<-tri$y[1]
    
}

data<-data[!is.na(data$X),]
if(collision==FALSE){
data$timestamp<-as.POSIXct(data$timestamp)
fwrite(data, paste0(animal$path$triangulations, "/", anml$meta$animalID,"_FROM_", as.Date(min(data$timestamp)), "_TO_",as.Date(max(data$timestamp)),"_triangulations_", method, ".csv"))}

if(collision==TRUE){
  data$timestamp<-as.POSIXct(data$timestamp)
  fwrite(data, paste0(animal$path$triangulations, "/", anml$meta$animalID,"_FROM_", as.Date(min(data$timestamp)), "_TO_",as.Date(max(data$timestamp)),"_triangulations_", method, "_collision.csv"))}



}
JannisGottwald/N40RTS documentation built on Feb. 1, 2021, 5:13 p.m.