# exif_outa<-read.table("D:/Fiona/Biome_Health_Project/exif_output/exif_out3.txt", fill = NA, sep = ",", stringsAsFactors = FALSE)
# exif_out<-read.table("D:/Fiona/Biome_Health_Project/exif_output/exif_out5.txt", fill = NA, sep = ",", stringsAsFactors = FALSE)
# #colnames(exif_out)<-c("site", "folder", "subfolder", "IMG_no", "Camera_brand", "Camera_model", "datetime", "Light_source", "Flash")
# 
# exif_out<-rbind(exif_outa, exif_out)

exif_out<-read.table("D:/Fiona/Biome_Health_Project/exif_output/exif_out_new.txt", fill = NA, sep = ",", stringsAsFactors = FALSE)

colnames(exif_out)<-c("filepath", "Camera_brand", "Camera_model", "datetime","datetime_digitized", "Light_source", "Flash")

bad_files<-exif_out[grepl("Bad file", exif_out$filepath),]

exif_out<-exif_out[!grepl("Bad file", exif_out$filepath),]


#get rid of files in corrupted_exif folder

exif_out<-exif_out[!grepl("corrupted_exif", exif_out$filepath),]
file_split<-strsplit(exif_out$filepath, "[\\\\]|[^[:print:]]")

get_last<-function(x){
  image_out<-x[[length(x)]]
  return(image_out)
}


image_nos<-lapply(file_split, get_last)
img_nos<-unlist(image_nos)

exif_out$image_no<-img_nos
get_second_last<-function(x){
  image_out<-x[[(length(x)-1)]]
  if(grepl("BTCF",image_out)){
    image_out<-x[[(length(x)-2)]]
  }
  return(image_out)
}


site_cam<-lapply(file_split, get_second_last)
site_cam<-unlist(site_cam)

exif_out$site_cam<-site_cam
site<-strsplit(exif_out$site_cam, "_")

exif_out$Location.ID<-sapply(site, "[", 1)
exif_out$Camera.ID<-sapply(site, "[", 2)

exif_out$Site.ID<-gsub("[[:digit:]]", "",exif_out$Location.ID)
exif_out$datetime<-as.POSIXct(exif_out$datetime_digitized, format = "%Y:%m:%d %H:%M:%S", tz = "UTC")

exif_out$date<-as.Date(exif_out$datetime_digitized, "%Y:%m:%d", tz = "UTC")


#removing images where the exif data is incorrect - dates exist before or after the field season. 

exif_dc<-exif_out[exif_out$date >= as.Date("2018-10-05", format  = "%Y-%m-%d") & exif_out$date <= as.Date("2018-11-29", format  = "%Y-%m-%d"),]


exif_dc_noend<-exif_out[exif_out$date >= as.Date("2018-10-05", format  = "%Y-%m-%d") ,]
locs<-read.csv("CameraLocations.csv", stringsAsFactors = FALSE)

exif_locs<-merge(locs, exif_dc_noend, by = "Location.ID")
#####animation
library(lubridate)
library(dplyr)

#exif_locs$datetime<-as.POSIXct(exif_locs$datetime, format = "%Y:%m:%d %H:%M:%S", tz = "UTC")

exif_locs$date<-as.Date(exif_locs$datetime_digitized, "%Y:%m:%d", tz = "UTC")


exif_daily<-exif_locs %>% 
  group_by(Location.ID,Latitude, Longitude, Site.ID,date) %>% 
  tally()
library(ggplot2)
library(gganimate)
library(transformr)
library(tweenr)


colnames(exif_daily)[5]<-"DATE_NF"

d<-ggplot(exif_daily, aes(x = Longitude, y = Latitude))+
  geom_point(data = exif_daily, aes(size = n, colour = Site.ID))+
  coord_equal()+
  transition_time(exif_daily$DATE_NF)+
  ease_aes('linear')+
  labs(title = 'Date: {frame_time}')+
  #coord_equal()+
  theme_bw()+
  enter_fade() +
  exit_fade()

animate(d,fps = 3.5, nframes = 55)

anim_save("filenamehere.gif")

Map background

Creating exif hourly