Project

General

Profile

« Previous | Next » 

Revision 1523a1e7

Added by Adam Wilson about 11 years ago

minor clean up to MOD35 Climatology

View differences:

climate/procedures/MOD35_Climatology.r
76 76

  
77 77
## merge all daily files to create a single file with all dates
78 78
system(paste(ncopath,"ncrcat -O ",outdir,"/*nc ",outdir2,"/MOD35_",tile,"_daily.nc",sep=""))
79

  
79
 
80 80
## Update attributes
81 81
system(paste(ncopath,"ncatted ",
82 82
" -a units,time,o,c,\"days since 2000-1-1 0:0:0\" ",
......
97 97

  
98 98
## Monthly means
99 99
if(verbose) print("Calculating the monthly means")
100
system(paste("cdo -O sorttimestamp -setyear,",myear," -setday,15 -ymonmean -mulc,1.0 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymonmean.nc",sep=""),wait=T)
100
system(paste("cdo -O sorttimestamp -setyear,",myear," -setday,15 -ymonmean -mulc,-1 -subc,100 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymonmean.nc",sep=""),wait=T)
101
system(paste(ncopath,"ncrename -v PClear,PCloud ",tsdir,"/MOD35_",tile,"_ymonmean.nc",sep=""))
102
system(paste(ncopath,"ncatted ",
103
" -a long_name,PCloud,o,c,\"Mean Probability of Cloud\" ",
104
tsdir,"/MOD35_",tile,"_ymonmean.nc",sep=""))
101 105

  
102 106
## Monthly standard deviation
103 107
if(verbose) print("Calculating the monthly SD")
104
system(paste("cdo -O sorttimestamp -setyear,",myear," -setday,15 -ymonstd ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymonstd.nc",sep=""))
105
system(paste(ncopath,"ncrename -v CLD,CLD_sd ",tsdir,"/MOD35_",tile,"_ymonstd.nc",sep=""))
108
system(paste("cdo -O sorttimestamp -setyear,",myear," -setday,15 -ymonstd -mulc,-1 -subc,100 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymonstd.nc",sep=""))
109
system(paste(ncopath,"ncrename -v PClear,PCloud_sd ",tsdir,"/MOD35_",tile,"_ymonstd.nc",sep=""))
106 110
system(paste(ncopath,"ncatted ",
107
#" -a long_name,CER_sd,o,c,\"Cloud Particle Effective Radius (standard deviation of daily observations)\" ",
108
" -a long_name,CLD_sd,o,c,\"Cloud Mask (standard deviation of daily observations)\" ",
109
#" -a long_name,COT_sd,o,c,\"Cloud Optical Thickness (standard deviation of daily observations)\" ",
111
" -a long_name,PCloud_sd,o,c,\"Standard Deviation of p(cloud)\" ",
110 112
tsdir,"/MOD35_",tile,"_ymonstd.nc",sep=""))
111 113

  
112
## cld == 0
113
if(verbose) print("Calculating the proportion of cloudy days")
114
system(paste("cdo -O  sorttimestamp -setyear,",myear," -setday,15 -nint -mulc,100 -ymonmean -mulc,1.0 -eqc,0 -setctomiss,1 -selvar,CLD2 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymoncld0.nc",sep=""))
115
system(paste(ncopath,"ncrename -v CLD2,CLD0 ",tsdir,"/MOD35_",tile,"_ymoncld0.nc",sep=""))
114
## frequency of cloud days p(clear<90%)  
115
if(verbose) print("Calculating the proportion of cloudy and probably cloudy days")
116
system(paste("cdo -O  sorttimestamp -setyear,",myear," -setday,15 -nint -ymonmean  -mulc,100  -lec,90 -selvar,PClear ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymoncld01.nc",sep=""))
117
system(paste(ncopath,"ncrename -v PClear,CF ",tsdir,"/MOD35_",tile,"_ymoncld01.nc",sep=""))
116 118
system(paste(ncopath,"ncatted ",
117
" -a long_name,CLD0,o,c,\"Proportion of Days with Cloud Mask == 0\" ",
118
" -a units,CLD0,o,c,\"Proportion\" ",
119
tsdir,"/MOD35_",tile,"_ymoncld0.nc",sep=""))
120

  
121
## cld == 0|1
122
if(verbose) print("Calculating the proportion of cloudy days")
123
system(paste("cdo -O  sorttimestamp -setyear,",myear," -setday,15 -nint -mulc,100 -ymonmean  -mulc,1.0 -lec,1 -selvar,CLD2 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymoncld01.nc",sep=""))
124
system(paste(ncopath,"ncrename -v CLD2,CLD01 ",tsdir,"/MOD35_",tile,"_ymoncld01.nc",sep=""))
125
system(paste(ncopath,"ncatted ",
126
" -a long_name,CLD01,o,c,\"Proportion of Days with Cloud Mask == 0|1\" ",
127
" -a units,CLD01,o,c,\"Proportion\" ",
119
" -a long_name,CF,o,c,\"Cloud Frequency: Proportion of Days with probability of clear < 90%\" ",
120
" -a units,CF,o,c,\"Proportion (%)\" ",
128 121
tsdir,"/MOD35_",tile,"_ymoncld01.nc",sep=""))
129 122

  
130
## cld == 1
131
if(verbose) print("Calculating the proportion of uncertain days")
132
system(paste("cdo -O  sorttimestamp -setyear,",myear," -setday,15 -nint -mulc,100 -ymonmean  -mulc,1.0 -eqc,1 -selvar,CLD2 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymoncld1.nc",sep=""))
133
system(paste(ncopath,"ncrename -v CLD2,CLD1 ",tsdir,"/MOD35_",tile,"_ymoncld1.nc",sep=""))
134
system(paste(ncopath,"ncatted ",
135
" -a long_name,CLD1,o,c,\"Proportion of Days with Cloud Mask == 1 (uncertain)\" ",
136
" -a units,CLD1,o,c,\"Proportion\" ",
137
tsdir,"/MOD35_",tile,"_ymoncld1.nc",sep=""))
138

  
139

  
140
## cld >= 2 (setting cld==01 to missing because 'uncertain')
141
if(verbose) print("Calculating the proportion of clear days")
142
system(paste("cdo -O  sorttimestamp -setyear,",myear," -setday,15 -nint -mulc,100 -ymonmean  -mulc,1.0 -gtc,1 -setctomiss,1 -selvar,CLD2 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymoncld2.nc",sep=""))
143
system(paste(ncopath,"ncrename -v CLD2,CLD23 ",tsdir,"/MOD35_",tile,"_ymoncld2.nc",sep=""))
144
system(paste(ncopath,"ncatted ",
145
" -a long_name,CLD23,o,c,\"Proportion of Days with Cloud Mask >= 2 (Probably Clear or Certainly Clear)\" ",
146
" -a units,CLD23,o,c,\"Proportion\" ",
147
tsdir,"/MOD35_",tile,"_ymoncld2.nc",sep=""))
148

  
149
## cld >= 1
150
if(verbose) print("Calculating the proportion of clear days")
151
system(paste("cdo -O  sorttimestamp -setyear,",myear," -setday,15 -nint -mulc,100 -ymonmean  -mulc,1.0 -gec,1 -selvar,CLD2 ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymoncld13.nc",sep=""))
152
system(paste(ncopath,"ncrename -v CLD2,CLD13 ",tsdir,"/MOD35_",tile,"_ymoncld13.nc",sep=""))
153
system(paste(ncopath,"ncatted ",
154
" -a long_name,CLD13,o,c,\"Proportion of Days with Cloud Mask >= 1\" ",
155
" -a units,CLD13,o,c,\"Proportion\" ",
156
tsdir,"/MOD35_",tile,"_ymoncld13.nc",sep=""))
157

  
158 123
## number of observations
159 124
if(verbose) print("Calculating the number of missing variables")
160
system(paste("cdo -O sorttimestamp  -setyear,",myear," -setday,15 -nint -mulc,100 -ymonmean  -mulc,1.0 -eqc,9999 -setmisstoc,9999   -selvar,CLD ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymonmiss.nc",sep=""))
161
system(paste(ncopath,"ncrename -v CLD,CLD_pmiss ",tsdir,"/MOD35_",tile,"_ymonmiss.nc",sep=""))
125
system(paste("cdo -O sorttimestamp  -setyear,",myear," -setday,15 -nint -ymonmean -mulc,100  -eqc,9999 -setmisstoc,9999   -selvar,CLD ",outdir2,"/MOD35_",tile,"_daily.nc ",tsdir,"/MOD35_",tile,"_ymonmiss.nc",sep=""))
126
system(paste(ncopath,"ncrename -v PClear,CF_pmiss ",tsdir,"/MOD35_",tile,"_ymonmiss.nc",sep=""))
162 127
system(paste(ncopath,"ncatted ",
163
" -a long_name,CLD_pmiss,o,c,\"Proportion of Days with missing data for CLD\" ",
164
" -a scale_factor,CLD_pmiss,o,d,0.01 ",
165
" -a units,CLD_pmiss,o,c,\"Proportion\" ",
128
" -a long_name,CF_pmiss,o,c,\"Proportion of Days with missing data for CF\" ",
129
" -a scale_factor,CF_pmiss,o,d,0.01 ",
130
" -a units,CF_pmiss,o,c,\"Proportion (%)\" ",
166 131
tsdir,"/MOD35_",tile,"_ymonmiss.nc",sep=""))
167 132

  
168 133
## TODO: fix projection information so GDAL can read it correctly.
......
172 137
if(verbose) print("Append all monthly climatologies into a single file")
173 138
system(paste(ncopath,"ncks -O ",tsdir,"/MOD35_",tile,"_ymonmean.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
174 139
system(paste(ncopath,"ncks -A ",tsdir,"/MOD35_",tile,"_ymonstd.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
175
system(paste(ncopath,"ncks -A ",tsdir,"/MOD35_",tile,"_ymoncld0.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
176 140
system(paste(ncopath,"ncks -A ",tsdir,"/MOD35_",tile,"_ymoncld01.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
177
system(paste(ncopath,"ncks -A ",tsdir,"/MOD35_",tile,"_ymoncld1.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
178
system(paste(ncopath,"ncks -A ",tsdir,"/MOD35_",tile,"_ymoncld2.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
179 141
system(paste(ncopath,"ncks -A ",tsdir,"/MOD35_",tile,"_ymonmiss.nc  ",tsdir,"/MOD35_",tile,"_ymon.nc",sep=""))
180 142

  
181 143
## append sinusoidal grid from one of input files as CDO doesn't transfer all attributes
......
195 157
" -a units,time,o,c,\"days since 2000-1-1 0:0:0\" ",
196 158
" -a title,global,o,c,\"MODIS Cloud Product (MOD35) Climatology\" ",
197 159
" -a institution,global,o,c,\"Yale University\" ",
198
" -a source,global,o,c,\"MODIS Cloud Product (MOD35)\" ",
160
" -a source,global,o,c,\"MODIS Cloud Product (MOD35) Collection 6\" ",
199 161
" -a comment,global,o,c,\"Compiled by Adam M. Wilson (adam.wilson@yale.edu)\" ",
200 162
outdir2,"/MOD35_",tile,".nc",sep=""))
201 163

  
......
205 167
print(table(fdly$fyear))
206 168
print("Months:")
207 169
print(table(fdly$fmonth))
208

  
170
 
209 171
## quit R
210 172
q("no")
211 173
 

Also available in: Unified diff