其他
R语言栅格计算之月降水量栅格合成季节降水量
月降水量计算季节降水量
以月度数据计算季节数据是很常用的操作,在这里介绍一下如何用R语言由月度栅格数据合成季节栅格数据。以降水量数据为例做个介绍。
目的
有月度数据,合成季节数据。 根据气象学上对季节的划分,3–5月为春季,6–8月为夏季,9–11月为秋季,12月至翌年2月为冬季。
操作过程
数据选取
根据气象学上对季节的划分,涉及两个年份,这个时候我们需要选出第一年3-12月的数据,还有第二年1、2月的数据。
使用 terra
包进行栅格的操作rast
读取栅格c
挑选组成新的栅格writeRaster
输出新的栅格数据
library(terra)
JJJ = vect("./SHP/JJJ.shp")
pre_2019 = rast("pre_2019.nc")
pre_2020 = rast("pre_2020.nc")
# 选取2019年3-12月,2020年1-2月组成新的时间序列
pre_s = c(pre_2019[[3:12]], pre_2020[[1:2]])
plot(pre_s)
writeRaster(pre_s, filename = "./Pre/pre_s.tif", names=pre_s@ptr[["names"]])
月度合成季度
使用 gimms
包进行月度合成季度操作gimms
用法参考以前推文:
#计算季节降水量,累加,3–5月为春季,6–8月为夏季,9–11月为秋季,12月至翌年2月为冬季
SIndices = sort(rep(1:4,3))
library(gimms)
Pre_s = stack("./Pre/pre_s.tif")
SPre = monthlyComposite(Pre_s, fun=sum, indices=SIndices, cores=4)
plot(SPre)
数据后处理
前面合成完数据后,需要对数据按照研究区范围进行裁剪,图层名称修改等,方便后面数据的使用。
Spre = rast(SPre)
Spre_JJJ = trim(mask(Spre, JJJ))
names(Spre_JJJ) = c("Spring", "Summer", "Autumn", "Winter")
plot(Spre_JJJ)
#0.1mm转化为mm降水量单位
Spre_JJJ = Spre_JJJ/10
writeRaster(Spre_JJJ, filename = "./Pre/pre_JJJ.tif", names=Spre_JJJ@ptr[["names"]])
参考文献
【数据分享】中国1km分辨率逐月降水、最低最高平均气温数据1901-2019 R语言GIMMS NDVI数据下载与合成 一文搞定多年平均月度气温、降水计算 GIMMS和MODIS NDVI时间序列对比分析 白燕. 秦岭-大巴山地区NDVI时空变化趋势数据集(2000-2019)[J/DB/OL]. 全球变化数据仓储电子杂志, 2020. https://doi.org/10.3974/geodb.2020.06.10.V1.
点击阅读原文查看视频讲解