我有时间在R中使用rts。我有一套栅格,我需要在一段时间内找到平均值。这是我到目前为止所做的:
fun1G<-function(x){
attr1<-"HDFEOS/GRIDS/ColumnAmountNO2/Data Fields/ColumnAmountNO2Trop"
y<-h5read(x,attr1)
y[y<=0]=NA
z<-t(y)
R1<-raster (z, xmn=-180,xmx=180,ymn=-90,ymx=90)
R2<-flip (R1,direction="y")
proj4string(R2)<-CRS("+proj=utm +ellps=WGS84")
myproj = "+proj=utm +north +zone=28, 29, 30,31, 32, 33 +ellps=WGS84"
WA= readShapeSpatial("West_Africa.shp", proj4string = CRS(myproj))
WAN<- as(WA, 'SpatialPolygons')
frm <- extent(c(-19, 19,2,29))
pfrm <- as(frm, 'SpatialPolygons')
#Create Buffer around west africa (WAN) to crop to good extents
BUFF2<-gBuffer(WAN,width=1)
WAE<-crop(R2,pfrm)}
regexp2<-"([[:digit:]]{4})([[:alpha:]]{1})([[:digit:]]{4})"
##To extract the dates
DatesOMI<-lapply(OMI, function(x)stri_extract_first_regex(x,regexp2))
##To remove "m" from the dates
DateO2<-gsub("m", "", DatesOMI)
DDO2<-data.frame(DateO2)
DDO3<-DDO2[["DateO2"]]
#COnvert straight to dates
Timex<-as.Date(DDO3, "%Y%m%d")
#### TO create the rts(raster time series) and subset
RNOM2<-stack(CM2)
NOrts<-rts(RNOM2,Timex)
RN0411<-NOrts[["2004-10-30/2011-07-10"]]
##TO get the monthly data
RNMM<-apply.monthly(RN0411,mean,na.rm=T)
我很难将12月到12月的均值分组,然后生成平均栅格。这就是我能够为这几个月中的每一个子集做的事情:
###Subset for december, January and february
Decsub<-subset(RNMM, seq(from=3, to=82, by=12))
Jansub<-subset(RNMM, seq(from=4, to=82, by=12))
Febsub<-subset(RNMM, seq(from=5, to=82, by=12))
这看起来很长的路并没有让我得到我需要的最终结果。请问最简单的选择是什么?
答案 0 :(得分:0)
我最终使用的方法是:
MMD<-period.apply(Decsub,FUN=mean,na.rm=T,INDEX=...)
MMJ<-period.apply(Jansub,FUN=mean,na.rm=T,INDEX=...)
其中INDEX是每个子集中栅格的总数。 写入文件
write.rts(MMD,"Decsub",overwrite=T)
write.rts(CMMW,"Jansub",overwrite=T)
write.rts(CMMW,"Febsub",overwrite=T)
R将这些文件写入3个文件的单个文件夹中,因此您需要将这些文件复制到主工作文件夹中。 作为单独的栅格带回来
D<-raster("Deccub.gri")
J<-raster("Jansub.gri")
F<-raster("Febsub.gri")
堆叠栅格
DJF<-stack(D,J,F)
DJFmean <- calc(DJF,mean)
不幸的是,R中的rts包对于做某些事情并不那么强大。