其他
QGIS和R语言栅格数据重分类
QGIS和R语言栅格数据重分类
重分类(Reclassify)是栅格数据处理中常用的操作,可以用于将土地覆被地类合并,或者将连续的像元值合并为离散的值(NDVI时间序列分析之Sen+MK分析全过程梳理)等等。
常用的GIS软件ArcGIS、QGIS都可以实现栅格数据的重分类。ArcGIS重分类网上已经很多了,不再赘述,这里主要讲讲QGIS和R语言里面的重分类。相比ArcGIS有什么特点呢?
QGIS优势
QGIS相比ArcGIS有这更高的栅格处理效率 QGIS免费 QGIS栅格显示不出错,多波段的栅格ArcGIS显示经常出问题 栅格数据的一些概念和常用处理方法,ArcGIS栅格数据显示错误问题如何解决 R语言优势
下面我们分别来看在QGIS和R语言中如何进行栅格数据的重分类。
可以并行计算:对比R语言Raster包和Terra包栅格计算 rgee
可以调用Google Earth Engine服务,实现遥感大数据分析:【更新】rgee: An R package for interacting with Google Earth EngineR栅格计算结果可以结合 ggplot2
、tidyverse
很方便的实现统计分析出图
QGIS栅格重分类
QGIS中我一般常用Reclassify by Table,和ArcGIS中Reclassify工具很接近。
使用Reclassify by Table进行重分类需要设置以下几点:
Raster layer:要进行重分类的栅格数据层 Reclassification table:重分类的值域,最大值、最小值,分类后value Range boundaries:重分类值域开闭区间 Output data type:输出数据的类型,对于土地覆被数据,一般使用byte即可。 Reclassified raster:重分类后的栅格,输出数据
Reclassification table:重分类的值域,在这是自己设置一个表格,告诉QGIS如何分类
举个例子,IGBP分类分的类别比较多,为了提取植被区域,我划分了林地、草地、耕地,如上图所示进行了重分类,结果如下:
R语言重分类
R语言terra
包中可以使用classify
函数进行重分类,也可以使用app
栅格计算函数通过自定义function的方式进行。
classify重分类
需要读取栅格 rast
指定重分类矩阵 classify
重分类include.lowest=T, right=F
设置开闭区界,左闭右开
library(terra)
CDR_slope = rast("./Sen+MK/CDR_slope.tif")
#重分类,<0 negative; >0 positive
m = c(-1, 0, -1,
0, 1, 1)
rclmat = matrix(m, ncol = 3, byrow = T)
CDR_slope_rcl = classify(CDR_slope, rclmat, include.lowest=T, right=F)
栅格计算自定义重分类
使用app
函数进行栅格计算,可以自定义重分类,将多个地类合并,提取单一地类的栅格计算结果很方便。
要点:
自定义function app
栅格计算
library(terra)
lucc = rast("D:/R/CMRrgee/LUCC/CMR_lucc0115_reclass.tif")
#重分类
reclass <- function(a) {
ifelse (a < 4, a, NA) #1森林2草地3耕地,<4植被
}
#单独的森林、草地、耕地
forest = app(lucc, reclass, cores=4)