本系列将介绍R中的Terra包,水平有限,多多指教,如有错误,欢迎指正。`
terra是用于空间数据分析的 R 包,是raster包的升级版,可用于栅格数据和矢量数据处理和空间分析。
此外在R中,还有sf、sp、raster、stars等包可用于处理空间数据。
主要介绍栅格和矢量的读写、相关性计算、获取统计值、NDVI的计算、异常值处理等内容
install.packages("terra")
#或者
remotes::install_github("rspatial/terra")
# 加载栅格,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
plot( )可绘制显示栅格或矢量,plotRGB( )可显示真彩色或假彩色合成
plot(f2)
#真彩色显示,stretch有lin、hist两种
plotRGB(f2, 4,3,2, stretch = "lin" )
names(f2)
names(f2) <-paste("b",1:6,sep="") # 重命名
names(f2)
函数各图层间的相关性:layerCor( )
两个图层像元间的相关性:pairs( )
#计算图层间的相关性
layerCor(f2[[1:6]], "pearson", na.rm = TRUE)
#计算两个波段的相关系
pairs(f2[[1:2]], main="B1-B2")
整个图层的统计:global( )
图层像元的统计:quantile( )
#汇总每个图层的统计
global(f2, 'mean', na.rm = TRUE)
global(f2, quantile, na.rm = TRUE)
#基于像元的分位数
qc1 <- quantile(f2)
plot(qc1)
qc1
#定义函数
mndvi <- function(x, y) {
(x - y) / (x + y) }
#计算NDVI
dx_ndvi <- mndvi(f2$b4,f2$b3)
plot(dx_ndv
由上面NDVI的图可知,不在[-1 -1]之间内,获取NDVI极值
#获取NDVI极值
minmax(dx_ndvi)
#直接打印也可以
dx_ndvi
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)) )
以上是terra包第一节内容,下一节将介绍NDVI的重分类、投影变换和区域统计等。
terra包帮助文档地址:
https://cran.r-project.org/web/packages/terra/
欢迎关注我,以及订阅同名微信公众号,以GIS、RS和点云处理为主。