我目前正在使用 terra 来操作栅格。其中之一属于基岩类型。
class : SpatRaster
dimensions : 4346, 5235, 1 (nrow, ncol, nlyr)
resolution : 0.008333333, 0.008333333 (x, y)
extent : -10.62514, 32.99986, 34.99986, 71.21653 (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 (EPSG:4326)
source : lithology.tif
categories : xx
name : xx
min value : sc
max value : ig
但是当我尝试绘制它时,我得到:
plot(x)
#[plot] unknown categories in raster values
我认为这可能是某些功能无法正常工作的症状。因为之后,我在使用这个栅格的多个模型上遇到了麻烦。
以下是我的 R 会话和 terra 版本的详细信息:
R version 4.3.2 (2023-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.6 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3
LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3; LAPACK version 3.9.0
locale:
[1] LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=C LC_TIME=fr_FR.UTF-8
[4] LC_COLLATE=fr_FR.UTF-8 LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8
[7] LC_PAPER=fr_FR.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C
time zone: Europe/Paris
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] terra_1.7-71 sf_1.0-15 abind_1.4-5
loaded via a namespace (and not attached):
[1] vctrs_0.6.5 cli_3.6.2 rlang_1.1.3 DBI_1.2.1 processx_3.8.3
[6] KernSmooth_2.23-22 generics_0.1.3 glue_1.7.0 e1071_1.7-14 pkgbuild_1.4.3
[11] ps_1.7.6 fansi_1.0.6 grid_4.3.2 tibble_3.2.1 classInt_0.4-10
[16] lifecycle_1.0.4 compiler_4.3.2 dplyr_1.1.4 codetools_0.2-19 pkgconfig_2.0.3
[21] Rcpp_1.0.12 rstudioapi_0.15.0 R6_2.5.1 tidyselect_1.2.0 utf8_1.2.4
[26] class_7.3-22 parallel_4.3.2 pillar_1.9.0 curl_5.2.0 callr_3.7.3
[31] magrittr_2.0.3 tools_4.3.2 proxy_0.4-27 units_0.8-5 remotes_2.4.2.1
[36] desc_1.4.3
terra::gdal(lib="")
gdal proj geos
"3.4.3" "8.2.0" "3.10.2"
有人知道如何解决这个问题吗?
分类栅格存储整数值(键),例如 1、2、3,以及将这些键与标签(例如“sc”、“ss”)相匹配的表。该消息(大概是警告)告诉您栅格中的某些值未出现在表中。因此这些值无法解释(无法添加到图例中)。您可以通过将这个/这些键添加到类别来解决此问题(请参阅
?terra::levels
)。
这是我认为您所看到的“最小的、独立的、可重现的示例”。
library(terra)
set.seed(0)
r <- rast(nrows=10, ncols=10)
values(r) <- sample(3, ncell(r), replace=TRUE)
levels(r) <- data.frame(id=c(1,3), cover=c("forest", "water"))
plot(r)
#Warning message:
#[plot] unknown categories in raster values
这是因为单元格值“2”没有标签。
levels(r)[[1]]
# id cover
#1 1 forest
#2 3 water
但正如你在上面看到的,“terra”可以处理这个问题。我们可以添加这一点,这可能会解决问题。但你说你有“麻烦”,但你并没有说出它们是什么;所以我想知道这些麻烦是什么,以了解我是否可以解决问题。