从NETCDF R生成时间序列向量(空间平均值)

时间:2015-11-11 05:12:57

标签: r datetime raster netcdf

我有一个NETCDF文件,其属性为lon,lat,time,precipitation。数据涵盖特定的空间域。它是1960年至2100年的每日数据。

1)我想在空间上对数据进行子集化(例如lat [45,50]和lon [-78,-85])来自主域

2)从子集中,我想对所有网格进行平均,并生成每列时间序列的单列,然后将其写入.csv文件。

注意:我的数据包含缺失值

3 个答案:

答案 0 :(得分:3)

这些方面应该有所作为

date <- getZ(be)

通常,也要获取日期:

date <- names(a)
date <- gsub('X', '', date)

v <- data.frame(date=date, prec=v)
write.csv(v, 'precip.csv', row.names=FALSE)

然后

function children(d){
return d.values;
}

此日期是否可读取取决于它是如何存储在ncdf文件中的(即是否遵循某些约定)。

答案 1 :(得分:3)

这将进行剪切和平均,但将答案写入另一个netcdf。如果您确实需要CSV,那么您需要使用上述解决方案的那一部分。

Department

答案 2 :(得分:0)

library (ncdf4)

nc <- nc_open("netcdf.nc")

lon <- ncvar_get(nc,"lon")
lat <- ncvar_get(nc,"lat")
time <- ncvar_get(nc,"time")

lon_lim <- c(45,50)
lat_lim <- c(-78,-85)

lon_ind <- which(lon >= lon_lim[1] & lon <= lon_lim[2])
lat_ind <- which(lat >= lat_lim[1] & lat <= lat_lim[2])

precip <- ncvar_get(nc,"precip",start = c(lon_ind[1],lat_ind[1],time),count = c(length(lon_ind),length(lat_ind),length(time)))

ts <- apply(precip,3,mean,na.rm=TRUE)