专栏名称: 锐多宝
遥感技术教程、资讯与前沿论文
51好读  ›  专栏  ›  锐多宝

基于栅格数据计算重心转移模型——以NDVI重心转移为例

锐多宝  · 公众号  · 科技自媒体  · 2024-10-19 20:15

正文

重心转移模型可以反映对象在空间演变的过程,使用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语言计算要点:
    • 自定义函数,根据重心转移模型的公式写一个R语言函数
    • terra包的 as.data.frame 可以将栅格转为数据框,并添加像元坐标信息,也就是获取






请到「今天看啥」查看全文