# 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