【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理

本文目录

  • 前言
  • Terra包
  • 本文主要内容
  • 安装包
  • 读入数据
  • 绘图显示
  • 数据处理
      • 1. 多波段栅格各图层重命名
      • 2. 相关性
      • 3. 统计
      • 4. 计算NDVI
      • 5.异常值处理
  • 总结

前言

本系列将介绍R中的Terra包,水平有限,多多指教,如有错误,欢迎指正。`

Terra包

terra是用于空间数据分析的 R 包,是raster包的升级版,可用于栅格数据和矢量数据处理和空间分析。
此外在R中,还有sf、sp、raster、stars等包可用于处理空间数据。

本文主要内容

主要介绍栅格和矢量的读写、相关性计算、获取统计值、NDVI的计算、异常值处理等内容

安装包

install.packages("terra")
#或者
remotes::install_github("rspatial/terra")

读入数据

  • 栅格数据用rast读取,即可读取单波段栅格,也可读取多波段栅格包括 nc 和hdf等数据;
  • 矢量用vect读取;
  • 如下图所示,rast包括栅格的像元行列个数、图层数或者波段数、分辨率等信息;vect包括了矢量的维度和属性字段等信息。
# 加载栅格,f2为landsat5 多波段合成的tif
f2 <- rast("E:/Data/R_save/dingxi/L5_2010nian_130_36_jz_2.tif")
f2
# 加载矢量,行政区划
bj <- vect("E:/Data/R_save/dingxi/bjt.shp")
bj

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第1张图片【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第2张图片

绘图显示

plot( )可绘制显示栅格或矢量,plotRGB( )可显示真彩色或假彩色合成

plot(f2)
#真彩色显示,stretch有lin、hist两种
plotRGB(f2, 4,3,2, stretch = "lin" )

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第3张图片
【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第4张图片

数据处理

1. 多波段栅格各图层重命名

names(f2)
names(f2) <-paste("b",1:6,sep="")    # 重命名
names(f2)

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第5张图片

2. 相关性

函数各图层间的相关性:layerCor( )
两个图层像元间的相关性:pairs( )

#计算图层间的相关性
layerCor(f2[[1:6]], "pearson",  na.rm = TRUE)  

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第6张图片

#计算两个波段的相关系
pairs(f2[[1:2]], main="B1-B2")

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第7张图片

3. 统计

整个图层的统计:global( )
图层像元的统计:quantile( )

#汇总每个图层的统计
global(f2, 'mean', na.rm = TRUE)
global(f2, quantile, na.rm = TRUE)

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第8张图片

#基于像元的分位数
qc1 <- quantile(f2)
plot(qc1)
qc1

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第9张图片

4. 计算NDVI

#定义函数
mndvi <- function(x, y) {
  (x - y) / (x + y) }
#计算NDVI
dx_ndvi <- mndvi(f2$b4,f2$b3)
plot(dx_ndv

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第10张图片

5.异常值处理

由上面NDVI的图可知,不在[-1 -1]之间内,获取NDVI极值

#获取NDVI极值
minmax(dx_ndvi)
#直接打印也可以
dx_ndvi

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第11张图片
处理异常值

dx_ndvi[dx_ndvi > 1|dx_ndvi <= -1] <- NA
#dx_ndvi_1<- clamp(dx_ndvi, -1, 1)    # clamp()函数也可以 
minmax(dx_ndvi)
##绘图显示最终NDVI
plot(dx_ndvi, col = rev(terrain.colors(20)) )

【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第12张图片
【R-terra包|第一节】- 栅格相关性、散点图 、波段的计算与异常值处理_第13张图片

总结

以上是terra包第一节内容,下一节将介绍NDVI的重分类、投影变换和区域统计等。

terra包帮助文档地址:
https://cran.r-project.org/web/packages/terra/

欢迎关注我,以及订阅同名微信公众号,以GIS、RS和点云处理为主。

你可能感兴趣的:(R-terra包,空间数据处理,r语言)