Terra 无法正确处理多类别栅格

问题描述 投票:0回答:1

我目前正在使用 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 

enter image description here

但是当我尝试绘制它时,我得到:

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" 

有人知道如何解决这个问题吗?

raster spatial terra
1个回答
0
投票

分类栅格存储整数值(键),例如 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”可以处理这个问题。我们可以添加这一点,这可能会解决问题。但你说你有“麻烦”,但你并没有说出它们是什么;所以我想知道这些麻烦是什么,以了解我是否可以解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.