@@ -75,3 +75,116 @@ print(metnc)
7575### Your turn:
7676
7777Can you see the effect of the August 21, 2017 solar eclipse on the diurnal spectral radiance?
78+
79+ ## Raw sensor data
80+
81+ Here we can found the original data written by the sensor. Unlike above, these are in text files and are not in a standard format like the CF format above.
82+
83+ ``` {r raw-met, cache=TRUE}
84+ metfile <- "/data/terraref/sites/ua-mac/raw_data/EnvironmentLogger/2017-05-31/2017-05-31_12-19-38_environmentlogger.json"
85+ met <- jsonlite::fromJSON(metfile)
86+
87+ timestamp <- lubridate::ymd_hms(met$environment_sensor_readings$timestamp)
88+
89+ wavelengths <- met$environment_sensor_readings$spectrometer$wavelength[[1]]
90+
91+ spectra <- do.call('rbind', met$environment_sensor_readings$spectrometer$spectrum)
92+
93+ library(dplyr)
94+ spectra <- do.call('rbind', met$environment_sensor_readings$spectrometer$spectrum)
95+
96+ #colnames(spectra) <- wavelengths
97+ #rownames(spectra) <- met$environment_sensor_readings$timestamp
98+ image(x = timestamp, y = wavelengths, z = spectra)
99+ ```
100+
101+
102+ ``` {r}
103+ library(dplyr)
104+ library(readr)
105+ date = '2017-04-15'
106+ load_loggerdata <- function(date){
107+ path <- file.path("/data/terraref/sites/ua-mac/raw_data/EnvironmentLogger", date)
108+ files <- dir(path, full.names = TRUE)
109+ loggerdata <- lapply(files, jsonlite::fromJSON)
110+ timestamp <- combine(sapply(loggerdata, function(x){
111+ t <- x$environment_sensor_readings$timestamp
112+ lubridate::ymd_hms(t)
113+ }))
114+ return(list(data = loggerdata, timestamp = timestamp))
115+ }
116+
117+ extract_downwelling_irradiance <- function(logdata){
118+
119+ wavelengths <- logdata$data[[1]]$environment_sensor_readings$spectrometer$wavelength[[1]]
120+
121+ spectra <- do.call('rbind', lapply(logdata$data, function(x){
122+ do.call('rbind', x$environment_sensor_readings$spectrometer$spectrum)
123+ }
124+ ))
125+ # image(x = timestamp, y = wavelengths, z = spectra)
126+ return(list(spectra = spectra, wavelengths = wavelengths, timestamp = logdata$timestamp))
127+ }
128+
129+ extract_logger_met <- function(logdata){
130+
131+ met <- do.call('rbind', lapply(logdata$data, function(x){
132+ tmp_met <- x$environment_sensor_readings
133+ data.frame(par = tmp_met$`sensor par`$value,
134+ co2 = tmp_met$`sensor co2`$value,
135+ sundir = tmp_met$weather_station$sunDirection$value,
136+ pressure = tmp_met$weather_station$airPressure$value,
137+ brightness = tmp_met$weather_station$brightness$value,
138+ rh = tmp_met$weather_station$relHumidity$value,
139+ temp = tmp_met$weather_station$temperature$value,
140+ wind_dir = tmp_met$weather_station$windDirection$value,
141+ wind_speed = tmp_met$weather_station$windVelocity$value)
142+
143+ }))
144+ return(met)
145+ }
146+
147+ env_log_data <- load_loggerdata(date = '2017-04-15')
148+ env_log_spectra <- extract_downwelling_irradiance(env_log_data)
149+ env_log_met <- extract_logger_met(env_log_data)
150+
151+ ```
152+
153+ #### Plots
154+
155+ ``` {r}
156+ library(lubridate)
157+ library(dplyr)
158+ library(tidyr)
159+ time <- env_log_data$timestamp
160+
161+ hourly_index <- 1+0:23*720
162+
163+ time_hr <- time[hourly_index]
164+ hourly_spectra <- env_log_spectra$spectra[hourly_index,]
165+ wavelengths <- env_log_spectra$wavelengths
166+
167+ colnames(hourly_spectra) <- wavelengths
168+
169+ image(x = time_hr, y = wavelengths, z = hourly_spectra,
170+ xlab = 'local time', ylab = 'wavelength (nm)')
171+ ```
172+
173+ ``` {r spectra-ggplot}
174+
175+ spectra_df <- data.frame(hour = 1:24, hourly_spectra)
176+
177+ spectra_long <- spectra_df %>%
178+ gather(key = wavelength, value = radiance, -hour) %>%
179+ mutate(wavelength = as.numeric(gsub("X", "", wavelength)))
180+
181+ colnames(spectra_long)
182+
183+ library(ggplot2)
184+ ggplot(data = spectra_long, aes(x = wavelength, y = radiance)) +
185+ geom_line(size = 0.1) +
186+ ggthemes::theme_tufte() +
187+ facet_wrap(~hour, ncol = 6) +
188+ ggtitle(paste('spectra on', date))
189+
190+ ```
0 commit comments