#Script to prepare easy-to-use dataset for example app of scheldeMonitor website


library(lubridate)

#' Define function for yearly aggregation per station
#' 
#' Written by Wout Van Echelpoel (UGent) for the T2021 ScheldeMonitor report
#' Wout.VanEchelpoel@UGent.be - Jan 2022 
#' https://github.com/scheldemonitor/T2021/blob/main/00_Algemeen/Scripts/Function_TemporalAggregating.R
source('Data/Function_TemporalAggregating.R')
source('Function_ImportData.R')


#Oxygen
Raw_Oxy$datetime <- as.POSIXct(Raw_Oxy$datetime, format = "%Y-%m-%dT%H:%M:%S")
Raw_Oxy$value <- as.numeric(Raw_Oxy$value)
Raw_Oxy$year <- year(Raw_Oxy$datetime)
oxygen_data <- f.yearlyPerStation(Raw_Oxy[c("year", "stationname", "latitude", "longitude", "value")],stat = 'mean')
colnames(oxygen_data)[which(names(oxygen_data) == "value")] <- "Oxygen dissolved in mg/l in surface water"

#Temperature
Raw_temp$datetime <- as.POSIXct(Raw_temp$datetime, format = "%Y-%m-%dT%H:%M:%S")
Raw_temp$value <- as.numeric(Raw_temp$value)
Raw_temp$year <- year(Raw_temp$datetime)
temperature_data <- f.yearlyPerStation(Raw_temp[c("year", "stationname", "latitude", "longitude", "value")],stat = 'mean')
colnames(temperature_data)[which(names(temperature_data) == "value")] <- "Temperature of surface water in degrees celcius"

#Salinity
Raw_sal$datetime <- as.POSIXct(Raw_sal$datetime, format = "%Y-%m-%dT%H:%M:%S")
Raw_sal$value <- as.numeric(Raw_sal$value)
Raw_sal$year <- year(Raw_sal$datetime)
salinity_data <- f.yearlyPerStation(Raw_sal[c("year", "stationname", "latitude", "longitude", "value")],stat = 'mean')
colnames(oxygen_data)[which(names(oxygen_data) == "value")] <- "Salinity in PSU in surface water"


#waterlevel ok
waterlevel_data <- Raw_waterlevel
waterlevel_data <- waterlevel_data[,c('latitude','longitude','year','HWmean','LWmean','stationname')]

#turbidity
Raw_turb$datetime <- as.POSIXct(Raw_turb$datetime, format = "%Y-%m-%dT%H:%M:%S")
Raw_turb$value <- as.numeric(Raw_turb$value)
Raw_turb$year <- year(Raw_turb$datetime)
turbidity_data <- f.yearlyPerStation(Raw_turb[c("year", "stationname", "latitude", "longitude", "value")],stat = 'mean')
colnames(turbidity_data)[which(names(turbidity_data) == "value")] <- "Sediment concentration in the water column in mg/l"


#Merge dataset
df<-merge(waterlevel_data,turbidity_data, all=TRUE)
df<-merge(df,temperature_data, all = TRUE)
df<-merge(df,salinity_data, all = TRUE)
df<-merge(df,oxygen_data, all = TRUE)

write.csv(df,"dataframe.csv")
