在 R 中为带有 RAT 的分类栅格实施 levelplot 时出错

Error in Implementing levelplot in R for a Categorical Raster with RAT

我有一个 .tif 格式的栅格,我试图在 R 中使用 levelplot 对其进行可视化。这是我到目前为止所做的:

library(raster)
library(lattice)

data_tif <- raster("fthrt14_21.tif", RAT = TRUE)
data_tif

rat <- read.dbf("fthrt14_21.tif.vat.dbf")
rat
data_tif <- ratify(data_tif)
colnames(rat)[1] <- "ID"
levels(data_tif) <- rat


levelplot(data_tif, col.regions=rev(terrain.colors(5)),main = "Fire Threats"
          , attr(THRT_CLASS))

我收到一个错误:UseMethod("levelplot") 错误: 没有适用于 'levelplot' 的方法应用于 class "c('RasterLayer', 'Raster', 'BasicRaster')"

的对象

我该如何解决这个错误?这是我的 RAT 的样子:

# Code for getting reproducible example of RAT file
Value <- c(1,2,3,4,5)
Count <- c(15918472,127852558,102695341,108155367,8927377)
THRT_CLASS <- c("Low","Moderate","High","Very High","Extreme")

RAT <- data.frame(Value,Count,THRT_CLASS

好吧,这有点棘手!首先是加载 rasterlattice 库,然后使用 lattice::levelplot 绘制分类栅格。但是,您应该为此目的使用 rasterVis::levelplot

library(raster)
library(rasterVis)


## Example data
r <- raster(ncol=4, nrow=2)
r[] <- sample(1:4, size=ncell(r), replace=TRUE)
r <- as.factor(r)

## Add a landcover column to the Raster Attribute Table
rat <- levels(r)[[1]]
rat[["landcover"]] <- c("land","ocean/lake", "rivers","water bodies")
levels(r) <- rat

## Plot
rasterVis::levelplot(r, col.regions=rev(terrain.colors(4)), xlab="", ylab="")

然后你得到这个情节: 但是,如果您使用以下脚本,则会遇到错误消息:

> levelplot(r, col.regions=rev(terrain.colors(4)), xlab="", ylab="")

Error in UseMethod("levelplot") : no applicable method for 'levelplot' applied to an object of class "c('RasterLayer', 'Raster', 'BasicRaster')"

请注意,即使您只加载 raster 包(而不是 lattice),您仍可能会看到此错误,因为 latticerasterVis 共享相同的功能 levelplotraster 包自动加载 lattice。要解决此问题,请使用 rasterVis::levelplot.