查看原文
其他

R语言栅格计算之月降水量栅格合成季节降水量

走天涯徐小洋 走天涯徐小洋地理数据科学 2022-07-17

月降水量计算季节降水量

以月度数据计算季节数据是很常用的操作,在这里介绍一下如何用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"]])
选取2019年3-12月,2020年1-2月组成新的时间序列

月度合成季度

#计算季节降水量,累加,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"]])
京津冀春夏秋冬降水量分布

参考文献

  1. 【数据分享】中国1km分辨率逐月降水、最低最高平均气温数据1901-2019
  2. R语言GIMMS NDVI数据下载与合成
  3. 一文搞定多年平均月度气温、降水计算
  4. GIMMS和MODIS NDVI时间序列对比分析
  5. 白燕秦岭-大巴山地区NDVI时空变化趋势数据集(2000-2019[J/DB/OL]. 全球变化数据仓储电子杂志, 2020. https://doi.org/10.3974/geodb.2020.06.10.V1.

点击阅读原文查看视频讲解

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存