重心转移模型可以反映对象在空间演变的过程,使用ArcGIS空间统计工具箱(Spatial Statistics Tools)中的平均中心(Mean Center)工具可以计算矢量数据的重心,栅格数据如何计算重心转移模型呢?本篇教程以NDVI重心转移为例给大家介绍一下如何使用R语言计算栅格数据的重心转移模型。
重心计算公式如下:
式中,
为植被覆盖重心的经纬度坐标,
、
为像元i的几何重心,
为像元i的像元值。
有了上面的公式,就可以在R语言中自定义函数进行计算,下面是一个1-12月NDVI重心转移模型的计算实例,内容包括:
栅格数据创建重心转移模型
实验数据获取
实验数据来源于
【数据共享】1982–2020年中国5 km分辨率逐月NDVI数据集
,其他类似的多波段栅格时间序列数据均可。
重心计算
数据的预处理,从上面获取得实验数据中提取12个月份的数据作为重心转移模型计算的输入。
library(terra)
library(tidyverse)
cdrndvi = rast("./cdrNDVI/cdr_MVC_CN.tif")
names(cdrndvi) = seq(as.Date("1982-01-01"), as.Date("2020-12-31"), "month")
cdrndvi
plot(cdrndvi)
cdrndvi12 = cdrndvi[[1:12]]
names(cdrndvi12) = seq(1:12)
cdrndvi12
plot(cdrndvi12)
提取了12个波段的数据:
cdrndvi12
12个月份数据的预览,图层名称已经改为月份:
plot(cdrndvi12)
-
-
自定义函数,根据重心转移模型的公式写一个R语言函数
-
terra包的
as.data.frame
可以将栅格转为数据框,并添加像元坐标信息,也就是获取
、
、