将“stars”对象保存到 tif 文件时是否可以选择维持因子水平?

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

我在 R 中有一个栅格作为

stars
对象,其属性是一个因子。当我使用
write_stars
将栅格保存到 tif 文件时,因子级别会丢失,并且仅存储整数。我在某处读到我需要的是创建一个栅格属性表。这可以使用
stars
来完成吗?

这是一个表示:

library(stars)
#> Loading required package: abind
#> Loading required package: sf
#> Linking to GEOS 3.11.2, GDAL 3.6.2, PROJ 9.2.0; sf_use_s2() is TRUE

m <- matrix(letters[1:9], nrow = 3, ncol = 3)
dim(m) <- c(x = 3, y = 3) # named dim
s <- st_as_stars(m)

s[["A1"]] <- factor(s[["A1"]])

plot(s)


write_stars(s, "reprex.tif")

创建于 2024-01-31,使用 reprex v2.1.0

这就是 TIF 图例在 QGIS 中的样子:

r geospatial r-stars
1个回答
0
投票

我假设您在与同事分享之前已经

QGIS
测试一下这对他们来说效果如何,但我认为我在评论中让事情看起来比需要的更复杂。您想查看
?terra::coltab
的“颜色表”, 我绕道而过

s_rast = rast(s) 
plot(s_rast)
coltb = data.frame(values=1:9, col = rainbow(9, end = .9))
coltb
  values     col
1      1 #FF0000
2      2 #FFAC00
3      3 #A6FF00
4      4 #00FF06
5      5 #00FFB3
6      6 #009FFF
7      7 #0D00FF
8      8 #B900FF
9      9 #FF0099
has.colors(s_rast)
[1] FALSE
coltab(s_rast) <- coltb
plot(s_rast)
writeRaster(s_rast, 'sof77912406.tif') # this SO ? #
s_rast2 = rast('sof77912406.tif')
has.colors(s_rast2)
[1] TRUE
plot(s_rast2)
s_rast2_stars <- st_as_stars(s_rast2)
plot(s_rast2_stars)

s_rast2_stars
stars object with 2 dimensions and 1 attribute
attribute(s):
 sof77912406.tif 
 a      :1       
 b      :1       
 c      :1       
 d      :1       
 e      :1       
 f      :1       
 (Other):3       
dimension(s):
  from to offset delta         refsys x/y
x    1  3      0     1 WGS 84 (CRS84) [x]
y    1  3      3    -1 WGS 84 (CRS84) [y]

s_rast2
class       : SpatRaster 
dimensions  : 3, 3, 1  (nrow, ncol, nlyr)
resolution  : 1, 1  (x, y)
extent      : 0, 3, 0, 3  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 (CRS84) (OGC:CRS84) 
source      : sof77912406.tif 
color table : 1 
categories  : A1 
name        : A1 
min value   :  a 
max value   :  i

write_stars(s_rast2_stars, 'sof77912406_stars.tif')
s_rast2_stars_2 = read_stars('sof77912406_stars.tif')
plot(s_rast2_stars_2)

对于您的目的来说,这并不令人满意,因为我已经丢失了与星星对象中的绘图颜色相关的因子值...因此,更深入地挖掘星星,但也许允许您测试

中出现的颜色QGIS

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