Revision 4d70d57b
Added by Benoit Parmentier about 8 years ago
climate/research/oregon/interpolation/global_product_assessment_part0_functions.R | ||
---|---|---|
9 | 9 |
# |
10 | 10 |
#AUTHOR: Benoit Parmentier |
11 | 11 |
#CREATED ON: 10/31/2016 |
12 |
#MODIFIED ON: 11/04/2016
|
|
12 |
#MODIFIED ON: 11/15/2016
|
|
13 | 13 |
#Version: 1 |
14 | 14 |
#PROJECT: Environmental Layers project |
15 | 15 |
#COMMENTS: removing unused functions and clean up for part0 global prodduct assessment part0 |
... | ... | |
137 | 137 |
month_str <- format(list_dates_produced_date_val, "%b") ## Month, char, abbreviated |
138 | 138 |
year_str <- format(list_dates_produced_date_val, "%Y") ## Year with century |
139 | 139 |
day_str <- as.numeric(format(list_dates_produced_date_val, "%d")) ## numeric month |
140 |
df_files <- data.frame(lf = basename(lf),
|
|
140 |
df_files <- data.frame(lf =lf,
|
|
141 | 141 |
date = list_dates_produced_date_val, |
142 | 142 |
month_str = month_str, |
143 | 143 |
year = year_str, |
... | ... | |
242 | 242 |
return(raster_name) |
243 | 243 |
} |
244 | 244 |
|
245 |
generate_raster_number_of_prediction_by_day <- function(i,list_param){ |
|
246 |
|
|
247 |
##This function generates raster of missing pixels and number of predictions for days with missing tiles for a given region. |
|
248 |
#INPUTS |
|
249 |
#1) list_tiles_predicted_masked |
|
250 |
#2) df_missing_tiles_day |
|
251 |
#3) r_overlap_m |
|
252 |
#4) num_cores |
|
253 |
#5) region_name |
|
254 |
#6) NA_flag_val |
|
255 |
#7) out_suffix |
|
256 |
#8) out_dir |
|
257 |
|
|
258 |
|
|
259 |
###### Start script ##### |
|
260 |
|
|
261 |
#### read in paramters |
|
262 |
list_tiles_predicted_masked <- list_param$list_tiles_predicted_masked |
|
263 |
df_missing_tiles_day <- list_param$df_missing_tiles_day |
|
264 |
r_overlap_m <- list_param$r_overlap_m |
|
265 |
num_cores <- list_param$num_cores # 6 #PARAM 14 |
|
266 |
region_name <- list_param$region_name #<- "world" #PARAM 15 |
|
267 |
NA_flag_val <-list_param$NA_flag_val |
|
268 |
out_suffix <- list_param$out_suffix |
|
269 |
out_dir <- list_param$out_dir |
|
270 |
|
|
271 |
### To add or explore later...could have differences between predictions and rmse |
|
272 |
layers_option <- c("var_pred") #arg 17 ,param 17, options are:#res_training, res_testing,ac_training, ac_testing, var_pred |
|
273 |
NA_value <- NA_flag_val |
|
274 |
#metric_name <- "rmse" #to be added to the code later... |
|
275 |
|
|
276 |
##### Select relevant day and create stack of missing tiles |
|
277 |
|
|
278 |
missing_tiles <- df_missing_tiles_day[i,] |
|
279 |
date_str <- missing_tiles$date |
|
280 |
selected_col <- names(list_tiles_predicted_masked) |
|
281 |
missing_tiles_subset <- subset(missing_tiles,select=selected_col) |
|
282 |
selected_missing <- missing_tiles_subset==1 |
|
283 |
|
|
284 |
list_missing_tiles_raster <- list_tiles_predicted_masked[selected_missing] |
|
285 |
r_tiles_s <- stack(list_missing_tiles_raster) |
|
286 |
|
|
287 |
##### Sum missing tiles in the stack and generate number of predictions by pixels |
|
288 |
|
|
289 |
datasum <- stackApply(r_tiles_s, 1:nlayers(r_tiles_s), fun = sum) |
|
290 |
|
|
291 |
### then substract missing tiles... |
|
292 |
r_day_predicted <- r_overlap_m - datasum |
|
293 |
raster_name_number_prediction <- file.path(out_dir_str,paste("r_day_number_of_prediction_sum_day_mosaiced","_",region_name,"_masked_",date_str,file_format,sep="")) |
|
294 |
writeRaster(r_day_predicted, NAflag=NA_flag_val,filename=raster_name_number_prediction,overwrite=TRUE) |
|
295 |
|
|
296 |
r_table <- ratify(r_day_predicted) # build the Raster Attibute table |
|
297 |
rat <- levels(r_table)[[1]]#get the values of the unique cell frot the attribute table |
|
298 |
#rat$legend <- paste0("tile_",1:26) |
|
299 |
tb_freq <- as.data.frame(freq(r_table)) |
|
300 |
rat$legend <- tb_freq$value |
|
301 |
levels(r_table) <- rat |
|
302 |
|
|
303 |
res_pix <- 800 |
|
304 |
#res_pix <- 480 |
|
305 |
col_mfrow <- 1 |
|
306 |
row_mfrow <- 1 |
|
307 |
|
|
308 |
png_filename <- file.path(out_dir,paste("Figure_number_of_predictionds_by_pixel_",date_str,"_",region_name,"_",out_suffix,".png",sep ="")) |
|
309 |
|
|
310 |
title_str <- paste("Number of predicted pixels for ",variable_name," on ",date_str, sep = "") |
|
311 |
|
|
312 |
png(filename=png_filename,width = col_mfrow * res_pix,height = row_mfrow * res_pix) |
|
313 |
#my_col=c('blue','red','green') |
|
314 |
my_col <- rainbow(length(tb_freq$value)) |
|
315 |
plot(r_table,col=my_col,legend=F,box=F,axes=F,main=title_str) |
|
316 |
legend(x='topright', legend =rat$legend,fill = my_col,cex=0.8) |
|
317 |
|
|
318 |
dev.off() |
|
319 |
|
|
320 |
### Day missing reclass above |
|
321 |
|
|
322 |
## do this in gdalcalc or overlay function to go faster? |
|
323 |
r_missing_day <- r_day_predicted == 0 |
|
324 |
|
|
325 |
res_pix <- 800 |
|
326 |
#res_pix <- 480 |
|
327 |
col_mfrow <- 1 |
|
328 |
row_mfrow <- 1 |
|
329 |
|
|
330 |
png_filename <- file.path(out_dir,paste("Figure_missing_predictionds_by_pixel_",date_str,"_",region_name,"_",out_suffix,".png",sep ="")) |
|
331 |
|
|
332 |
title_str <- paste("Number of predicted pixels for ",variable_name," on ",date_str, sep = "") |
|
333 |
|
|
334 |
png(filename=png_filename,width = col_mfrow * res_pix,height = row_mfrow * res_pix) |
|
335 |
#my_col=c('blue','red','green') |
|
336 |
my_col <- c("black","red") |
|
337 |
plot(r_missing_day,col=my_col,legend=F,box=F,axes=F,main=title_str) |
|
338 |
legend(x='topright', legend =c("prediced","missing"),fill = my_col,cex=0.8) |
|
339 |
|
|
340 |
dev.off() |
|
341 |
|
|
342 |
### writeout data |
|
343 |
#extension_str <- extension(lf_files) |
|
344 |
#raster_name_tmp <- gsub(extension_str,"",basename(lf_files)) |
|
345 |
#out_suffix_str <- paste0(region_name,"_",out_suffix) |
|
346 |
raster_name_missing <- file.path(out_dir_str,paste("r_missing_day_mosaiced","_",region_name,"_masked_",date_str,file_format,sep="")) |
|
347 |
writeRaster(r_missing_day, NAflag=NA_flag_val,filename=raster_name_missing,overwrite=TRUE) |
|
348 |
|
|
349 |
### generate return object |
|
350 |
obj_number_day_predicted <- list(raster_name_number_prediction,raster_name_missing) |
|
351 |
names(obj_number_day_predicted) <- c("raster_name_number_prediction","raster_name_missing") |
|
352 |
|
|
353 |
return(r_day_predicted) |
|
354 |
} |
|
355 |
|
|
356 |
|
|
357 |
|
|
245 | 358 |
############################ END OF SCRIPT ################################## |
Also available in: Unified diff
D
generate_raster_number_of_prediction_by_day