[英]Error in Implementing levelplot in R for a Categorical Raster with RAT
我有一個 in.tif 格式的柵格,我試圖使用 levelplot 在 R 中可視化它。 這是我到目前為止所做的:
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 的 object "c('RasterLayer', 'Raster', 'BasicRaster')"
如何解決此錯誤? 這是我的老鼠的樣子:
# 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="")
然后你得到這個 plot: 但是,如果您使用以下腳本,則會遇到錯誤消息:
> levelplot(r, col.regions=rev(terrain.colors(4)), xlab="", ylab="")
UseMethod("levelplot") 中的錯誤:沒有適用於 'levelplot' 的方法應用於 class 的 object "c('RasterLayer', 'Raster', 'BasicRaster')"
Note that even if you only load raster
package (not lattice
), you may still see this error as the lattice
and rasterVis
share same function levelplot
and raster
package automatically loads lattice
. 要解決這個問題,請使用rasterVis::levelplot
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.