在 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
好吧,这有点棘手!首先是加载 raster
和 lattice
库,然后使用 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
),您仍可能会看到此错误,因为 lattice
和 rasterVis
共享相同的功能 levelplot
和 raster
包自动加载 lattice
。要解决此问题,请使用 rasterVis::levelplot
.
我有一个 .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
好吧,这有点棘手!首先是加载 raster
和 lattice
库,然后使用 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
),您仍可能会看到此错误,因为 lattice
和 rasterVis
共享相同的功能 levelplot
和 raster
包自动加载 lattice
。要解决此问题,请使用 rasterVis::levelplot
.