-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1_CheckAllRastersPresent.R
More file actions
110 lines (80 loc) · 3.43 KB
/
Copy path1_CheckAllRastersPresent.R
File metadata and controls
110 lines (80 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
require(tools)
require(dplyr)
#CHANGE INPUTS HERE
datefrequency<-"seasonal"
filedirectory="S:\\GCMC\\Data\\Greenness\\CanopyCover/NLCD/nlcd_tcc_CONUS_1230mfs/"
##############################################################################################
CheckAllRastersPresent<-function(datefrequency,filedirectory){
#List all Files
filedir<- list.files(filedirectory,pattern="*.tif$",full.names = T)
#Get file names of rasters from path
allFiles<-file_path_sans_ext(basename(filedir))
head(allFiles)
bnames<-unique(
sapply(
X = strsplit(allFiles,"-"),
FUN = function(x){paste(x[1:3],collapse="-")}))
#FileName Grid
raster_atts<-as.data.frame(do.call(rbind, strsplit(allFiles,"_")))
colnames(raster_atts)<-c("metric","resolution","date")
# Tabulate metrics
actual_metrics<- raster_atts |> count(metric)
# Tabulate resolution
actual_resolutions<- raster_atts |> count(resolution)
# Tabulate Dates
actual_dates<- raster_atts |> count(date)
## Compare tabulated totals with expected
#Expected metric
metric<-unique(sapply(X =strsplit(allFiles,"_"),FUN = function(x){x[1]}))
metric<-metric[order(metric)]
#Expected resolution
spat_resolution<-unique(sapply(X = strsplit(bnames,"_"),FUN = function(x){x[2]}))
spat_resolution<-spat_resolution[order(spat_resolution)]
#Expected dates
if(datefrequency =="seasonal"){
startdate=as.Date("1984-01-01")
enddate=as.Date(paste0(format(Sys.Date(), "%Y"), "-01-01"))
dateseq<-as.character(seq.Date(startdate,enddate,by = "quarter"))
}else if(datefrequency=="daily"){
startdate=as.Date("1984-01-01")
enddate=as.Date(paste0(format(Sys.Date(), "%Y"), "-01-01"))
dateseq<-as.character(seq.Date(startdate,enddate,by = "day"))
}else if(datefrequency=="yearly"){
startdate=as.Date("1984-01-01")
enddate=as.Date(paste0(format(Sys.Date(), "%Y"), "-01-01"))
dateseq<-as.character(seq.Date(startdate,enddate,by = "year"))
}
### Tabulate Expected Counts
expected<-expand.grid(metric,spat_resolution,dateseq,stringsAsFactors = F)
colnames(expected)<-c("metric","resolution","date")
# Tabulate metrics
expected_metrics<- data.frame(expected |> count(metric))
# Tabulate resolution
expected_resolutions<- data.frame(expected |> count(resolution))
# Tabulate Dates
expected_dates<- data.frame(expected |> count(date))
## Compare Metrics
if(isTRUE(all.equal(expected_metrics,actual_metrics))){
message("All Expected Files are present, and there are no extraneous files. ")
}else{
all.equal(expected_metrics,actual_metrics)
all.equal(expected_resolutions,actual_resolutions)
all.equal(expected_dates,actual_dates)
message("The following files are expected but not found: ")
print(setdiff(expected, raster_atts))
message("The following files were found, but not expected. Check File names for consistency: ")
print(setdiff(raster_atts,expected))
}
}
CheckAllRastersPresent(datefrequency = datefrequency,filedirectory = filedirectory)
###################################
##Check all rasters have values
require('terra')
dirpath<-"S:/GCMC/ZZ_GreennessRO1/Data/EVI/mosaics/"
mosaicsfiles<-list.files(path=dirpath,full.names=T,recursive=T,pattern="*.tif$")
emptyRasters<-c()
for(i in mosaicsfiles){
rastinfo<-rast(i)
rvalues<-any(as.numeric(terra::global(rastinfo, fun = "anynotNA")[,1]) > 0)
if(rvalues){}else{emptyRasters<-c(emptyRasters,i)}
}