免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 156|回复: 2
收起左侧

[经验共享] R语言实现ndvi计算

[复制链接]

4

主题

433

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
46
发表于 2023-10-27 14:58 | 显示全部楼层 |阅读模式
基于terra包,先放代码:
library(pacman)
p_load(sp,terra,fs,sf,tidyverse)
b1<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B1.TIF")
> b2<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B2.TIF")
> b3<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B3.TIF")
> b4<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B4.TIF")
> b5<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B5.TIF")
> b6<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B6.TIF")
> b7<-rast(".../LC08_L2SP_122043_20221224_20230103_02_T1_SR_B7.TIF")
pre<-c(b1,b2,b3,b4,b5,b6,b7)
names(pre)<-c('coa','blue','green','red','nir','swir1','swir2')##基础数据准备,加载影像,命名波段,实测landset8/9和sentinel2都可以这样读取。我这下载的数据是预先去云和校准了的,R里怎么搞些我没找到包。

fg<-vect(".../xian.shp")
pre_fg<-crop(pre_crop,fg,mask=T)##按掩膜提取,已经预先把.shp的坐标系转为WGS 1984 UTM Zone 49N。

mndvi<-function(nir,red){
ndvi<-(nir-red)/(nor+red)
return(ndvi)}##定义ndvi计算方法。

pre_fg_ndvi<-mndvi(pre_fg$nir,pre_fg$red)##计算ndvi

quantile(as.array(pre_fg_ndvi),probs=seq(0,1,0.1),T)##提取栅格的0.1分位数,要将栅格转为数组
hist(pre_fg_ndvi,breaks=40)

rr<-c(-0.1,0.24,1,0.24,0.32,2,0.32,0.6,3)
rm<-matrix(rr,ncol=3,byrow=T)
fg_ndvi<-classify(pre_fg_ndvi,rm,include.lowest=TRUE)##栅格重分类,-0.1~0.24定义为1,依此类推,区间瞎选的。

writeRaster(fg_ndvi,".../fg_ndvi.tif",overwrite=T)##输出栅格

5

主题

3395

铜板

8

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
629
发表于 2023-11-9 15:13 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

6800

铜板

1

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1317
发表于 2023-12-25 14:55 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表